{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2026-04-06T14:01:22.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2026-04-06T00:00:00.000Z","image_id":null,"published":true,"community_created":false,"status_id":2,"is_default_group_for_player":false,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"description_opc":null,"description_html":null,"published_at":null},"problems":[{"id":58892,"title":"Neural Net: Calculate Perceptron","description":"This challenge is to calculate the Neural Net Perceptron value,P, given X, WH, and WP using ReLU on the hidden layer. This example is for two inputs, two hidden nodes, and a single output. No offset terms are applied.\r\n \r\nThe function template includes the code to create this figure using Matlab Latex","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 626.85px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 313.425px; transform-origin: 407px 313.425px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 375.5px 8px; transform-origin: 375.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis challenge is to calculate the Neural Net Perceptron value,P, given X, WH, and WP using ReLU on the hidden layer. This example is for two inputs, two hidden nodes, and a single output. No offset terms are applied.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 545.85px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 272.925px; text-align: left; transform-origin: 384px 272.925px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/png;base64,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Jye7Xas0912fyqMuPZbZMMJQjys3GXp6UpS9+84+cEkv9FUxARpHyMRlaDABTkpLS3Nyck6cODFr1qwHHnhgxowZDz744DXXXKN2uSAict999ykN4r///e8iMnny5IyMjLZMJPvcc88dP37c9+379++vvHBtss+bN++NN95QXtuHF9o99thjzz77bKv7r6ioaGhoEM9P5dm9e7dobOiHHstsJGGox70/C8qeY+0lARCBmPgHl2m1wZSamioiX331lVMINHCDSe8qKioWL15cWVlZX1+fl5dXXV19zTXXrFmzxpe1kcPL95CVlVVfX69MlWGnl1l8Da9bt26//OUv165d+8orr/zrX/8aMGBATk5OW3Y4d+5ci8Xi+3RBynSU4nLO/PDDD+Pi4pQJilzXFhcX9+3b13WooSvlulur9xd4umynCj2W2UhCXY/bn/ro6TSo9HP27NnTPm8tfOSlJqKyhu4QMnEZGkzG079//3Xr1gW2NnJ4+R6++eabMBcGfpk9e/batWvr6+ubmpqeeOKJNu4tOjq6a9euvm9vMpnMZrPVanUamrho0aJ169ZFRUWZTCabzdbY2Oi49oknnvDxOXvKvJSjR492exOdNu8v0GOZjSQ89Xi3bt3cblxaWlpWViYizMIdAC81EZU1dIeQicvQYAKgL7fccsv1119/9OhR1+F/vjh69OigQYOefPJJ5W6rG264QXmMwbFjx7Kzs0eOHPm3v/3N+x46dOjQ0NBQW1trX5Kbm5uVlaU8Zy8qKqqpqcmxQf/3v/998uTJPj5nr6ioSEQKCwu7d+/uuva7774TP+8veOedd+655x4fN7bLy8vz/TbXoJcZfgl1PW5/6qPrqmPHjt1xxx3R0dH5+fmMSAIiHCETzmgwAdCRNWvWKBM2lpeXHzhwYPDgwX69/brrrps5c+b8+fO3bt2an58fExMTHR2dm5s7Z86cPn36/PKXv2x1D3379t2/f799QHVTU9Pbb7+tnOtEpGvXrk1NTQcPHlR+bGxsXLt2retjM92qqKg4c+aMiOzbty8hIcF1g0mTJq1fv96v1vxtt9127bXX+r69wt791apQlBn+Cmk9rtyQGRMTY/9PrkTWgoKCvLy8adOmLV68ODY21vtOqLsBwyNkwhkNJgB6UVhY+PLLLx89ejQuLq6xsfGVV17xN2R26NDhhRdeWLBgwUsvvTRy5EiLxfLcc899++23mzdv9vEhKN26dROR77//Xvnxqaeemj9/vn3tDTfcUFVVdfbsWeXHpUuX+j6mVxmXGB0d7faEKRf7lPw6Z5rN5pEjR/q+vb9CUWb4K3T1uP2GzOrqascbAq+55pq0tLTnn3/ex6RK3Q0YHiETzmgwAdCF0tLSJUuWbN269corr5w5c+Zf/vKX119/fdmyZUp3jV9iYmLmzp1rtVqffvppm8326quv+t6cVW6BU86Kx48f//zzz5988kn7WuV5Ekqv0fHjx48fP+77KUtp96enp7tde+DAAWW3mpqGSo9lNp5Q1+MWi2XdunWtPunEC+puwPB4hAmcuTaYHC/nR1qDCYA2HTp0aNasWRs2bOjSpYuIPPDAAyJitVpfffVVf3dVV1e3cOHCuLi4c+fO3XbbbY8//vjUqVNvueUWe8+Pdz/72c/k4llx/vz5zzzzjOPaK664Qi6eUR999NFly5b5XjClAJ6eRrhv3z7R3s2Neiyz8YSuHrffkNmWhAkgEtCTCWd+NZief/553/dM4wNAUJw8eXLatGkFBQVKj42I9O7dOzk5edeuXStXrvTrgelHjhy58cYbO3Xq9P7776ekpIwbN+6qq646fPjwzJkzx4wZM3v27Jdeesn7Hjp27CgilZWVxcXF8fHxTlNuKg36urq63bt3DxgwoEePHr4XTLm/wNMDn7w/q9CT0tLSF1980a+3iMhDDz3kS9duiMoMf4WuHld+g8OHDw9iaQEYEiETzmgwAdCympqazMzM/Pz8+Ph4x+WPPPLIrl27Kisri4qKfD+T9O7d+/e///2sWbNiYmJE5LPPPmtubo6Ojn777bczMjJ8uW1s0KBBInL69OklS5asX7/eaW3fvn1F5PPPP1+yZImPs3cq9uzZI17vL1Ae+OTvOTM+Pj4jI8Ovtyjv8mWzEJUZ/gpRPW6/IbPtI12puwHDI2TCGQ0mAJp18uTJ5OTk1atX2584b5eZmRkfH19VVfXcc8/5fiaxWCyON6TV1tY2NDQor6dOnerLHpShiQ0NDdnZ2a63gyp9rWfOnJk6daqPc6IovN9fYH/gk7/3F8THx//617/26y2+C1GZ4a8Q1ePKDZlms7ntv0HqbsDwCJlwRoMpMMePH9+7d6/Twj59+iQmJopIZWVlaWmpp7UiUlFR8fHHHzuuTU1NjYuLc1xy6NChw4cPux561KhRPXr0sNlsb731luvaq6++OoC6PET4lhCwU6dOvfnmm08//bTVah04cKDrBg0NDT//+c+rqqoKCwt3797taWS+d1FRUVar1a+3KGfC/v37z5o1y3Wt0muUkJAwffp03/dZU1Ozfft2Ebnhhhtc19pstjfffFNEzGZznz59/Cpt6OixzEYVono8iDdkaqfulrBUTEeOHDlw4ICnAphMpquuuiotLc1splkO4+B/M5zRYArM119/XVZWtnPnzmPHjolIcnJy37597feXVldXl5WVFRUVKXPKK2sdP2x1dXVRUdG6deuam5sTEhKSkpLGjh3rdIh///vfBw8erKury8vLE5F+/foNHz78uuuuU+p7q9VaXV1dVVW1bdu2L7/80mQyTZkypWvXrq77URHfEgJQWlo6atQox+zXqVOnPXv2OF6TmjFjxuuvv26z2UTEZrMlJycrv1y31xS8qK+v97cBbbFYROSFF15wu1Zp7v/1r3/1cW/du3evq6uzf9jFixf/8Y9/jImJOX36tIi89NJLc+fObWlpUdZardb27dubzeY333zzjjvu8KvYQaTHMhtbKOrxuro65WKx8boTw1AxffPNN59++ml9ff3rr78uIsOGDcvIyFAmLTtx4kRNTU1hYeH3338/b968BQsWhOdTAyF3HpHEl9/7Bx98ICI7duxwu3br1q0iUlJS4uMRY2Njna7Mmc3m2NhYZe2LL76otM/sTCaTxWJZu3atX58rpJSPvHXrVl82VtKyyWRyu1apXSwWi6e3T5s27cEHH/R+iE8++UT5rj777DO3G9x2220icvvtt/tSYFVE1LckIq2WFrpWXV399NNPe1r71VdfLVu2LJzlAYJbj/fu3du1Hr/yyiuDV96Q8KvuPh+Wiumrr75SvsAvvvjCadXZs2eVGStmz57tY4F9RzVE6lEFM1DD2YABA55++mlPTyEfMGDAsmXLfB/Uevr06R9++MHx/9wPP/ygXN4WkTlz5pw7d85x7Y8//nju3Dn9Xt5WrhDbbDa3I+6UtfYr+k4aGxtPnz7d6lSWyt2tnTt37tevn9sNtD+1Bt8SjCQuLu4Pf/iDp7Xx8fF+zXYLtF1w6/EvvvjCtR7/z3/+8//bu9vYKsv7D+CXtZaK9W8GAQZNNS6OJqN0ErZExwKyzW5hCwm4wURg82Fkk7q9QJ10ZiI43DKjKBqnbBVhPElChgbmHDhkWlwkc5u1uFobsvIwVslYVwtKV/8v7njSnD4dytWHUz6fV+ec6/Tu1YuHX7/nvn/3FW++g0I/FKakqbWwsDDtVkzJ8cvLy0MIjz766OHDh898+jDoCJmk8wvT2UjqUAghaTFNU1NTkzxI7iyfZsWKFRUVFT1eqpfchreryztT3a3Tpk3LeNb9zSoB9B11vBf6oTAlTa1dtYunThenrsSBrCZkQkwjRoxIHnRs8W9oaKisrEweHzx4MG20vr6+tra2qw+e20u6W6dPn97paPJB6SDfbtQqATCo9ENh6n6rtlSOTc0EspqQCTGltlXo+GHn0qVL165dmzxONWak3HHHHT//+c97PH51dXWyv0JX243u2bMnDPqrQK0SAINKXxem1C6jXV2onJznvPzyy1P3rYWsJmRCTMmdJEOHKvXqq68WFhamdpFOG927d29xcXHHJo2OklNwPbYadnUGb5CwSgAMKv1TmMaMGdPpm6uqqvbt2xdCePLJJ3s1fRh0bGECMeXk5OTm5ra2tqY1ddxzzz1bt27Nz8/Pyclpa2trbm5uP7ps2bIMd8RO7iD/pS99qdPbD2RLq6FVAmBQ6evClNpltONQbW3tnDlzCgoKNm3a5BIbhgwhEyIbPnx4U1PTsWPHUq9UVlbOnDkz2RE7Pz+/paWl/UehTzzxxNy5czPcEXvXrl0hhOeff37cuHEdR//73/+GLGk1tEoADCp9WpiShsxRo0YlFSqEkETWnTt3btiwYcGCBffee+/YsWNj/jwwoIRMiKy4uPi1115Ldm0OIbS0tGzcuDFVVEaOHNnS0vL6668nT5ubm7ds2ZKceetRdXX1iRMnQgivvPJKaWlpxzdcd91127Zt6/g56LFjxx5//PG6urpLL7103rx5qc6T9mpra3fv3v29730vs5/ybGXXKmWygABktb4rTKmGzEOHDm3evDn1+ujRo8vKylatWpVKqj2Wm34u1tBrejIhsjFjxoQQTp48mTxduXJlRUVFanTChAkhhPfeey95umLFimXLlmV45KSjo6CgoNPsFD66GictPtXU1CxduvQ73/nOunXrPvGJT0ycOPGxxx5LjTY0NPz0pz9duHDhpEmTkoaQ/pFFq9T9AgIwNPR1YcrLy9u6desv21m5cmVyoWzytm7KzUAVa+g1IRMiS24ekNSh+vr6AwcOtO/BSHbiSq63qa+vr6+vnzp1aoZHTj4x/cpXvtLp6P79+5PDpt25rry8fMWKFYWFhTk5Obfccsutt95aXl5eXV2dmu3Xvva1tWvXXnjhhWf4g56VLFql7hcQgKGh7wpTqiGz+700uyk3A1WsodeETIjsoosuCh/VoYqKip/97GftR5PykNSwJUuWPPDAA5kfOblop6t9nF955ZXQWavhSy+99OlPfzr19Nprrw0h/OY3v0mejho1qqSkpMctpKPLolXqfgEBGBr6rjAlDZlTpkzp/m3dlJuBKtbQa3oyIbKLL744hFBXV7d3796ioqK0m5UnH4U2Njbu2bNn4sSJl112WYaHrampSVoNu9r7satdnm+88caOZamtrS3D79tHsmiVBucCAhBXHxWmVENmj2c+lRuGEiETIps0aVII4ciRI8uXL9+2bVvaaHFxcQjhwIEDy5cvz/C+54mXXnopdNtqmOz92DE+/fKXv2z/dP/+/SGEGTNmZP6t+0IWrdLgXEAA4uqjwpQ0ZObm5qa1aXSk3DCUCJkQWdLU0dTUNGvWrOS+5+0l9xU4ceLE/PnzM7zveaL7VsPU3o/d17CmpqZf/OIXN95442c+85nMv3VfyNJVGjwLeK5Zt25dxxenTZuWdjLh6NGjv//979u/Mn78+KuuuiruZOrr619++eW0F1PfqK6urqqqqqvREEJ1dfWf//zn9qNf/OIXCwsLU09ramqSXy47lZOTM2LEiLKystzcga/gWTRV6FEfFaYMGzLTKDdkO//vQ2RJ7SkpKVm8eHHH0eR6m9LS0ptuuinzYx49evSFF14IH93dLk1bW9v69etDCLm5uePHj+/mON/97nenTJny5JNPZv6t+0iWrtLgWcDxYt3aAAANLElEQVRzSmtra21t7T//+c9nn322sbExhFBWVlZSUjJt2rS0d548efLFF198+umnQwilpaWf/exn0y54i+Jf//rXvn37Xnzxxdra2hDC9OnTi4uLU12+hw4d2rdv365du5KNEJLR9n/lDh06tGvXrq1bt546daq0tPSaa6758pe/3P7477777htvvHH8+PGnnnoqhHD11VfPmDHjYx/7WAjh4MGDR48eff7550+ePLl06dK77747+k93RrJoqtCjvihMjY2NyaefRUVFZzQZ5Yas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6XKcMmXKmfw0AyOLpsq55pyt3coQg4SQCUCWqaqqCiGczYWgNTU1kydPvuSSS7Zv3/6FL3zhq1/96ogRI/72t78tWrTo2muvLS8vX716dY8Hufjii0MIdXV1e/fuLSoqStvDIzmT2djYuGfPnokTJ1522WWZTCzV5RjlMteqqqpHHnnkTL/q+9//fiZndONOFYChRMgEIJu0trYmrYCf//zne32QK6644oc//OHixYtHjRoVQnjzzTdPnTpVUFCwcePGGTNmZHiznEmTJoUQjhw5snz58m3btqWNFhcXhxAOHDiwfPnyZ599NsOJJT9abm7u2fx0KUVFRTNmzOjFV2XytrhTBWAoETIByCZ79uxpbW3Nzc295ppren2QvLy89rfhOXbsWFNTU/I48z7PpCezqalp1qxZybYl7SW3BTpx4sT8+fMz7wSL2+VYVFS0cOHCsz9OpzRkAtAVhQGArNHW1rZx48YQwuTJkyNmm/z8/NbW1jP9qiQ6lpSUdNoBlVwuW1paetNNN2V4wMbGxmSPk15sytLPsmiqAPQ/IROALFBRUTFs2LDzzz//qaeeCiH86U9/Ov/884cNG5bce+YsHT9+PPMomJKXlxdCePjhhzsdTc5zPvbYY5kc6pOf/OQFF1wwevToo0ePhhB+9atfXXDBBZdccsmZTqkfZNFUARgo53344YcDPQf6z3nnnZc88OcOcJYOHz68fv36u+66q9PRhoaGZ555ZsmSJf08KwDa89vvgBAyzy3+mQEAcO7w2++AcLksAAAA0QiZAAAARCNkAgAAEI2QCQAAQDRCJgAAANEImQAAAEQjZAIAABCNkAkAAEA0QiYAAADRCJkAAABEI2QCAAAQjZAJAABANEImAAAA0QiZAAAARCNkAgAAEI2QCQAAQDRCJgAAANEImQAAAEQjZAIAABCNkAkAAEA0QiYAAADRCJkAAABEI2QCAAAQjZAJAABANEImAAAA0eQO9AQYGOedd95ATwEAABiCnMk8t3z44YcDPQUAAGAoO0/qAAAAIBZnMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiOb/ATR5Wtu1QDvSAAAAAElFTkSuQmCC\" data-image-state=\"image-loaded\"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250px 8px; transform-origin: 250px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function template includes the code to create this figure using Matlab Latex\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function P=Calc_Perceptron(X,WH,WP)\r\n%The P value in this case is a single value\r\n%No ReLU,Softmax, or Sigmoid applied to the output P\r\n  P=0;\r\nend\r\n\r\n%The figure was generated using Matlab and Latex\r\n%{\r\nfunction perceptron\r\n% put figure code into cody\r\nfigure(1);clf;\r\nplot([0;140;140;0;0],[-5;-5;100;100;-5],'k','linewidth',2);hold on\r\nxticks([]);yticks([]); %Tciks/Labels off\r\n\r\naxis equal;\r\naxis tight\r\n\r\n\r\nr = 10;\r\nphi = 0:0.01:2*pi;\r\ncxA = r*cos(phi);\r\ncyA = r*sin(phi);\r\n\r\nrxA=[0 2*r 2*r   0 0]';\r\nryA=[0   0 2*r 2*r 0]';\r\n\r\npatch(cxA+10,cyA+80,'y');text(10-2,80,'X_{1}','Fontsize',20);\r\npatch(cxA+10,cyA+20,'y');text(10-2,20,'X_{2}','Fontsize',20);\r\n\r\npatch(cxA+80,cyA+80,'y');text(80-6,94,'H_{1}','Fontsize',20);text(80-8,80,'\\Sigma','Fontsize',30);\r\npatch(cxA+80,cyA+20,'y');text(80-6,34,'H_{2}','Fontsize',20);text(80-8,20,'\\Sigma','Fontsize',30);\r\n\r\npatch(cxA+130,cyA+50,'y');text(130-2,50,'P','Fontsize',20);\r\n\r\npatch(rxA+80,ryA+70,'y');text(85,80,'ReLU','Fontsize',20);text(102,88,'Y_{1}','Fontsize',20);\r\npatch(rxA+80,ryA+10,'y');text(85,20,'ReLU','Fontsize',20);text(102,32,'Y_{2}','Fontsize',20);\r\n\r\nquiver(20,20,55,0,'k','LineWidth',3.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\nquiver(20,80,55,0,'k','LineWidth',3.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\nquiver(20,20,58.5,58.5,'k','LineWidth',3.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\nquiver(20,80,58.5,-58.5,'k','LineWidth',3.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\n\r\nquiver(100,20,25,25,'k','LineWidth',3.5,'MaxHeadSize',.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\nquiver(100,80,25,-25,'k','LineWidth',3.5,'MaxHeadSize',.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\n\r\ntext(40,85,'WH_{11}','Fontsize',20);\r\ntext(20,65,'WH_{12}','Fontsize',20);\r\ntext(40,25,'WH_{22}','Fontsize',20);\r\ntext(20,38,'WH_{21}','Fontsize',20);\r\n\r\ntext(115,68,'WP_{11}','Fontsize',20);\r\ntext(115,28,'WP_{21}','Fontsize',20);\r\n\r\nstr='$$ X=\\left[\\matrix{ X_{1} \u0026 X_{2}} \\right]  $$'; %valid\r\ntext(1,50,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ WH=\\left[\\matrix{ WH_{11} \u0026 WH_{12}\\cr WH_{21} \u0026 WH_{22} } \\right]  $$'; %valid\r\ntext(1,5,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ H=\\left[\\matrix{ H_{1} \u0026 H_{2}} \\right]  $$'; %valid\r\ntext(75,65,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ ReLU(H)=Y  $$'; %valid\r\ntext(75,58,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ Y=\\left[\\matrix{ Y_{1} \u0026 Y_{2}} \\right]  $$'; %valid\r\ntext(75,51,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ X*WH=H  $$'; %valid\r\ntext(60,5,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ Y*WP=P  $$'; %valid\r\ntext(60,0,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ WP=\\left[\\matrix{ WP_{11}\\cr WP_{21} } \\right]  $$'; %valid\r\ntext(100,5,str,'Interpreter','latex','Fontsize',20);\r\n\r\n\r\n\r\nend % Perceptron \r\n%}\r\n","test_suite":"%%\r\nX=[1 2]; WH=[1 2;3 4];WP=[.5; -1];\r\nP=Calc_Perceptron(X,WH,WP);\r\nPexp=-6.5;\r\nvalid=isequal(P,Pexp);\r\nassert(valid)\r\n%%\r\nX=[3 1.5]; WH=[1 -3;3 4];WP=[1; 2];\r\nP=Calc_Perceptron(X,WH,WP);\r\nPexp=7.5;\r\nvalid=isequal(P,Pexp);\r\nassert(valid)\r\n%%\r\nX=[-.5 .5]; WH=[4 2;1 4];WP=[.1; .4];\r\nP=Calc_Perceptron(X,WH,WP);\r\nPexp=0.4;\r\nvalid=isequal(P,Pexp);\r\nassert(valid)\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":3097,"edited_at":"2023-08-20T22:48:06.000Z","deleted_by":null,"deleted_at":null,"solvers_count":13,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2023-08-20T22:16:25.000Z","updated_at":"2026-03-30T12:52:26.000Z","published_at":"2023-08-20T22:48:07.000Z","restored_at":null,"restored_by":null,"spam":null,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis challenge is to calculate the Neural Net Perceptron value,P, given X, WH, and WP using ReLU on the hidden layer. This example is for two inputs, two hidden nodes, and a single output. No offset terms are applied.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"864\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"1228\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"baseline\\\"/\u003e\u003cw:attr w:name=\\\"altText\\\" w:val=\\\"\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId1\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function template includes the code to create this figure using Matlab Latex\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.png\",\"relationshipId\":\"rId1\"}]},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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Jye7Xas0912fyqMuPZbZMMJQjys3GXp6UpS9+84+cEkv9FUxARpHyMRlaDABTkpLS3Nyck6cODFr1qwHHnhgxowZDz744DXXXKN2uSAict999ykN4r///e8iMnny5IyMjLZMJPvcc88dP37c9+379++vvHBtss+bN++NN95QXtuHF9o99thjzz77bKv7r6ioaGhoEM9P5dm9e7dobOiHHstsJGGox70/C8qeY+0lARCBmPgHl2m1wZSamioiX331lVMINHCDSe8qKioWL15cWVlZX1+fl5dXXV19zTXXrFmzxpe1kcPL95CVlVVfX69MlWGnl1l8Da9bt26//OUv165d+8orr/zrX/8aMGBATk5OW3Y4d+5ci8Xi+3RBynSU4nLO/PDDD+Pi4pQJilzXFhcX9+3b13WooSvlulur9xd4umynCj2W2UhCXY/bn/ro6TSo9HP27NnTPm8tfOSlJqKyhu4QMnEZGkzG079//3Xr1gW2NnJ4+R6++eabMBcGfpk9e/batWvr6+ubmpqeeOKJNu4tOjq6a9euvm9vMpnMZrPVanUamrho0aJ169ZFRUWZTCabzdbY2Oi49oknnvDxOXvKvJSjR492exOdNu8v0GOZjSQ89Xi3bt3cblxaWlpWViYizMIdAC81EZU1dIeQicvQYAKgL7fccsv1119/9OhR1+F/vjh69OigQYOefPJJ5W6rG264QXmMwbFjx7Kzs0eOHPm3v/3N+x46dOjQ0NBQW1trX5Kbm5uVlaU8Zy8qKqqpqcmxQf/3v/998uTJPj5nr6ioSEQKCwu7d+/uuva7774TP+8veOedd+655x4fN7bLy8vz/TbXoJcZfgl1PW5/6qPrqmPHjt1xxx3R0dH5+fmMSAIiHCETzmgwAdCRNWvWKBM2lpeXHzhwYPDgwX69/brrrps5c+b8+fO3bt2an58fExMTHR2dm5s7Z86cPn36/PKXv2x1D3379t2/f799QHVTU9Pbb7+tnOtEpGvXrk1NTQcPHlR+bGxsXLt2retjM92qqKg4c+aMiOzbty8hIcF1g0mTJq1fv96v1vxtt9127bXX+r69wt791apQlBn+Cmk9rtyQGRMTY/9PrkTWgoKCvLy8adOmLV68ODY21vtOqLsBwyNkwhkNJgB6UVhY+PLLLx89ejQuLq6xsfGVV17xN2R26NDhhRdeWLBgwUsvvTRy5EiLxfLcc899++23mzdv9vEhKN26dROR77//Xvnxqaeemj9/vn3tDTfcUFVVdfbsWeXHpUuX+j6mVxmXGB0d7faEKRf7lPw6Z5rN5pEjR/q+vb9CUWb4K3T1uP2GzOrqascbAq+55pq0tLTnn3/ex6RK3Q0YHiETzmgwAdCF0tLSJUuWbN269corr5w5c+Zf/vKX119/fdmyZUp3jV9iYmLmzp1rtVqffvppm8326quv+t6cVW6BU86Kx48f//zzz5988kn7WuV5Ekqv0fHjx48fP+77KUtp96enp7tde+DAAWW3mpqGSo9lNp5Q1+MWi2XdunWtPunEC+puwPB4hAmcuTaYHC/nR1qDCYA2HTp0aNasWRs2bOjSpYuIPPDAAyJitVpfffVVf3dVV1e3cOHCuLi4c+fO3XbbbY8//vjUqVNvueUWe8+Pdz/72c/k4llx/vz5zzzzjOPaK664Qi6eUR999NFly5b5XjClAJ6eRrhv3z7R3s2Neiyz8YSuHrffkNmWhAkgEtCTCWd+NZief/553/dM4wNAUJw8eXLatGkFBQVKj42I9O7dOzk5edeuXStXrvTrgelHjhy58cYbO3Xq9P7776ekpIwbN+6qq646fPjwzJkzx4wZM3v27Jdeesn7Hjp27CgilZWVxcXF8fHxTlNuKg36urq63bt3DxgwoEePHr4XTLm/wNMDn7w/q9CT0tLSF1980a+3iMhDDz3kS9duiMoMf4WuHld+g8OHDw9iaQEYEiETzmgwAdCympqazMzM/Pz8+Ph4x+WPPPLIrl27Kisri4qKfD+T9O7d+/e///2sWbNiYmJE5LPPPmtubo6Ojn777bczMjJ8uW1s0KBBInL69OklS5asX7/eaW3fvn1F5PPPP1+yZImPs3cq9uzZI17vL1Ae+OTvOTM+Pj4jI8Ovtyjv8mWzEJUZ/gpRPW6/IbPtI12puwHDI2TCGQ0mAJp18uTJ5OTk1atX2584b5eZmRkfH19VVfXcc8/5fiaxWCyON6TV1tY2NDQor6dOnerLHpShiQ0NDdnZ2a63gyp9rWfOnJk6daqPc6IovN9fYH/gk7/3F8THx//617/26y2+C1GZ4a8Q1ePKDZlms7ntv0HqbsDwCJlwRoMpMMePH9+7d6/Twj59+iQmJopIZWVlaWmpp7UiUlFR8fHHHzuuTU1NjYuLc1xy6NChw4cPux561KhRPXr0sNlsb731luvaq6++OoC6PET4lhCwU6dOvfnmm08//bTVah04cKDrBg0NDT//+c+rqqoKCwt3797taWS+d1FRUVar1a+3KGfC/v37z5o1y3Wt0muUkJAwffp03/dZU1Ozfft2Ebnhhhtc19pstjfffFNEzGZznz59/Cpt6OixzEYVono8iDdkaqfulrBUTEeOHDlw4ICnAphMpquuuiotLc1splkO4+B/M5zRYArM119/XVZWtnPnzmPHjolIcnJy37597feXVldXl5WVFRUVKXPKK2sdP2x1dXVRUdG6deuam5sTEhKSkpLGjh3rdIh///vfBw8erKury8vLE5F+/foNHz78uuuuU+p7q9VaXV1dVVW1bdu2L7/80mQyTZkypWvXrq77URHfEgJQWlo6atQox+zXqVOnPXv2OF6TmjFjxuuvv26z2UTEZrMlJycrv1y31xS8qK+v97cBbbFYROSFF15wu1Zp7v/1r3/1cW/du3evq6uzf9jFixf/8Y9/jImJOX36tIi89NJLc+fObWlpUdZardb27dubzeY333zzjjvu8KvYQaTHMhtbKOrxuro65WKx8boTw1AxffPNN59++ml9ff3rr78uIsOGDcvIyFAmLTtx4kRNTU1hYeH3338/b968BQsWhOdTAyF3HpHEl9/7Bx98ICI7duxwu3br1q0iUlJS4uMRY2Njna7Mmc3m2NhYZe2LL76otM/sTCaTxWJZu3atX58rpJSPvHXrVl82VtKyyWRyu1apXSwWi6e3T5s27cEHH/R+iE8++UT5rj777DO3G9x2220icvvtt/tSYFVE1LckIq2WFrpWXV399NNPe1r71VdfLVu2LJzlAYJbj/fu3du1Hr/yyiuDV96Q8KvuPh+Wiumrr75SvsAvvvjCadXZs2eVGStmz57tY4F9RzVE6lEFM1DD2YABA55++mlPTyEfMGDAsmXLfB/Uevr06R9++MHx/9wPP/ygXN4WkTlz5pw7d85x7Y8//nju3Dn9Xt5WrhDbbDa3I+6UtfYr+k4aGxtPnz7d6lSWyt2tnTt37tevn9sNtD+1Bt8SjCQuLu4Pf/iDp7Xx8fF+zXYLtF1w6/EvvvjCtR7/z3/+8//bu9vYKsv7D+CXtZaK9W8GAQZNNS6OJqN0ErZExwKyzW5hCwm4wURg82Fkk7q9QJ10ZiI43DKjKBqnbBVhPElChgbmHDhkWlwkc5u1uFobsvIwVslYVwtKV/8v7njSnD4dytWHUz6fV+ec6/Tu1YuHX7/nvn/3FW++g0I/FKakqbWwsDDtVkzJ8cvLy0MIjz766OHDh898+jDoCJmk8wvT2UjqUAghaTFNU1NTkzxI7iyfZsWKFRUVFT1eqpfchreryztT3a3Tpk3LeNb9zSoB9B11vBf6oTAlTa1dtYunThenrsSBrCZkQkwjRoxIHnRs8W9oaKisrEweHzx4MG20vr6+tra2qw+e20u6W6dPn97paPJB6SDfbtQqATCo9ENh6n6rtlSOTc0EspqQCTGltlXo+GHn0qVL165dmzxONWak3HHHHT//+c97PH51dXWyv0JX243u2bMnDPqrQK0SAINKXxem1C6jXV2onJznvPzyy1P3rYWsJmRCTMmdJEOHKvXqq68WFhamdpFOG927d29xcXHHJo2OklNwPbYadnUGb5CwSgAMKv1TmMaMGdPpm6uqqvbt2xdCePLJJ3s1fRh0bGECMeXk5OTm5ra2tqY1ddxzzz1bt27Nz8/Pyclpa2trbm5uP7ps2bIMd8RO7iD/pS99qdPbD2RLq6FVAmBQ6evClNpltONQbW3tnDlzCgoKNm3a5BIbhgwhEyIbPnx4U1PTsWPHUq9UVlbOnDkz2RE7Pz+/paWl/UehTzzxxNy5czPcEXvXrl0hhOeff37cuHEdR//73/+GLGk1tEoADCp9WpiShsxRo0YlFSqEkETWnTt3btiwYcGCBffee+/YsWNj/jwwoIRMiKy4uPi1115Ldm0OIbS0tGzcuDFVVEaOHNnS0vL6668nT5ubm7ds2ZKceetRdXX1iRMnQgivvPJKaWlpxzdcd91127Zt6/g56LFjxx5//PG6urpLL7103rx5qc6T9mpra3fv3v29730vs5/ybGXXKmWygABktb4rTKmGzEOHDm3evDn1+ujRo8vKylatWpVKqj2Wm34u1tBrejIhsjFjxoQQTp48mTxduXJlRUVFanTChAkhhPfeey95umLFimXLlmV45KSjo6CgoNPsFD66GictPtXU1CxduvQ73/nOunXrPvGJT0ycOPGxxx5LjTY0NPz0pz9duHDhpEmTkoaQ/pFFq9T9AgIwNPR1YcrLy9u6desv21m5cmVyoWzytm7KzUAVa+g1IRMiS24ekNSh+vr6AwcOtO/BSHbiSq63qa+vr6+vnzp1aoZHTj4x/cpXvtLp6P79+5PDpt25rry8fMWKFYWFhTk5Obfccsutt95aXl5eXV2dmu3Xvva1tWvXXnjhhWf4g56VLFql7hcQgKGh7wpTqiGz+700uyk3A1WsodeETIjsoosuCh/VoYqKip/97GftR5PykNSwJUuWPPDAA5kfOblop6t9nF955ZXQWavhSy+99OlPfzr19Nprrw0h/OY3v0mejho1qqSkpMctpKPLolXqfgEBGBr6rjAlDZlTpkzp/m3dlJuBKtbQa3oyIbKLL744hFBXV7d3796ioqK0m5UnH4U2Njbu2bNn4sSJl112WYaHrampSVoNu9r7satdnm+88caOZamtrS3D79tHsmiVBucCAhBXHxWmVENmj2c+lRuGEiETIps0aVII4ciRI8uXL9+2bVvaaHFxcQjhwIEDy5cvz/C+54mXXnopdNtqmOz92DE+/fKXv2z/dP/+/SGEGTNmZP6t+0IWrdLgXEAA4uqjwpQ0ZObm5qa1aXSk3DCUCJkQWdLU0dTUNGvWrOS+5+0l9xU4ceLE/PnzM7zveaL7VsPU3o/d17CmpqZf/OIXN95442c+85nMv3VfyNJVGjwLeK5Zt25dxxenTZuWdjLh6NGjv//979u/Mn78+KuuuiruZOrr619++eW0F1PfqK6urqqqqqvREEJ1dfWf//zn9qNf/OIXCwsLU09ramqSXy47lZOTM2LEiLKystzcga/gWTRV6FEfFaYMGzLTKDdkO//vQ2RJ7SkpKVm8eHHH0eR6m9LS0ptuuinzYx49evSFF14IH93dLk1bW9v69etDCLm5uePHj+/mON/97nenTJny5JNPZv6t+0iWrtLgWcDxYt3aAAANLElEQVRzSmtra21t7T//+c9nn322sbExhFBWVlZSUjJt2rS0d548efLFF198+umnQwilpaWf/exn0y54i+Jf//rXvn37Xnzxxdra2hDC9OnTi4uLU12+hw4d2rdv365du5KNEJLR9n/lDh06tGvXrq1bt546daq0tPSaa6758pe/3P7477777htvvHH8+PGnnnoqhHD11VfPmDHjYx/7WAjh4MGDR48eff7550+ePLl06dK77747+k93RrJoqtCjvihMjY2NyaefRUVFZzQZ5Yas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6XKcMmXKmfw0AyOLpsq55pyt3coQg4SQCUCWqaqqCiGczYWgNTU1kydPvuSSS7Zv3/6FL3zhq1/96ogRI/72t78tWrTo2muvLS8vX716dY8Hufjii0MIdXV1e/fuLSoqStvDIzmT2djYuGfPnokTJ1522WWZTCzV5RjlMteqqqpHHnnkTL/q+9//fiZndONOFYChRMgEIJu0trYmrYCf//zne32QK6644oc//OHixYtHjRoVQnjzzTdPnTpVUFCwcePGGTNmZHiznEmTJoUQjhw5snz58m3btqWNFhcXhxAOHDiwfPnyZ599NsOJJT9abm7u2fx0KUVFRTNmzOjFV2XytrhTBWAoETIByCZ79uxpbW3Nzc295ppren2QvLy89rfhOXbsWFNTU/I48z7PpCezqalp1qxZybYl7SW3BTpx4sT8+fMz7wSL2+VYVFS0cOHCsz9OpzRkAtAVhQGArNHW1rZx48YQwuTJkyNmm/z8/NbW1jP9qiQ6lpSUdNoBlVwuW1paetNNN2V4wMbGxmSPk15sytLPsmiqAPQ/IROALFBRUTFs2LDzzz//qaeeCiH86U9/Ov/884cNG5bce+YsHT9+PPMomJKXlxdCePjhhzsdTc5zPvbYY5kc6pOf/OQFF1wwevToo0ePhhB+9atfXXDBBZdccsmZTqkfZNFUARgo53344YcDPQf6z3nnnZc88OcOcJYOHz68fv36u+66q9PRhoaGZ555ZsmSJf08KwDa89vvgBAyzy3+mQEAcO7w2++AcLksAAAA0QiZAAAARCNkAgAAEI2QCQAAQDRCJgAAANEImQAAAEQjZAIAABCNkAkAAEA0QiYAAADRCJkAAABEI2QCAAAQjZAJAABANEImAAAA0QiZAAAARCNkAgAAEI2QCQAAQDRCJgAAANEImQAAAEQjZAIAABCNkAkAAEA0QiYAAADRCJkAAABEI2QCAAAQjZAJAABANEImAAAA0eQO9AQYGOedd95ATwEAABiCnMk8t3z44YcDPQUAAGAoO0/qAAAAIBZnMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiOb/ATR5Wtu1QDvSAAAAAElFTkSuQmCC\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":43078,"title":"How many bottles can you drink?","description":"Sometimes if you buy a drink in a glass bottle you can return that bottle and get some money back.\r\n\r\nLet's assume we have \"x\" amount of money, the drink cost \"p\" per bottle, and we get \"c\" back money for each bottle.\r\n\r\nIf we have enough time, how much can we buy drinks for \"x\" money?\r\n\r\nExample\r\n\r\nWe have $10, drink costs $1, for each bottle we return we get $0.35\r\n\r\n Step I: \r\n We buy 10 drinks\r\n We get $3.50 back for bottles\r\n \r\n Step II: \r\n We buy 3 drinks and we are left with $0.50\r\n We get back $1.05 back so we have $1.55\r\n\r\n Step III:\r\n We buy 1 drink and we have $0.55\r\n We get $0.35 for bottle, so we have $0.90 and we can't buy another drink for that.\r\n\r\nSummary for $10 we were able to drink 14 bottles.","description_html":"\u003cp\u003eSometimes if you buy a drink in a glass bottle you can return that bottle and get some money back.\u003c/p\u003e\u003cp\u003eLet's assume we have \"x\" amount of money, the drink cost \"p\" per bottle, and we get \"c\" back money for each bottle.\u003c/p\u003e\u003cp\u003eIf we have enough time, how much can we buy drinks for \"x\" money?\u003c/p\u003e\u003cp\u003eExample\u003c/p\u003e\u003cp\u003eWe have $10, drink costs $1, for each bottle we return we get $0.35\u003c/p\u003e\u003cpre\u003e Step I: \r\n We buy 10 drinks\r\n We get $3.50 back for bottles\u003c/pre\u003e\u003cpre\u003e Step II: \r\n We buy 3 drinks and we are left with $0.50\r\n We get back $1.05 back so we have $1.55\u003c/pre\u003e\u003cpre\u003e Step III:\r\n We buy 1 drink and we have $0.55\r\n We get $0.35 for bottle, so we have $0.90 and we can't buy another drink for that.\u003c/pre\u003e\u003cp\u003eSummary for $10 we were able to drink 14 bottles.\u003c/p\u003e","function_template":"function y = bottle(x,p,c)\r\n  y = x;\r\nend","test_suite":"%%\r\nx = 10;\r\np=1;\r\nc=0.35;\r\ny_correct = 14;\r\nassert(isequal(bottle(x,p,c),y_correct))\r\n\r\n%%\r\nx = 20;\r\np=1.5;\r\nc=0.4;\r\ny_correct = 17;\r\nassert(isequal(bottle(x,p,c),y_correct))","published":true,"deleted":false,"likes_count":13,"comments_count":1,"created_by":90955,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":80,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-05T21:45:06.000Z","updated_at":"2026-02-06T20:05:06.000Z","published_at":"2016-10-05T21:45:06.000Z","restored_at":"2017-09-28T06:15:07.000Z","restored_by":null,"spam":false,"simulink":false,"admin_reviewed":true,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSometimes if you buy a drink in a glass bottle you can return that bottle and get some money back.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eLet's assume we have \\\"x\\\" amount of money, the drink cost \\\"p\\\" per bottle, and we get \\\"c\\\" back money for each bottle.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf we have enough time, how much can we buy drinks for \\\"x\\\" money?\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWe have $10, drink costs $1, for each bottle we return we get $0.35\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ Step I: \\n We buy 10 drinks\\n We get $3.50 back for bottles\\n\\n Step II: \\n We buy 3 drinks and we are left with $0.50\\n We get back $1.05 back so we have $1.55\\n\\n Step III:\\n We buy 1 drink and we have $0.55\\n We get $0.35 for bottle, so we have $0.90 and we can't buy another drink for that.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSummary for $10 we were able to drink 14 bottles.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1975,"title":"Kaggle: Reverse Game of Life - Zoo of Stills and Oscillators","description":"\u003chttp://www.kaggle.com/c/conway-s-reverse-game-of-life Kaggle's Conway's Reverse Game of Life\u003e contest inspires this Reverse Life Zoo challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003chttp://mathworld.wolfram.com/GameofLife.html Game of Life at Wolfram\u003e. \u003chttp://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Wiki Life\u003e.\r\n\r\n\r\n  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n  2. Any live cell with two or three live neighbors lives on to the next generation.\r\n  3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\r\n\r\n\r\nDetermine the Zoo of life at its previous Snapshot. The output must evolve to the given Zoo Snapshot.  It is a Zoo since all animals are in their private enclosures and do not interact with any other animals. Animals are stable or cyclic oscillators.\r\n\r\n*Input:* Zoo , an [m,n] array\r\n\r\n*Output:* ZooPre, image of the Zoo at its prior iteration\r\n\r\n\r\n*Example:*\r\n\r\n  Zoo        ZooPre\r\n  0000000000  000000000  \r\n  0110000100  011000000  \r\n  0110000100  011001110  \r\n  0000000100  000000000  \r\n  0000000000  000000000\r\n\r\n*Additional References:*\r\n\u003chttp://www.conwaylife.com/wiki/Oscillator Oscillators\u003e, \u003chttp://www.conwaylife.com/wiki/Still_life Still Life\u003e\r\n\r\n*Next:* Small Island - Prior Snapshot Prediction","description_html":"\u003cp\u003e\u003ca href = \"http://www.kaggle.com/c/conway-s-reverse-game-of-life\"\u003eKaggle's Conway's Reverse Game of Life\u003c/a\u003e contest inspires this Reverse Life Zoo challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003ca href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003eGame of Life at Wolfram\u003c/a\u003e. \u003ca href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003eWiki Life\u003c/a\u003e.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n2. Any live cell with two or three live neighbors lives on to the next generation.\r\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\u003c/pre\u003e\u003cp\u003eDetermine the Zoo of life at its previous Snapshot. The output must evolve to the given Zoo Snapshot.  It is a Zoo since all animals are in their private enclosures and do not interact with any other animals. Animals are stable or cyclic oscillators.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e Zoo , an [m,n] array\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e ZooPre, image of the Zoo at its prior iteration\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample:\u003c/b\u003e\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eZoo        ZooPre\r\n0000000000  000000000  \r\n0110000100  011000000  \r\n0110000100  011001110  \r\n0000000100  000000000  \r\n0000000000  000000000\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eAdditional References:\u003c/b\u003e \u003ca href = \"http://www.conwaylife.com/wiki/Oscillator\"\u003eOscillators\u003c/a\u003e, \u003ca href = \"http://www.conwaylife.com/wiki/Still_life\"\u003eStill Life\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eNext:\u003c/b\u003e Small Island - Prior Snapshot Prediction\u003c/p\u003e","function_template":"function ZooPre=Zoo_prior(Zoo)\r\n ZooPre=Zoo;\r\nend","test_suite":"%%\r\n block=[0 0 0 0;0 1 1 0;0 1 1 0;0 0 0 0];\r\n Zoo=repmat(block,3,1);\r\n\r\n ZooPre=Zoo_prior(Zoo);\r\n mc=conv2(single(ZooPre),[1 1 1;1 0 1;1 1 1],'same');\r\n ZooChk=~(mc\u003c2 | mc\u003e3) \u0026 ((ZooPre \u0026 mc==2) | (ZooPre \u0026 mc==3) | (~ZooPre \u0026 mc==3)); \r\n\r\n \r\n   assert(all(all(ZooChk==Zoo))) \r\n%  figure(1);imagesc(ZooPre)\r\n%  figure(2);imagesc(Zoo)\r\n\r\n%%\r\ncaterer1=[0 0 0 0 0 0 0 0 0 0;0 0 0 1 0 0 0 0 0 0;0 1 0 0 0 1 1 1 1 0;0 1 0 0 0 1 0 0 0 0;0 1 0 0 0 0 0 0 0 0;0 0 0 0 1 0 0 0 0 0;0 0 1 1 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0];\r\n\r\ncaterer2=[0     0     0     0     0     0     0     0     0     0;\r\n     0     0     0     0     0     0     1     1     0     0;\r\n     0     0     1     0     1     1     1     1     0     0;\r\n     1     1     1     0     0     1     0     1     0     0;\r\n     0     0     0     0     0     0     0     0     0     0;\r\n     0     0     1     1     0     0     0     0     0     0;\r\n     0     0     0     1     0     0     0     0     0     0;\r\n     0     0     0     0     0     0     0     0     0     0];\r\n\r\ncaterer3=[0     0     0     0     0     0     0     0     0     0;\r\n     0     0     0     0     0     0     0     1     0     0;\r\n     0     0     1     1     1     0     0     0     1     0;\r\n     0     1     1     1     1     1     0     1     0     0;\r\n     0     0     0     1     0     0     0     0     0     0;\r\n     0     0     1     1     0     0     0     0     0     0;\r\n     0     0     1     1     0     0     0     0     0     0;\r\n     0     0     0     0     0     0     0     0     0     0];\r\n\r\n Zoo=[caterer1 zeros(8,1) caterer2 zeros(8,1) caterer3] ;\r\n\r\n ZooPre=Zoo_prior(Zoo);\r\n mc=conv2(single(ZooPre),[1 1 1;1 0 1;1 1 1],'same');\r\n ZooChk=~(mc\u003c2 | mc\u003e3) \u0026 ((ZooPre \u0026 mc==2) | (ZooPre \u0026 mc==3) | (~ZooPre \u0026 mc==3)); \r\n\r\n \r\n   assert(all(all(ZooChk==Zoo))) \r\n%  figure(1);imagesc(ZooPre)\r\n%  figure(2);imagesc(Zoo)\r\n\r\n%%\r\ncaterer1=[0 0 0 0 0 0 0 0 0 0;0 0 0 1 0 0 0 0 0 0;0 1 0 0 0 1 1 1 1 0;0 1 0 0 0 1 0 0 0 0;0 1 0 0 0 0 0 0 0 0;0 0 0 0 1 0 0 0 0 0;0 0 1 1 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0]; % 8x10\r\nLoaf=[0 0 0 0 0 0;0 0 1 1 0 0;0 1 0 0 1 0;0 0 1 0 1 0;0 0 0 1 0 0;0 0 0 0 0 0]; % 6x6\r\nblinker=[0 0 0 0 0;0 0 0 0 0;0 1 1 1 0;0 0 0 0 0;0 0 0 0 0]; % 5x5\r\n\r\n\r\n\r\nZoo=[[Loaf;Loaf'] zeros(12,1) [caterer1;zeros(4,10)] [blinker;blinker';zeros(2,5)] ] ;\r\n\r\n ZooPre=Zoo_prior(Zoo);\r\n mc=conv2(single(ZooPre),[1 1 1;1 0 1;1 1 1],'same');\r\n ZooChk=~(mc\u003c2 | mc\u003e3) \u0026 ((ZooPre \u0026 mc==2) | (ZooPre \u0026 mc==3) | (~ZooPre \u0026 mc==3)); \r\n\r\n \r\n   assert(all(all(ZooChk==Zoo))) \r\n%  figure(1);imagesc(ZooPre)\r\n%  figure(2);imagesc(Zoo)\r\n\r\n","published":true,"deleted":false,"likes_count":3,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":19,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-11-09T04:53:18.000Z","updated_at":"2026-02-13T15:21:36.000Z","published_at":"2013-11-09T05:22:10.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.kaggle.com/c/conway-s-reverse-game-of-life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest inspires this Reverse Life Zoo challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. No wrap around. Beyond edge is zero. Eight Neighbors.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eDetermine the Zoo of life at its previous Snapshot. The output must evolve to the given Zoo Snapshot. It is a Zoo since all animals are in their private enclosures and do not interact with any other animals. Animals are stable or cyclic oscillators.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Zoo , an [m,n] array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e ZooPre, image of the Zoo at its prior iteration\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Zoo        ZooPre\\n0000000000  000000000  \\n0110000100  011000000  \\n0110000100  011001110  \\n0000000100  000000000  \\n0000000000  000000000]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eAdditional References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.conwaylife.com/wiki/Oscillator\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOscillators\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.conwaylife.com/wiki/Still_life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eStill Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNext:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Small Island - Prior Snapshot Prediction\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":46663,"title":"Kaggle: Planetoid Game of Life - Variable Iterations for a wrapping array","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 377.167px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 188.583px; transform-origin: 407px 188.583px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 203.05px 7.91667px; transform-origin: 203.05px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGame of Life at Wolfram\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eWiki Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.467px 7.91667px; transform-origin: 138.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 360.583px 7.91667px; transform-origin: 360.583px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to Evolve a given 25x25 matrix for a given number(1 to 5) of iterations per these revised Life Laws.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 51.0833px; transform-origin: 404px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 350.35px 7.91667px; transform-origin: 350.35px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e1. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 188.65px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 188.65px 7.91667px; \"\u003elive cell with fewer than two live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 115.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 115.5px 7.91667px; \"\u003eif caused by under-population.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 315.7px 7.91667px; transform-origin: 315.7px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e2. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 288.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 288.75px 7.91667px; \"\u003elive cell with two or three live neighbors lives on to the next generation.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 311.85px 7.91667px; transform-origin: 311.85px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e3. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 192.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 192.5px 7.91667px; \"\u003elive cell with more than three live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by overcrowding.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 361.9px 7.91667px; transform-origin: 361.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e4. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 242.55px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 242.55px 7.91667px; \"\u003edead cell with exactly three live neighbors becomes a live cell\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by reproduction.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 265.65px 7.91667px; transform-origin: 265.65px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 34.65px 7.91667px; transform-origin: 34.65px 7.91667px; \"\u003e5. Edges \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 231px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 231px 7.91667px; \"\u003ewrap around. Eight Neighbors. (Change to normal planar life)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 221.317px 7.91667px; transform-origin: 221.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 19.4333px 7.91667px; transform-origin: 19.4333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 146.25px 7.91667px; transform-origin: 146.25px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (A,iter) Initial state(25,25), number of iterations\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 25.2667px 7.91667px; transform-origin: 25.2667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eOutput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 76.2333px 7.91667px; transform-origin: 76.2333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e B the final evolved state\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function B=iterlife(A,iter)\r\n B=A;\r\n \r\nend\r\n\r\n%Non-wap Life calc by Alfonso\r\n% C=convn(A,ones(3),'same');\r\n% B = C==3 | A\u0026C==4;","test_suite":"%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 4\r\niter=1;\r\nAstr='0001100000000000001000001000000000000001110010000100000000000000110001000100000000000000001001000000000000000000000010100000000000001000000000000000000000001010000000000000000000000001000000000000000000000001000000000110000000000000000000000100100000001100000000000001010000001001000000000000001000000110000000000000000000000000000000000000000000000000110000000000000000000000001000000000000000000011100000000000010000000000110000000000010100000000000000000000001010000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011000000000110110000000010010000000011110100010';\r\nBstr='0001100000000000001100011000000000000001010110001100000000000000000011000000000000000000011111100000000000000000000001000000000000001000000000000000000000000010000000000000000000000001000000000000000000000000000000000110000000000000000000000100100000001100000000000000011000001000000000000000010000000110000000000000000000000010100000000000000000000000110000000000000000000001011000000000000000000011100000000000010000000001010000000000010100000000010000000000001010000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000001100000000011000000000100001000000010010000000010000100000';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 16\r\niter=2;\r\nAstr='0011100100000000001111000101000010000000011010010000111101000000001000011011011100101100000110000100110000010100000000000111001000000100000100000110001100000000000100000001100000000000000101001111010011000000000011110010101010010000111101001100000110110001111111101100001011111000110110110001100001110000000000100111000011011000000011011000110000000100000001111100011000011100000001001000100000000010000001110100000001100100010001000010001100010000110000010000000000000011011100010000100000000000001011000000001000000000001101100000101000000000000100000000111101000000000000000000110000000000000000000011000100000000000010000';\r\nBstr='0000100000000000111101000000011000000000010011001110001101010000010010011010100100101100000110001100110000110010000000000001000100000110000000001011001100000000000110011000100000000000000101001100010111000000000000001010100011010000000000000011100000011000000000000111000000000000110000001111100000000000001000000100000011000000000110001100010000110100000010000111011100011010000010100111000001001000000011111100000000000001000001001110000000101110111100110000000000001101101000000000100000000000010000000001111000000000010001000001100000000000000101100001001110000000000001100001100000000000000000000000110110000000000011000';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 2\r\niter=3;\r\nAstr='0100000101000001000000110011000010000001100000000001000000110011000000000001000000011110000000010000100000000001110000000000000011000000101000000000001011110000010100000001000100100110001110000011001110011011000101100000101010000100000000000000000000000000000000000000101010000000000011101001011011110000000001111110110010001100000000001011101000010100000000000011000000010010000000010000111110000010000000010001000000000000000000001000001111000000000000000001010001000000000011000000001001000000000010100000000010100000000000100000000000000000001000000000000000101000001110000000000000100100001101111000000011000000001100000';\r\nBstr='1000001100100010001000101100000111000001000000001110000011100000000000000011000000011011011000000001101100001111111000000000110110110110100000000100011010000110100000000011000101010011011110000010010010000001000100000000010010001011100010001101000000000011000000001000110111000000000000000100000000101000000000000000000000000010000000000000010000100010000000000000100010001100000000010001111011000001000000010101100000100000000000001001011010100000000000000001010010010000000011000000011000000000000010100000000000000000110000100000000000000000101000000000000000000000010001000000000111000000010000011000000011100010001000000';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 1\r\niter=4;\r\nAstr='0000100001101010011100110000000000010000100101110000011000000110110001000000010010000010111000000010001000000000011100000001100100011100010110000000001100000111001010000001110000111100010111100000011111110100110000110001100010000100100100001000100001000110001110000000000101000000000001000000010111100000000111000000001000010000000011000000000000001100100000000000001110000011010100000000000000000011001001000000000000000000000011100000000000000000001100001111100000100000000000000110101001101100000001100000000110100110000010000000110010010000000001110000011111000111100000000000010100000000001000011000110000001100010111011';\r\nBstr='0000000000000000010000000000000000000110001110000001001100001001001111100100100110001100101100000000010000000111100000000001000000000000010000000000000001100000011100000010000000100000001110000001111101100000001110000000100001111000000010000000001001100010001101000000001101100001110000000001110011000000001111100000000000000000000011110000001100000001000000000000000000000010101010000000000000000011000111011011000010000001001011010111010010100000010100110100001010001000001110011000000100100100000011000011001110000110000010010000000001100001000010000000000011101010000000001100000001000000000000110000000011000000001000000';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 3\r\niter=5;\r\nAstr='0110000000000011000000011100000000000001100000001001100000000000100001011001001110000110000000010101000000001111100000101100000011011111100001011100000000101000000001100000001100011100000000100100001010000000000000010010000100000000000000000110000001000000000100000000001100000000000010001100000110000000010001000110000000000000011000100001000010000000011000011000100001000000000110000100010001010000000000001100000000001100000000000100000000001110000000000000000000000100100000001000000000000001010000011011000000000000110000001101100000000000000000000110110000000000000000000000100000000110000000001000000000000000000000000';\r\nBstr='1100001000000100000000011100001000000101000000001011110000000100000000001000000100000100000100000000000000000010001001000000000011111001010100100100010001100100000000000001001100011100000001010000001010000100000000000010000100000000000000010010000001000000001100000001000000000000111110001100001000000011011000001000101100000010000000000000001011000001001110010001001000100000110001100000011000010000001110000001000000011000000010000001000000010000000000000001000000011100000001000000000000000100110001000100010000000010001000000101001000000000100100100001000100000000001000001000000100000000000000010100000100000000000000010';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-10-03T16:50:36.000Z","updated_at":"2020-10-03T17:35:03.000Z","published_at":"2020-10-03T17:35:03.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to Evolve a given 25x25 matrix for a given number(1 to 5) of iterations per these revised Life Laws.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. Edges wrap around. Eight Neighbors. (Change to normal planar life)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (A,iter) Initial state(25,25), number of iterations\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e B the final evolved state\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":1976,"title":"Kaggle: Reverse Game of Life - Create Isle prior State","description":"\u003chttp://www.kaggle.com/c/conway-s-reverse-game-of-life Kaggle's Conway's Reverse Game of Life\u003e contest inspires this Isle Single Evolution step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003chttp://mathworld.wolfram.com/GameofLife.html Game of Life at Wolfram\u003e. \u003chttp://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Wiki Life\u003e.\r\n\r\n\r\n  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n  2. Any live cell with two or three live neighbors lives on to the next generation.\r\n  3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\r\n\r\nCreate an Isle that will evolve in one step to the given Isle state. An Isle is a morphing matrix that may contain non-periodic and interacting animals. The Isle is pre-evolved and will have \u003e10 live cells. Multiple solutions are possible. Imperfect solutions are allowed. This is a Performance Challenge.\r\n\r\n*Input:* Isle, 10x10 binary, 100 Isles\r\n\r\n*Output:* Isle_Predict,  a matrix that will evolve to Isle\r\n\r\n*Scoring:* 1000 * ( Errors / Total_points )\r\n\r\n*Example:*  (Errors=0 and 100 Total Points)\r\n\r\n  Isle        Isle_Predict\r\n\r\n  0001000000 0001000000\r\n  0010100000 0010100000\r\n  0100100000 0100100000\r\n  1101100000 0101000000\r\n  0100100000 0111000000\r\n  0000101000 0010100000\r\n  0010111100 0010111100\r\n  0001000010 0001000100\r\n  0000110100 0000111100\r\n  0000110000 0000010000\r\n\r\n*Next:* Isle_Predict vs Actual Specific Isle Predecessor. Study in Probability.","description_html":"\u003cp\u003e\u003ca href = \"http://www.kaggle.com/c/conway-s-reverse-game-of-life\"\u003eKaggle's Conway's Reverse Game of Life\u003c/a\u003e contest inspires this Isle Single Evolution step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003ca href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003eGame of Life at Wolfram\u003c/a\u003e. \u003ca href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003eWiki Life\u003c/a\u003e.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n2. Any live cell with two or three live neighbors lives on to the next generation.\r\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\u003c/pre\u003e\u003cp\u003eCreate an Isle that will evolve in one step to the given Isle state. An Isle is a morphing matrix that may contain non-periodic and interacting animals. The Isle is pre-evolved and will have \u0026gt;10 live cells. Multiple solutions are possible. Imperfect solutions are allowed. This is a Performance Challenge.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e Isle, 10x10 binary, 100 Isles\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e Isle_Predict,  a matrix that will evolve to Isle\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring:\u003c/b\u003e 1000 * ( Errors / Total_points )\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample:\u003c/b\u003e  (Errors=0 and 100 Total Points)\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eIsle        Isle_Predict\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003e0001000000 0001000000\r\n0010100000 0010100000\r\n0100100000 0100100000\r\n1101100000 0101000000\r\n0100100000 0111000000\r\n0000101000 0010100000\r\n0010111100 0010111100\r\n0001000010 0001000100\r\n0000110100 0000111100\r\n0000110000 0000010000\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eNext:\u003c/b\u003e Isle_Predict vs Actual Specific Isle Predecessor. Study in Probability.\u003c/p\u003e","function_template":"function Isle_Predict=predict_prior_isle(Isle)\r\n% Given Isle find prior Isle state to produce minimal Isle errors\r\n Isle_Predict=zeros(size(Isle));\r\nend","test_suite":"assignin('caller','score',200);\r\n%%\r\ntic\r\nN=10; % size of Isle\r\nQisles=100; % Qty of Isles to process to find error rate\r\n\r\nrng(15,'twister'); % creation fixed set of Isles\r\n\r\nvalid=0; \r\n\r\nwhile valid\u003cQisles\r\n q=floor(N/4)+randi(floor(N*N/4));\r\n idx=randperm(N*N);\r\n \r\n mb=zeros(N);\r\n mb(idx(1:q))=1;\r\n\r\n for i=1:10 % Pre-Evolve\r\n  %mb0=mb;\r\n  mc=conv2(single(mb),[1 1 1;1 0 1;1 1 1],'same');\r\n  mb=~(mc\u003c2 | mc\u003e3) \u0026 ((mb \u0026 mc==2) | (mb \u0026 mc==3) | (~mb \u0026 mc==3)); \r\n end\r\n\r\n if nnz(mb)\u003eN*N/10  % Avoid empty isles\r\n%   figure(1);imagesc(mb0)\r\n%   figure(2);imagesc(mb)\r\n  valid=valid+1;\r\n  Isle{valid}=mb;\r\n  \r\n end\r\n\r\nend % while  to create cases\r\n\r\nerrTot=0;\r\nfor i=1:Qisles\r\n\r\n isle_predict=predict_prior_isle(Isle{i});\r\n  \r\n m1=isle_predict; % Evolve to calculate errors\r\n mc=conv2(single(m1),[1 1 1;1 0 1;1 1 1],'same');\r\n isle_created=~(mc\u003c2 | mc\u003e3) \u0026 ((m1 \u0026 mc==2) | (m1 \u0026 mc==3) | (~m1 \u0026 mc==3));\r\n  \r\n err=N*N-nnz(Isle{i}==isle_created);\r\n errTot=errTot+err;\r\n\r\nend % Qisles\r\ntoc\r\nassignin('caller','score',min(200,floor(1000*errTot/N/N/Qisles)));\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":6,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":17,"test_suite_updated_at":"2013-11-10T02:23:31.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-11-09T19:43:29.000Z","updated_at":"2026-02-13T15:23:16.000Z","published_at":"2013-11-09T20:16:15.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.kaggle.com/c/conway-s-reverse-game-of-life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest inspires this Isle Single Evolution step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. No wrap around. Beyond edge is zero. Eight Neighbors.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCreate an Isle that will evolve in one step to the given Isle state. An Isle is a morphing matrix that may contain non-periodic and interacting animals. The Isle is pre-evolved and will have \u0026gt;10 live cells. Multiple solutions are possible. Imperfect solutions are allowed. This is a Performance Challenge.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Isle, 10x10 binary, 100 Isles\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Isle_Predict, a matrix that will evolve to Isle\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eScoring:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e 1000 * ( Errors / Total_points )\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (Errors=0 and 100 Total Points)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Isle        Isle_Predict\\n\\n0001000000 0001000000\\n0010100000 0010100000\\n0100100000 0100100000\\n1101100000 0101000000\\n0100100000 0111000000\\n0000101000 0010100000\\n0010111100 0010111100\\n0001000010 0001000100\\n0000110100 0000111100\\n0000110000 0000010000]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNext:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Isle_Predict vs Actual Specific Isle Predecessor. Study in Probability.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1966,"title":"Kaggle: Reverse Game of Life - Single Move to One Cell Case","description":"\u003chttp://www.kaggle.com/c/conway-s-reverse-game-of-life Kaggle's Conway's Reverse Game of Life\u003e contest inspires this Single Reverse step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003chttp://mathworld.wolfram.com/GameofLife.html Game of Life at Wolfram\u003e. \u003chttp://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Wiki Life\u003e.\r\n\r\n\r\n  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n  2. Any live cell with two or three live neighbors lives on to the next generation.\r\n  3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\r\n\r\n\r\nFind all the 4x4 Life matrices that upon one evolution produce a single living cell. This is a single evolution reversal set. The 4x4 gets appended by a ring of zeros for processing. The single living cell may be anywhere in the final 6x6 matrix, but none are expected to occur in the outer ring for a valid solution.\r\n\r\n*Input:* None\r\n\r\n*Output:* Cell array of unique 4x4 matrices that evolve to a single cell\r\n\r\n*Scoring:* 600 - (Number of valid unique 4x4 matrices)\r\n\r\n*Examples:*  A few valid matrices that produce a single cell\r\n\r\n  0000  0010  1101\r\n  0001  1000  1110\r\n  0000  0000  0100\r\n  0101  0110  1001","description_html":"\u003cp\u003e\u003ca href = \"http://www.kaggle.com/c/conway-s-reverse-game-of-life\"\u003eKaggle's Conway's Reverse Game of Life\u003c/a\u003e contest inspires this Single Reverse step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003ca href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003eGame of Life at Wolfram\u003c/a\u003e. \u003ca href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003eWiki Life\u003c/a\u003e.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n2. Any live cell with two or three live neighbors lives on to the next generation.\r\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\u003c/pre\u003e\u003cp\u003eFind all the 4x4 Life matrices that upon one evolution produce a single living cell. This is a single evolution reversal set. The 4x4 gets appended by a ring of zeros for processing. The single living cell may be anywhere in the final 6x6 matrix, but none are expected to occur in the outer ring for a valid solution.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e None\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e Cell array of unique 4x4 matrices that evolve to a single cell\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring:\u003c/b\u003e 600 - (Number of valid unique 4x4 matrices)\u003c/p\u003e\u003cp\u003e\u003cb\u003eExamples:\u003c/b\u003e  A few valid matrices that produce a single cell\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e0000  0010  1101\r\n0001  1000  1110\r\n0000  0000  0100\r\n0101  0110  1001\r\n\u003c/pre\u003e","function_template":"function mcell=Life\r\n  mcell{1}=zeros(4);\r\nend","test_suite":"%%\r\nassignin('caller','score',200);\r\n\r\n%%\r\n[mcell] = Life;\r\n\r\n[nr,nc]=size(mcell);\r\n% check for uniqueness\r\nvalid=1;\r\ntic\r\nfor k=1:nc-1\r\n  mk=mcell{k};\r\n for p=k+1:nc\r\n  mp=mcell{p};\r\n  mkp=mk==mp;\r\n  if all(mkp(:))\r\n   valid=0;\r\n  end\r\n end\r\nend\r\nassert(valid==1,sprintf('Not all unique solutions'));\r\ntoc\r\n\r\n% run an evolution and verify\r\ntic\r\nfor k=1:nc\r\n  m=mcell{k};\r\n  m=[zeros(1,6);zeros(4,1) m zeros(4,1);zeros(1,6)];\r\n  mc=conv2(m,[1 1 1;1 0 1;1 1 1],'same');\r\n  m=~(mc\u003c2 | mc\u003e3) \u0026 ((m \u0026 mc==2) | (m \u0026 mc==3) | (~m \u0026 mc==3)); \r\n  assert(isequal(nnz(m),1),sprintf('Non-Single survivor solution'))\r\nend\r\ntoc\r\nassignin('caller','score',min(200,max(0,600-nc)));\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":3,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":"2019-07-16T14:11:36.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-10-31T02:08:53.000Z","updated_at":"2026-02-13T15:19:14.000Z","published_at":"2013-10-31T03:12:32.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.kaggle.com/c/conway-s-reverse-game-of-life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest inspires this Single Reverse step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. No wrap around. Beyond edge is zero. Eight Neighbors.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFind all the 4x4 Life matrices that upon one evolution produce a single living cell. This is a single evolution reversal set. The 4x4 gets appended by a ring of zeros for processing. The single living cell may be anywhere in the final 6x6 matrix, but none are expected to occur in the outer ring for a valid solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e None\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Cell array of unique 4x4 matrices that evolve to a single cell\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eScoring:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e 600 - (Number of valid unique 4x4 matrices)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExamples:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e A few valid matrices that produce a single cell\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[0000  0010  1101\\n0001  1000  1110\\n0000  0000  0100\\n0101  0110  1001]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1970,"title":"Kaggle: Reverse Game of Life - Periods of Oscillators","description":"\u003chttp://www.kaggle.com/c/conway-s-reverse-game-of-life Kaggle's Conway's Reverse Game of Life\u003e contest inspires this Period of Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003chttp://mathworld.wolfram.com/GameofLife.html Game of Life at Wolfram\u003e. \u003chttp://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Wiki Life\u003e.\r\n\r\n\r\n  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n  2. Any live cell with two or three live neighbors lives on to the next generation.\r\n  3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\r\n\r\n\r\nDetermine the period of life for a given binary matrix. A stable configuration, Still Life, has a cycle of 1.\r\n\r\n*Input:* M , an [m,n] array\r\n\r\n*Output:* N, Period of Life cycle (Period \u003c11)\r\n\r\n\r\n*Examples:*  A few matrices of varying periods\r\n\r\n  N=1   N=2    N=3 Caterer\r\n  0000  00000  0000000000\r\n  0110  00000  0001000000\r\n  0110  01110  0100011110\r\n  0000  00000  0100010000\r\n        00000  0100000000\r\n               0000100000\r\n               0011000000\r\n               0000000000\r\n\r\n*Additional References:*\r\n\u003chttp://www.conwaylife.com/wiki/Oscillator Oscillators\u003e, \u003chttp://www.conwaylife.com/wiki/Still_life Still Life\u003e","description_html":"\u003cp\u003e\u003ca href = \"http://www.kaggle.com/c/conway-s-reverse-game-of-life\"\u003eKaggle's Conway's Reverse Game of Life\u003c/a\u003e contest inspires this Period of Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003ca href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003eGame of Life at Wolfram\u003c/a\u003e. \u003ca href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003eWiki Life\u003c/a\u003e.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n2. Any live cell with two or three live neighbors lives on to the next generation.\r\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\u003c/pre\u003e\u003cp\u003eDetermine the period of life for a given binary matrix. A stable configuration, Still Life, has a cycle of 1.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e M , an [m,n] array\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e N, Period of Life cycle (Period \u0026lt;11)\u003c/p\u003e\u003cp\u003e\u003cb\u003eExamples:\u003c/b\u003e  A few matrices of varying periods\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eN=1   N=2    N=3 Caterer\r\n0000  00000  0000000000\r\n0110  00000  0001000000\r\n0110  01110  0100011110\r\n0000  00000  0100010000\r\n      00000  0100000000\r\n             0000100000\r\n             0011000000\r\n             0000000000\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eAdditional References:\u003c/b\u003e \u003ca href = \"http://www.conwaylife.com/wiki/Oscillator\"\u003eOscillators\u003c/a\u003e, \u003ca href = \"http://www.conwaylife.com/wiki/Still_life\"\u003eStill Life\u003c/a\u003e\u003c/p\u003e","function_template":"function N=Life_Period(M)\r\n%\r\nN=0;\r\n\r\nend","test_suite":"%Block  Still 1\r\nm=[0 0 0 0;0 1 1 0;0 1 1 0;0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Beehive  Still 1\r\nm=[0 0 0 0 0 0;0 0 1 1 0 0;0 1 0 0 1 0;0 0 1 1 0 0;0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Loaf  Still 1\r\nm=[0 0 0 0 0 0;0 0 1 1 0 0;0 1 0 0 1 0;0 0 1 0 1 0;0 0 0 1 0 0;0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Boat  Still 1\r\nm=[0 0 0 0 0;0 1 1 0 0;0 1 0 1 0;0 0 1 0 0;0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Table Still 1\r\nm=[0 0 0 0 0 0 0;0 1 1 0 1 1 0;0 0 1 0 1 0 0;0 0 1 0 1 0 0;0 1 1 0 1 1 0;0 0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Blinker  Osc 2\r\nm=[0 0 0 0 0;0 0 0 0 0;0 1 1 1 0;0 0 0 0 0;0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==2)\r\n%%\r\n%Toad  Osc 2\r\nm=[0 0 0 0 0 0;0 0 0 0 0 0;0 0 1 1 1 0;0 1 1 1 0 0;0 0 0 0 0 0;0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==2)\r\n%%\r\n%Beacon  Osc 2\r\nm=[0 0 0 0 0 0;0 1 1 0 0 0;0 1 1 0 0 0;0 0 0 1 1 0;0 0 0 1 1 0;0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==2)\r\n%%\r\n%Caterer  Osc 3\r\nm=[0 0 0 0 0 0 0 0 0 0;0 0 0 1 0 0 0 0 0 0;0 1 0 0 0 1 1 1 1 0;0 1 0 0 0 1 0 0 0 0;0 1 0 0 0 0 0 0 0 0;0 0 0 0 1 0 0 0 0 0;0 0 1 1 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0;];\r\nn=Life_Period(m);\r\nassert(n==3)","published":true,"deleted":false,"likes_count":2,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-11-04T04:25:13.000Z","updated_at":"2026-02-13T15:20:35.000Z","published_at":"2013-11-04T04:46:57.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.kaggle.com/c/conway-s-reverse-game-of-life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest inspires this Period of Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. No wrap around. Beyond edge is zero. Eight Neighbors.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eDetermine the period of life for a given binary matrix. A stable configuration, Still Life, has a cycle of 1.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e M , an [m,n] array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e N, Period of Life cycle (Period \u0026lt;11)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExamples:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e A few matrices of varying periods\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[N=1   N=2    N=3 Caterer\\n0000  00000  0000000000\\n0110  00000  0001000000\\n0110  01110  0100011110\\n0000  00000  0100010000\\n      00000  0100000000\\n             0000100000\\n             0011000000\\n             0000000000]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eAdditional References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.conwaylife.com/wiki/Oscillator\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOscillators\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.conwaylife.com/wiki/Still_life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eStill Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":2494,"title":"What is the nth step in Conway's Life?","description":"Based on \u003cProblem 52. What is the next step in Conway's Life?\u003e\r\n\r\nGeneralize your solution to Problem 52 - Give the state of the game at nth step for any size board.\r\n\r\nNote: This problem uses the MATLAB convention for indexing (t=1 is the initial state).","description_html":"\u003cdiv style = \"text-align: start; line-height: 20px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: normal; text-decoration: none; white-space: normal; \"\u003e\u003cdiv style=\"display: block; min-width: 0px; padding-top: 0px; transform-origin: 332px 40.5px; vertical-align: baseline; perspective-origin: 332px 40.5px; \"\u003e\u003cdiv style=\"font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-bottom: 9px; margin-left: 4px; margin-right: 10px; margin-top: 2px; text-align: left; transform-origin: 309px 10.5px; white-space: pre-wrap; perspective-origin: 309px 10.5px; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; transform-origin: 0px 0px; perspective-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eBased on\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; transform-origin: 0px 0px; perspective-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/52\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003e52. What is the next step in Conway's Life?\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\u003cdiv style=\"font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-bottom: 9px; margin-left: 4px; margin-right: 10px; margin-top: 2px; text-align: left; transform-origin: 309px 10.5px; white-space: pre-wrap; perspective-origin: 309px 10.5px; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; transform-origin: 0px 0px; perspective-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eGeneralize your solution to Problem 52 - Give the state of the game at nth step for any size board.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-bottom: 9px; margin-left: 4px; margin-right: 10px; margin-top: 2px; text-align: left; transform-origin: 309px 10.5px; white-space: pre-wrap; perspective-origin: 309px 10.5px; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; transform-origin: 0px 0px; perspective-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eNote: This problem uses the MATLAB convention for indexing (t=1 is the initial state).\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function M = life(L,n)\r\n\r\n function L = conway(L)\r\n end\r\n\r\n while t\u003cn\r\n end\r\n\r\nend","test_suite":"%%\r\nL = [\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n];\r\nn = 6;\r\nM_correct = [\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0\r\n 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n];\r\nassert(isequal(life(L,n),M_correct))\r\n%%\r\nL = [\r\n0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 \r\n0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 \r\n0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 \r\n0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 \r\n0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 \r\n0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 0 \r\n1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 \r\n1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n];\r\nn = 13;\r\nM_correct = [\r\n 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1\r\n 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1\r\n 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1\r\n 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0\r\n 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0\r\n 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 0\r\n 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0\r\n 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n];\r\nassert(isequal(life(L,n),M_correct))\r\n%%\r\nL = [\r\n 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0\r\n 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0\r\n 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0\r\n 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0\r\n 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0\r\n 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0\r\n 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0\r\n 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0\r\n];\r\nn = 9;\r\nM_correct = [\r\n 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0\r\n 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0\r\n 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0\r\n 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0\r\n 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0\r\n 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0\r\n 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0\r\n 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0\r\n 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0\r\n 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0\r\n 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0\r\n 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0\r\n];\r\nassert(isequal(life(L,n),M_correct))\r\n%%\r\nL = [\r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \r\n0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \r\n1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n];\r\nn = 1;\r\nM_correct = [\r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \r\n0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \r\n1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n];\r\nassert(isequal(life(L,n),M_correct))","published":true,"deleted":false,"likes_count":2,"comments_count":2,"created_by":379,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":29,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2014-08-09T05:29:47.000Z","updated_at":"2026-04-08T14:56:31.000Z","published_at":"2014-08-09T05:31:45.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBased on\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/52\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e52. What is the next step in Conway's Life?\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGeneralize your solution to Problem 52 - Give the state of the game at nth step for any size board.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: This problem uses the MATLAB convention for indexing (t=1 is the initial state).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":46686,"title":"Kaggle: Planetoid Game of Life - Solve 3000 of 50000 Puzzles","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 419.167px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 209.583px; transform-origin: 407px 209.583px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 203.05px 7.91667px; transform-origin: 203.05px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGame of Life at Wolfram\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eWiki Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.467px 7.91667px; transform-origin: 138.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 271.517px 7.91667px; transform-origin: 271.517px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to Solve at least 3000 of the 50K puzzles per these revised Life Laws.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 51.0833px; transform-origin: 404px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 350.35px 7.91667px; transform-origin: 350.35px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e1. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 188.65px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 188.65px 7.91667px; \"\u003elive cell with fewer than two live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 115.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 115.5px 7.91667px; \"\u003eif caused by under-population.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 315.7px 7.91667px; transform-origin: 315.7px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e2. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 288.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 288.75px 7.91667px; \"\u003elive cell with two or three live neighbors lives on to the next generation.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 311.85px 7.91667px; transform-origin: 311.85px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e3. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 192.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 192.5px 7.91667px; \"\u003elive cell with more than three live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by overcrowding.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 361.9px 7.91667px; transform-origin: 361.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e4. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 242.55px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 242.55px 7.91667px; \"\u003edead cell with exactly three live neighbors becomes a live cell\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by reproduction.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 265.65px 7.91667px; transform-origin: 265.65px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 34.65px 7.91667px; transform-origin: 34.65px 7.91667px; \"\u003e5. Edges \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 231px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 231px 7.91667px; \"\u003ewrap around. Eight Neighbors. (Change to normal planar life)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 221.317px 7.91667px; transform-origin: 221.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 19.4333px 7.91667px; transform-origin: 19.4333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 354.317px 7.91667px; transform-origin: 354.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mtest,numtosolve) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values], number of case to solve (3000)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 25.2667px 7.91667px; transform-origin: 25.2667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eOutput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 347.317px 7.91667px; transform-origin: 347.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mstart) the Starting state matrix of at least 3000 puzzles all with perfect zero error solutions, [casenumber, 625 values]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 15.95px 7.91667px; transform-origin: 15.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eHint:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250.483px 7.91667px; transform-origin: 250.483px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e There are 3726 trivial solutions where the  Finish state is the Start state solution.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function mstart = solveLife(mtest,numtosolve)\r\n  mstart=zeros(numtosolve,626)\r\nend","test_suite":"%%\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\n%mtest format is [casenumer, iterations, start1:625,finish1:625] for 50K cases 0:49999\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtrain.mat?attredirects=0\u0026d=1';\r\ntic\r\nfname='https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\nurlwrite(fname,'mtest.mat') %1.22s\r\nload('mtest.mat'); %0.42s\r\ntoc\r\n\r\nnumtosolve=3000;\r\nmstart = solveLife(mtest,numtosolve);\r\ntoc\r\nmstart=unique(mstart,'rows'); % remove exact duplicate solutions\r\n\r\nvalid=0;\r\nfor i=1:size(mstart,1)  % \u003c0.5sec to process 3K cases\r\n icase=mstart(i,1); %50000:99999\r\n iter=mtest(icase-49999,2); %Test cases start at 50000\r\n \r\n A=reshape(mstart(i,2:end),25,25);\r\n for j=1:iter\r\n  C=0;\r\n  for r=-1:1 % -1 Up   Using circshift to perform wrap convolution\r\n   Ar=circshift(A,r,1);\r\n   for c=-1:1 % -1 Left\r\n     Arc=circshift(Ar,c,2);\r\n     C=C+Arc;\r\n   end\r\n  end\r\n  A = C==3 | A\u0026C==4;\r\n end %j\r\n\r\n if isequal(A(:)',mtest(icase-49999,3:end)) % mtest [case, iter, data1:625]\r\n  valid=valid+1;\r\n else\r\n  valid=0;\r\n  break;\r\n end\r\nend %main loop i\r\ntoc\r\n\r\nassert(valid\u003e=3000)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":3,"test_suite_updated_at":"2020-10-06T15:37:58.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-10-06T14:46:29.000Z","updated_at":"2020-10-06T15:37:58.000Z","published_at":"2020-10-06T15:37:58.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to Solve at least 3000 of the 50K puzzles per these revised Life Laws.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. Edges wrap around. Eight Neighbors. (Change to normal planar life)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mtest,numtosolve) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values], number of case to solve (3000)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mstart) the Starting state matrix of at least 3000 puzzles all with perfect zero error solutions, [casenumber, 625 values]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHint:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e There are 3726 trivial solutions where the  Finish state is the Start state solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":46691,"title":"Kaggle: Planetoid Game of Life - Solve 40 non-trivial Puzzles","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 482.167px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 241.083px; transform-origin: 407px 241.083px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 203.05px 7.91667px; transform-origin: 203.05px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGame of Life at Wolfram\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eWiki Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.467px 7.91667px; transform-origin: 138.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 384px 7.91667px; transform-origin: 384px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to Solve at least 40, excluding trivials, of the 50K puzzles per these revised Life Laws. Trivial solutions are where the Final state may match the Start State.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 51.0833px; transform-origin: 404px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 350.35px 7.91667px; transform-origin: 350.35px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e1. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 188.65px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 188.65px 7.91667px; \"\u003elive cell with fewer than two live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 115.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 115.5px 7.91667px; \"\u003eif caused by under-population.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 315.7px 7.91667px; transform-origin: 315.7px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e2. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 288.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 288.75px 7.91667px; \"\u003elive cell with two or three live neighbors lives on to the next generation.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 311.85px 7.91667px; transform-origin: 311.85px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e3. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 192.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 192.5px 7.91667px; \"\u003elive cell with more than three live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by overcrowding.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 361.9px 7.91667px; transform-origin: 361.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e4. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 242.55px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 242.55px 7.91667px; \"\u003edead cell with exactly three live neighbors becomes a live cell\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by reproduction.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 265.65px 7.91667px; transform-origin: 265.65px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 34.65px 7.91667px; transform-origin: 34.65px 7.91667px; \"\u003e5. Edges \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 231px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 231px 7.91667px; \"\u003ewrap around. Eight Neighbors. (Change to normal planar life)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 221.317px 7.91667px; transform-origin: 221.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 19.4333px 7.91667px; transform-origin: 19.4333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 354.317px 7.91667px; transform-origin: 354.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mtest,numtosolve) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values], number of case to solve (40)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 25.2667px 7.91667px; transform-origin: 25.2667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eOutput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 339.533px 7.91667px; transform-origin: 339.533px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mstart) the Starting state matrix of at least 40 puzzles all with perfect zero error solutions, [casenumber, 625 values]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 15.95px 7.91667px; transform-origin: 15.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eHint:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 364.467px 7.91667px; transform-origin: 364.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e There are 40 non-trivial solutions for iterations 1 and 2 where a solving Start state has a single bit flip that is adjacent to a set bit or is a set bit. Cases where there are more than 40 set bits in the final state may consume significant time for no solutions. \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function mstart = solveLife(mtest,numtosolve)\r\n  mstart=zeros(numtosolve,626)\r\nend","test_suite":"%%\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\n%mtest format is [casenumer, iterations, start1:625,finish1:625] for 50K cases 0:49999\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtrain.mat?attredirects=0\u0026d=1';\r\ntic\r\nfname='https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\nurlwrite(fname,'mtest.mat') %1.22s\r\nload('mtest.mat'); %0.42s\r\ntoc\r\n\r\nnumtosolve=40;\r\nmstart = solveLife(mtest,numtosolve);\r\ntoc\r\nmstart=unique(mstart,'rows'); % remove exact duplicate solutions\r\n\r\n%Check for Trivial solutions; Life(mtest(case))==mtest(case)\r\nvalid=1;\r\nfor i=1:size(mstart,1)  % \r\n icase=mstart(i,1); %50000:99999\r\n iter=mtest(icase-49999,2); %Test cases start at 50000\r\n \r\n A=reshape(mtest(icase-49999,3:end),25,25);\r\n Abase=A;\r\n for j=1:iter\r\n  C=0;\r\n  for r=-1:1 % -1 Up   Using circshift to perform wrap convolution\r\n   Ar=circshift(A,r,1);\r\n   for c=-1:1 % -1 Left\r\n     Arc=circshift(Ar,c,2);\r\n     C=C+Arc;\r\n   end\r\n  end\r\n  A = C==3 | A\u0026C==4;\r\n end %j\r\n\r\n if isequal(Abase,A) % mtest [case, iter, data1:625]\r\n  valid=0; %Trivial solution entered\r\n  break;\r\n end\r\nend %main loop i\r\ntoc  % Trivial check timer\r\n\r\nLprocess=size(mstart,1)*valid;\r\nvalid=0; % Reset valid as counter for solutions\r\nfor i=1:Lprocess  % skip if any were trivial\r\n icase=mstart(i,1); %50000:99999\r\n iter=mtest(icase-49999,2); %Test cases start at 50000\r\n \r\n A=reshape(mstart(i,2:end),25,25);\r\n for j=1:iter\r\n  C=0;\r\n  for r=-1:1 % -1 Up   Using circshift to perform wrap convolution\r\n   Ar=circshift(A,r,1);\r\n   for c=-1:1 % -1 Left\r\n     Arc=circshift(Ar,c,2);\r\n     C=C+Arc;\r\n   end\r\n  end\r\n  A = C==3 | A\u0026C==4;\r\n end %j\r\n\r\n if ~isequal(A(:)',mtest(icase-49999,3:end)) % mtest [case, iter, data1:625]\r\n  valid=0; %Evolved does not match goal\r\n  break;\r\n else\r\n  valid=valid+1;\r\n end\r\nend %main loop i\r\ntoc\r\n\r\nassert(valid\u003e=40)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":2,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-10-06T18:14:45.000Z","updated_at":"2020-10-06T18:41:35.000Z","published_at":"2020-10-06T18:41:35.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to Solve at least 40, excluding trivials, of the 50K puzzles per these revised Life Laws. Trivial solutions are where the Final state may match the Start State.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. Edges wrap around. Eight Neighbors. (Change to normal planar life)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mtest,numtosolve) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values], number of case to solve (40)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mstart) the Starting state matrix of at least 40 puzzles all with perfect zero error solutions, [casenumber, 625 values]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHint:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e There are 40 non-trivial solutions for iterations 1 and 2 where a solving Start state has a single bit flip that is adjacent to a set bit or is a set bit. Cases where there are more than 40 set bits in the final state may consume significant time for no solutions. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":52,"title":"What is the next step in Conway's Life?","description":"Given a matrix A that represents the state of Conway's game of Life at one instant (time t=n), return the matrix B that represents the state of the game at the next instant (time t=n+1).\r\nAssume a toroidal game board, so the edges of the matrix wrap left to right and top to bottom.\r\nExamples:\r\n Input  A = [ 1   1   0   0\r\n              0   1   0   0\r\n              1   1   0   0\r\n              0   0   0   0 ]\r\n\r\n Output B = [ 1   1   0   0\r\n              0   0   1   0\r\n              1   1   0   0\r\n              0   0   0   0 ]\r\n\r\n Input  A = [ 0   1   1   0\r\n              1   1   1   0\r\n              0   0   1   0\r\n              0   0   0   0 ]\r\n\r\n Output B = [ 1   0   1   1\r\n              1   0   0   0\r\n              0   0   1   1\r\n              0   1   1   0 ]","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 500.233px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 250.117px; transform-origin: 407px 250.117px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 139px 8px; transform-origin: 139px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eGiven a matrix A that represents the state of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://conwaylife.com/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eConway's game of Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 155px 8px; transform-origin: 155px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e at one instant (time t=n), return the matrix B that represents the state of the game at the next instant (time t=n+1).\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 294px 8px; transform-origin: 294px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAssume a toroidal game board, so the edges of the matrix wrap left to right and top to bottom.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 32px 8px; transform-origin: 32px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eExamples:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 388.233px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 194.117px; transform-origin: 404px 194.117px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 32px 8.5px; transform-origin: 32px 8.5px; \"\u003e Input  \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 76px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 76px 8.5px; \"\u003eA = [ 1   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              1   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   0   0 ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; tab-size: 4; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 32px 8.5px; transform-origin: 32px 8.5px; \"\u003e Output \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 76px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 76px 8.5px; \"\u003eB = [ 1   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   1   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              1   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   0   0 ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; tab-size: 4; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 32px 8.5px; transform-origin: 32px 8.5px; \"\u003e Input  \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 76px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 76px 8.5px; \"\u003eA = [ 0   1   1   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              1   1   1   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   1   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   0   0 ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; tab-size: 4; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 32px 8.5px; transform-origin: 32px 8.5px; \"\u003e Output \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 76px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 76px 8.5px; \"\u003eB = [ 1   0   1   1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              1   0   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   1   1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   1   1   0 ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function B = gameOfLife(A)\r\n  B = A;\r\nend","test_suite":"%%\r\nA = [ ...\r\n 1     1     0     0\r\n 0     1     0     0\r\n 1     1     0     0\r\n 0     0     0     0];\r\n\r\nB = [ ...\r\n 1     1     0     0\r\n 0     0     1     0\r\n 1     1     0     0\r\n 0     0     0     0];\r\n\r\nassert(isequal(gameOfLife(A),B))\r\n\r\n%%\r\nA = [ ...\r\n 0     1     1     0\r\n 1     1     1     0\r\n 0     0     1     0\r\n 0     0     0     0];\r\n\r\nB = [ ...\r\n 1     0     1     1\r\n 1     0     0     0\r\n 0     0     1     1\r\n 0     1     1     0];\r\n\r\nassert(isequal(gameOfLife(A),B))\r\n\r\n%%\r\nA = zeros(4);\r\nassert(isequal(gameOfLife(A),A))\r\n\r\n%%\r\nA = ones(4);\r\nassert(isequal(gameOfLife(A),1-A))\r\n","published":true,"deleted":false,"likes_count":29,"comments_count":13,"created_by":1,"edited_by":223089,"edited_at":"2023-08-22T14:45:24.000Z","deleted_by":null,"deleted_at":null,"solvers_count":680,"test_suite_updated_at":"2022-10-16T10:41:00.000Z","rescore_all_solutions":false,"group_id":2,"created_at":"2012-01-18T01:00:24.000Z","updated_at":"2026-04-08T23:48:54.000Z","published_at":"2012-01-18T01:00:24.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven a matrix A that represents the state of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://conwaylife.com/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eConway's game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e at one instant (time t=n), return the matrix B that represents the state of the game at the next instant (time t=n+1).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAssume a toroidal game board, so the edges of the matrix wrap left to right and top to bottom.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExamples:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ Input  A = [ 1   1   0   0\\n              0   1   0   0\\n              1   1   0   0\\n              0   0   0   0 ]\\n\\n Output B = [ 1   1   0   0\\n              0   0   1   0\\n              1   1   0   0\\n              0   0   0   0 ]\\n\\n Input  A = [ 0   1   1   0\\n              1   1   1   0\\n              0   0   1   0\\n              0   0   0   0 ]\\n\\n Output B = [ 1   0   1   1\\n              1   0   0   0\\n              0   0   1   1\\n              0   1   1   0 ]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":46706,"title":"Kaggle: Planetoid Game of Life - Total Score 0.10","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 482.167px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 241.083px; transform-origin: 407px 241.083px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 203.05px 7.91667px; transform-origin: 203.05px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGame of Life at Wolfram\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eWiki Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.467px 7.91667px; transform-origin: 138.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 379.783px 7.91667px; transform-origin: 379.783px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to Solve the 50K puzzles with a Score \u0026lt;= 0.10, Kaggle Top 25 result, per these revised Life Laws. Trivial solutions are where the Final state may match the Start State.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 51.0833px; transform-origin: 404px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 350.35px 7.91667px; transform-origin: 350.35px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e1. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 188.65px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 188.65px 7.91667px; \"\u003elive cell with fewer than two live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 115.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 115.5px 7.91667px; \"\u003eif caused by under-population.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 315.7px 7.91667px; transform-origin: 315.7px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e2. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 288.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 288.75px 7.91667px; \"\u003elive cell with two or three live neighbors lives on to the next generation.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 311.85px 7.91667px; transform-origin: 311.85px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e3. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 192.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 192.5px 7.91667px; \"\u003elive cell with more than three live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by overcrowding.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 361.9px 7.91667px; transform-origin: 361.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e4. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 242.55px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 242.55px 7.91667px; \"\u003edead cell with exactly three live neighbors becomes a live cell\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by reproduction.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 265.65px 7.91667px; transform-origin: 265.65px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 34.65px 7.91667px; transform-origin: 34.65px 7.91667px; \"\u003e5. Edges \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 231px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 231px 7.91667px; \"\u003ewrap around. Eight Neighbors. (Change to normal planar life)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 221.317px 7.91667px; transform-origin: 221.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 19.4333px 7.91667px; transform-origin: 19.4333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 254.75px 7.91667px; transform-origin: 254.75px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mtest) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 25.2667px 7.91667px; transform-origin: 25.2667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eOutput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 233.35px 7.91667px; transform-origin: 233.35px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mstart) the Starting state matrix of 50K puzzles, [casenumber, 625 values]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 39.9333px 7.91667px; transform-origin: 39.9333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eTop Scores:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 96.8667px 7.91667px; transform-origin: 96.8667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e Zapor: 0.0818, 2556293 errors\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 105px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 52.5px; text-align: left; transform-origin: 384px 52.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 15.95px 7.91667px; transform-origin: 15.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eHint:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 356.9px 7.91667px; transform-origin: 356.9px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e A Greedy Complete Single Adjacent bit flip can score \u0026lt;.0.09. Non-optimized processing time for Greedy Complete was 25Ksec. Candidate bits to flip are all wrap-convolve of Goal matrix with kernel ones(3). First test for trivial solution. Process all  bit flips on current optimal solution starting with Goal matrix. Make first best scoring solution the new optimal solution. Iterate on optimal solutions until no improvement on any single candidate bit flip. Greedy Complete for iterations=1 creates 176 solves not counting the 532 Trivial iteration 1 cases.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function mstart = solveLife(mtest)\r\n  %mstart=zeros(50000,626);  column 1 values should range from 50000:99999, other columns 0/1\r\n  urlname='';\r\n  urlwrite(urlname,'mstart.mat')\r\n  load('mstart.mat'); \r\n  \r\n  %Processing to \u003c0.10 Score is unlikely in Cody's 60 seconds\r\n  %Process offline mtest.mat file below.\r\n  %Create an mstart.mat file   using save('mstart.mat','mstart')  about 5.6MB\r\n  %Post the mstart.mat file in the cloud to download\r\n  %Copy the link location into urlname=''; above\r\n  \r\n  %Source data arrray to process mtest\r\n  %fname='https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\n  %urlwrite(fname,'mtest.mat') %1.22s\r\n  %load('mtest.mat'); %0.42s\r\nend","test_suite":"%%\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\n%mtest format is [casenumer, iterations, start1:625,finish1:625] for 50K cases 0:49999\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtrain.mat?attredirects=0\u0026d=1';\r\nfname='https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\nurlwrite(fname,'mtest.mat') %1.22s\r\nload('mtest.mat'); %0.42s\r\n\r\ncerr=zeros(50000,1);\r\nfor i=1:50000\r\n cerr(i)=nnz(mtest(i,3:end));\r\nend\r\n\r\ntic\r\nmstart = solveLife(mtest);\r\ntoc\r\nmstart=unique(mstart,'rows'); % remove exact duplicate solutions\r\n\r\n%Calc errors for each case submitted, otherwise use 0 input errors\r\ntic\r\nfor i=1:size(mstart,1)  % \r\n icase=mstart(i,1); %50000:99999\r\n Abase=reshape(mtest(icase-49999,3:end),25,25);;\r\n iter=mtest(icase-49999,2); %Test cases start at 50000\r\n \r\n A=reshape(mstart(i,2:end),25,25);\r\n \r\n for j=1:iter\r\n  C=0;\r\n  for r=-1:1 % -1 Up   Using circshift to perform wrap convolution\r\n   Ar=circshift(A,r,1);\r\n   for c=-1:1 % -1 Left\r\n     Arc=circshift(Ar,c,2);\r\n     C=C+Arc;\r\n   end\r\n  end\r\n  A = C==3 | A\u0026C==4;\r\n end %j\r\n cerr(icase-49999)=nnz(Abase-A);\r\n \r\nend %main loop i\r\ntoc  % 4.5s\r\n\r\nScore=sum(cerr)/50000/625;\r\nfprintf('Score %.4f  Total Errors: %i\\n',Score,sum(cerr));\r\n\r\nassert(Score\u003c=0.10)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-10-07T15:47:15.000Z","updated_at":"2020-10-07T16:39:36.000Z","published_at":"2020-10-07T16:39:36.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to Solve the 50K puzzles with a Score \u0026lt;= 0.10, Kaggle Top 25 result, per these revised Life Laws. Trivial solutions are where the Final state may match the Start State.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. Edges wrap around. Eight Neighbors. (Change to normal planar life)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mtest) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mstart) the Starting state matrix of 50K puzzles, [casenumber, 625 values]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eTop Scores:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Zapor: 0.0818, 2556293 errors\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHint:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e A Greedy Complete Single Adjacent bit flip can score \u0026lt;.0.09. Non-optimized processing time for Greedy Complete was 25Ksec. Candidate bits to flip are all wrap-convolve of Goal matrix with kernel ones(3). First test for trivial solution. Process all  bit flips on current optimal solution starting with Goal matrix. Make first best scoring solution the new optimal solution. Iterate on optimal solutions until no improvement on any single candidate bit flip. Greedy Complete for iterations=1 creates 176 solves not counting the 532 Trivial iteration 1 cases.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":58892,"title":"Neural Net: Calculate Perceptron","description":"This challenge is to calculate the Neural Net Perceptron value,P, given X, WH, and WP using ReLU on the hidden layer. This example is for two inputs, two hidden nodes, and a single output. No offset terms are applied.\r\n \r\nThe function template includes the code to create this figure using Matlab Latex","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 626.85px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 313.425px; transform-origin: 407px 313.425px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 375.5px 8px; transform-origin: 375.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis challenge is to calculate the Neural Net Perceptron value,P, given X, WH, and WP using ReLU on the hidden layer. This example is for two inputs, two hidden nodes, and a single output. No offset terms are applied.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 545.85px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 272.925px; text-align: left; transform-origin: 384px 272.925px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/png;base64,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Jye7Xas0912fyqMuPZbZMMJQjys3GXp6UpS9+84+cEkv9FUxARpHyMRlaDABTkpLS3Nyck6cODFr1qwHHnhgxowZDz744DXXXKN2uSAict999ykN4r///e8iMnny5IyMjLZMJPvcc88dP37c9+379++vvHBtss+bN++NN95QXtuHF9o99thjzz77bKv7r6ioaGhoEM9P5dm9e7dobOiHHstsJGGox70/C8qeY+0lARCBmPgHl2m1wZSamioiX331lVMINHCDSe8qKioWL15cWVlZX1+fl5dXXV19zTXXrFmzxpe1kcPL95CVlVVfX69MlWGnl1l8Da9bt26//OUv165d+8orr/zrX/8aMGBATk5OW3Y4d+5ci8Xi+3RBynSU4nLO/PDDD+Pi4pQJilzXFhcX9+3b13WooSvlulur9xd4umynCj2W2UhCXY/bn/ro6TSo9HP27NnTPm8tfOSlJqKyhu4QMnEZGkzG079//3Xr1gW2NnJ4+R6++eabMBcGfpk9e/batWvr6+ubmpqeeOKJNu4tOjq6a9euvm9vMpnMZrPVanUamrho0aJ169ZFRUWZTCabzdbY2Oi49oknnvDxOXvKvJSjR492exOdNu8v0GOZjSQ89Xi3bt3cblxaWlpWViYizMIdAC81EZU1dIeQicvQYAKgL7fccsv1119/9OhR1+F/vjh69OigQYOefPJJ5W6rG264QXmMwbFjx7Kzs0eOHPm3v/3N+x46dOjQ0NBQW1trX5Kbm5uVlaU8Zy8qKqqpqcmxQf/3v/998uTJPj5nr6ioSEQKCwu7d+/uuva7774TP+8veOedd+655x4fN7bLy8vz/TbXoJcZfgl1PW5/6qPrqmPHjt1xxx3R0dH5+fmMSAIiHCETzmgwAdCRNWvWKBM2lpeXHzhwYPDgwX69/brrrps5c+b8+fO3bt2an58fExMTHR2dm5s7Z86cPn36/PKXv2x1D3379t2/f799QHVTU9Pbb7+tnOtEpGvXrk1NTQcPHlR+bGxsXLt2retjM92qqKg4c+aMiOzbty8hIcF1g0mTJq1fv96v1vxtt9127bXX+r69wt791apQlBn+Cmk9rtyQGRMTY/9PrkTWgoKCvLy8adOmLV68ODY21vtOqLsBwyNkwhkNJgB6UVhY+PLLLx89ejQuLq6xsfGVV17xN2R26NDhhRdeWLBgwUsvvTRy5EiLxfLcc899++23mzdv9vEhKN26dROR77//Xvnxqaeemj9/vn3tDTfcUFVVdfbsWeXHpUuX+j6mVxmXGB0d7faEKRf7lPw6Z5rN5pEjR/q+vb9CUWb4K3T1uP2GzOrqascbAq+55pq0tLTnn3/ex6RK3Q0YHiETzmgwAdCF0tLSJUuWbN269corr5w5c+Zf/vKX119/fdmyZUp3jV9iYmLmzp1rtVqffvppm8326quv+t6cVW6BU86Kx48f//zzz5988kn7WuV5Ekqv0fHjx48fP+77KUtp96enp7tde+DAAWW3mpqGSo9lNp5Q1+MWi2XdunWtPunEC+puwPB4hAmcuTaYHC/nR1qDCYA2HTp0aNasWRs2bOjSpYuIPPDAAyJitVpfffVVf3dVV1e3cOHCuLi4c+fO3XbbbY8//vjUqVNvueUWe8+Pdz/72c/k4llx/vz5zzzzjOPaK664Qi6eUR999NFly5b5XjClAJ6eRrhv3z7R3s2Neiyz8YSuHrffkNmWhAkgEtCTCWd+NZief/553/dM4wNAUJw8eXLatGkFBQVKj42I9O7dOzk5edeuXStXrvTrgelHjhy58cYbO3Xq9P7776ekpIwbN+6qq646fPjwzJkzx4wZM3v27Jdeesn7Hjp27CgilZWVxcXF8fHxTlNuKg36urq63bt3DxgwoEePHr4XTLm/wNMDn7w/q9CT0tLSF1980a+3iMhDDz3kS9duiMoMf4WuHld+g8OHDw9iaQEYEiETzmgwAdCympqazMzM/Pz8+Ph4x+WPPPLIrl27Kisri4qKfD+T9O7d+/e///2sWbNiYmJE5LPPPmtubo6Ojn777bczMjJ8uW1s0KBBInL69OklS5asX7/eaW3fvn1F5PPPP1+yZImPs3cq9uzZI17vL1Ae+OTvOTM+Pj4jI8Ovtyjv8mWzEJUZ/gpRPW6/IbPtI12puwHDI2TCGQ0mAJp18uTJ5OTk1atX2584b5eZmRkfH19VVfXcc8/5fiaxWCyON6TV1tY2NDQor6dOnerLHpShiQ0NDdnZ2a63gyp9rWfOnJk6daqPc6IovN9fYH/gk7/3F8THx//617/26y2+C1GZ4a8Q1ePKDZlms7ntv0HqbsDwCJlwRoMpMMePH9+7d6/Twj59+iQmJopIZWVlaWmpp7UiUlFR8fHHHzuuTU1NjYuLc1xy6NChw4cPux561KhRPXr0sNlsb731luvaq6++OoC6PET4lhCwU6dOvfnmm08//bTVah04cKDrBg0NDT//+c+rqqoKCwt3797taWS+d1FRUVar1a+3KGfC/v37z5o1y3Wt0muUkJAwffp03/dZU1Ozfft2Ebnhhhtc19pstjfffFNEzGZznz59/Cpt6OixzEYVono8iDdkaqfulrBUTEeOHDlw4ICnAphMpquuuiotLc1splkO4+B/M5zRYArM119/XVZWtnPnzmPHjolIcnJy37597feXVldXl5WVFRUVKXPKK2sdP2x1dXVRUdG6deuam5sTEhKSkpLGjh3rdIh///vfBw8erKury8vLE5F+/foNHz78uuuuU+p7q9VaXV1dVVW1bdu2L7/80mQyTZkypWvXrq77URHfEgJQWlo6atQox+zXqVOnPXv2OF6TmjFjxuuvv26z2UTEZrMlJycrv1y31xS8qK+v97cBbbFYROSFF15wu1Zp7v/1r3/1cW/du3evq6uzf9jFixf/8Y9/jImJOX36tIi89NJLc+fObWlpUdZardb27dubzeY333zzjjvu8KvYQaTHMhtbKOrxuro65WKx8boTw1AxffPNN59++ml9ff3rr78uIsOGDcvIyFAmLTtx4kRNTU1hYeH3338/b968BQsWhOdTAyF3HpHEl9/7Bx98ICI7duxwu3br1q0iUlJS4uMRY2Njna7Mmc3m2NhYZe2LL76otM/sTCaTxWJZu3atX58rpJSPvHXrVl82VtKyyWRyu1apXSwWi6e3T5s27cEHH/R+iE8++UT5rj777DO3G9x2220icvvtt/tSYFVE1LckIq2WFrpWXV399NNPe1r71VdfLVu2LJzlAYJbj/fu3du1Hr/yyiuDV96Q8KvuPh+Wiumrr75SvsAvvvjCadXZs2eVGStmz57tY4F9RzVE6lEFM1DD2YABA55++mlPTyEfMGDAsmXLfB/Uevr06R9++MHx/9wPP/ygXN4WkTlz5pw7d85x7Y8//nju3Dn9Xt5WrhDbbDa3I+6UtfYr+k4aGxtPnz7d6lSWyt2tnTt37tevn9sNtD+1Bt8SjCQuLu4Pf/iDp7Xx8fF+zXYLtF1w6/EvvvjCtR7/z3/+8//bu9vYKsv7D+CXtZaK9W8GAQZNNS6OJqN0ErZExwKyzW5hCwm4wURg82Fkk7q9QJ10ZiI43DKjKBqnbBVhPElChgbmHDhkWlwkc5u1uFobsvIwVslYVwtKV/8v7njSnD4dytWHUz6fV+ec6/Tu1YuHX7/nvn/3FW++g0I/FKakqbWwsDDtVkzJ8cvLy0MIjz766OHDh898+jDoCJmk8wvT2UjqUAghaTFNU1NTkzxI7iyfZsWKFRUVFT1eqpfchreryztT3a3Tpk3LeNb9zSoB9B11vBf6oTAlTa1dtYunThenrsSBrCZkQkwjRoxIHnRs8W9oaKisrEweHzx4MG20vr6+tra2qw+e20u6W6dPn97paPJB6SDfbtQqATCo9ENh6n6rtlSOTc0EspqQCTGltlXo+GHn0qVL165dmzxONWak3HHHHT//+c97PH51dXWyv0JX243u2bMnDPqrQK0SAINKXxem1C6jXV2onJznvPzyy1P3rYWsJmRCTMmdJEOHKvXqq68WFhamdpFOG927d29xcXHHJo2OklNwPbYadnUGb5CwSgAMKv1TmMaMGdPpm6uqqvbt2xdCePLJJ3s1fRh0bGECMeXk5OTm5ra2tqY1ddxzzz1bt27Nz8/Pyclpa2trbm5uP7ps2bIMd8RO7iD/pS99qdPbD2RLq6FVAmBQ6evClNpltONQbW3tnDlzCgoKNm3a5BIbhgwhEyIbPnx4U1PTsWPHUq9UVlbOnDkz2RE7Pz+/paWl/UehTzzxxNy5czPcEXvXrl0hhOeff37cuHEdR//73/+GLGk1tEoADCp9WpiShsxRo0YlFSqEkETWnTt3btiwYcGCBffee+/YsWNj/jwwoIRMiKy4uPi1115Ldm0OIbS0tGzcuDFVVEaOHNnS0vL6668nT5ubm7ds2ZKceetRdXX1iRMnQgivvPJKaWlpxzdcd91127Zt6/g56LFjxx5//PG6urpLL7103rx5qc6T9mpra3fv3v29730vs5/ybGXXKmWygABktb4rTKmGzEOHDm3evDn1+ujRo8vKylatWpVKqj2Wm34u1tBrejIhsjFjxoQQTp48mTxduXJlRUVFanTChAkhhPfeey95umLFimXLlmV45KSjo6CgoNPsFD66GictPtXU1CxduvQ73/nOunXrPvGJT0ycOPGxxx5LjTY0NPz0pz9duHDhpEmTkoaQ/pFFq9T9AgIwNPR1YcrLy9u6desv21m5cmVyoWzytm7KzUAVa+g1IRMiS24ekNSh+vr6AwcOtO/BSHbiSq63qa+vr6+vnzp1aoZHTj4x/cpXvtLp6P79+5PDpt25rry8fMWKFYWFhTk5Obfccsutt95aXl5eXV2dmu3Xvva1tWvXXnjhhWf4g56VLFql7hcQgKGh7wpTqiGz+700uyk3A1WsodeETIjsoosuCh/VoYqKip/97GftR5PykNSwJUuWPPDAA5kfOblop6t9nF955ZXQWavhSy+99OlPfzr19Nprrw0h/OY3v0mejho1qqSkpMctpKPLolXqfgEBGBr6rjAlDZlTpkzp/m3dlJuBKtbQa3oyIbKLL744hFBXV7d3796ioqK0m5UnH4U2Njbu2bNn4sSJl112WYaHrampSVoNu9r7satdnm+88caOZamtrS3D79tHsmiVBucCAhBXHxWmVENmj2c+lRuGEiETIps0aVII4ciRI8uXL9+2bVvaaHFxcQjhwIEDy5cvz/C+54mXXnopdNtqmOz92DE+/fKXv2z/dP/+/SGEGTNmZP6t+0IWrdLgXEAA4uqjwpQ0ZObm5qa1aXSk3DCUCJkQWdLU0dTUNGvWrOS+5+0l9xU4ceLE/PnzM7zveaL7VsPU3o/d17CmpqZf/OIXN95442c+85nMv3VfyNJVGjwLeK5Zt25dxxenTZuWdjLh6NGjv//979u/Mn78+KuuuiruZOrr619++eW0F1PfqK6urqqqqqvREEJ1dfWf//zn9qNf/OIXCwsLU09ramqSXy47lZOTM2LEiLKystzcga/gWTRV6FEfFaYMGzLTKDdkO//vQ2RJ7SkpKVm8eHHH0eR6m9LS0ptuuinzYx49evSFF14IH93dLk1bW9v69etDCLm5uePHj+/mON/97nenTJny5JNPZv6t+0iWrtLgWcDxYt3aAAANLElEQVRzSmtra21t7T//+c9nn322sbExhFBWVlZSUjJt2rS0d548efLFF198+umnQwilpaWf/exn0y54i+Jf//rXvn37Xnzxxdra2hDC9OnTi4uLU12+hw4d2rdv365du5KNEJLR9n/lDh06tGvXrq1bt546daq0tPSaa6758pe/3P7477777htvvHH8+PGnnnoqhHD11VfPmDHjYx/7WAjh4MGDR48eff7550+ePLl06dK77747+k93RrJoqtCjvihMjY2NyaefRUVFZzQZ5Yas9yHnEn/uvbBjx44Qwo4dOzJ8/29/+9sQwu7du7s52h//+McMjzZ27Ni0kwC5ubljx45NRh955JG8vLz2ozk5OXl5eVu2bOl4qJ/85Cc333xzV99o5MiRCxYsyHBWZy8bV6n7BexKCOHWW28906+iU0mSCSH84Q9/6Oo977zzTn5+/tNPP93Xk0k+s8jJyel0NJlqXl5eV1++YMGC7v9i/OMf/0h+2Lfffjtt6L333ku6jsvLy3sx8+iyaKqcO860dn8YuzBdccUVHQvT//3f/2Xytd2Um14Ua2XIb78Dwl2qILKJEyfef//97e97njb6wAMP9NiYkXLkyJHTp0+3/0d7+vTpI0eOJKO33Xbb+++/3370f//73/vvvz9nzpy041RWVp46dSrp92hraxvwHTiybpUG2wKem+bNm5f80tbp1bMhhA8++ODb3/729u3bFy5c2NeTSU5rtLW1tba2djX6wQcfdPq1zc3NR44cWb16dTfHT/q4CgsLO56MHT58eHl5eQjh0UcfPXz4cK+mH1MWTRW6Ebcwvf322x0L03/+858ev1C5YWgQMiGywsLCu+66q6vRoqKiJUuW9Od8Qgg7d+48fvz48uXLk6dvvfXWgBet7FqlQbiA56a8vLzrr78+hLBp06ZO89v1119/yy23lJWV9cNkkhgZQkgafdPU1NQkD5LtENKsWLGioqKi+watpI+rq814UmdI/vrXv2Y64z6TRVOFbgyGwqTcMGToyYQhrqqq6gc/+EFZWdnixYvb2tpOnz5dV1f34x//eKDnNbh0s0oWcFBZuHDh+vXrT506tXnz5rTTlUuWLJkwYUI/nMNMjBgxInmwf//+tFMfDQ0NlZWVyeODBw+mbcpaX19fW1ubtgVfR11tt5NIhdjUNAZQFk0VBjPlhiEl9vW3DGr+3HuhF30dg8rIkSM7/sNPXT76xhtvfP3rX7/yyitDCDk5OdOnT587d+7ATnhAdLNK3S9gj8I53wwTXXKPx7KysvYvrlmz5mz+6j744IPvvPPOGX1Jsid7p/853HDDDbt3705Gf/e736WNzp49u2PvYppuuhwTV199dQjh8ssvP6M594UsmirnlGys3d2Um7Mp1sqQ334HhDOZMMS9++673YyWlJRs3bq13yYzaHWzSt0vIP3vhhtuePDBB3ft2nXs2LEkcL7wwgvr1q1LbuHYO7fffnteXl6nt5TsSrLbQehwQeyrr75aWFj4uc99rtPRvXv3FhcX93jP26TLccyYMZ2+s6qqat++fSGEwXDnySyaKgxy3ZQbxZqsoycTgGzyrW99K4TQ1tb261//OoTwl7/8ZenSpdu3bz+bzRgLCgo6PYfQjZycnOQ7pvVk3nPPPT/60Y/y8/OTlsvm5ub2o8uWLauoqOjx4KmN9ToO1dbWzpkzp6Cg4LnnnuvqCtX+lEVTBaDfOJMJQDYpLS0tKSmprq5eu3btvHnzFixYsHPnzmRvxsy99dZbkyZNuu+++5I7eUyYMCHZIq+2tnbWrFlTp059/PHHezzI8OHDm5qajh07lnqlsrJy5syZyTbu+fn5LS0t7c9kPvHEE3Pnzs1kG/eky3HUqFG7du1KXmlra2tubt65c+eGDRsWLFhw7733jh07tsfjPPPMMzfffHOPb0uzYcOGmTNnZvjmWFMFYCgRMgHIMgsXLrzzzjurq6vLysrWrFlzpruchxAuvfTSRYsWVVRU7NixY9OmTaNGjSooKKisrLztttvGjx//jW98I5ODFBcXv/baa3V1dcnTlpaWjRs3prLWyJEjW1paXn/99eRpc3Pzli1bMrmmt6GhoaGhIYRw6NChzZs3p14fPXp0WVnZqlWrMompidmzZ3/84x/P8M0pqWt9+3OqAAwlQiZkZO7cucOGDUs9HTly5N///vcBnA+D0+LFi7ds2TLQsxj6vvnNb955550hhDvuuOOqq67qxRGGDx/+8MMP33333atXr546dWpeXt5DDz3073//+7nnnutql7yOko7QkydPJk9XrlzZ/lLYCRMmNDQ0pO4PtGLFimXLlmVy2KTLMS8vb+vWrd1vc9Kj3NzcqVOnns0RuhdxqtAXzsHarQwxSAiZ0INx48bNnTs37UUfz9OpT33qUx17zyZPnjwgkxnC3nzzzRBCbm7u/Pnzz+Y4o0aNuv3221tbW++///62trY1a9ZkfhIvfHTvnyRG1tfXHzhw4L777kuNJhtpJpfL1tfX19fXZ5j3Ul2Ogz+2ZdFUOdecs7VbGWKQEDKhB1deeWX7y8CgG4sXLz6jO5TSOy+//HIIYdq0aWeTbRobG1evXv3QQw8tWrRo9uzZ11133fz588eNG7ds2bIM71Jz0UUXhY9iZEVFRdrWlxdeeGH4KIIuWbJk1apVGU4s6XKcMmXKmfw0AyOLpsq55pyt3coQg4SQCUCWqaqqCiGczYWgNTU1kydPvuSSS7Zv3/6FL3zhq1/96ogRI/72t78tWrTo2muvLS8vX716dY8Hufjii0MIdXV1e/fuLSoqStvDIzmT2djYuGfPnokTJ1522WWZTCzV5RjlMteqqqpHHnnkTL/q+9//fiZndONOFYChRMgEIJu0trYmrYCf//zne32QK6644oc//OHixYtHjRoVQnjzzTdPnTpVUFCwcePGGTNmZHiznEmTJoUQjhw5snz58m3btqWNFhcXhxAOHDiwfPnyZ599NsOJJT9abm7u2fx0KUVFRTNmzOjFV2XytrhTBWAoETIByCZ79uxpbW3Nzc295ppren2QvLy89rfhOXbsWFNTU/I48z7PpCezqalp1qxZybYl7SW3BTpx4sT8+fMz7wSL2+VYVFS0cOHCsz9OpzRkAtAVhQGArNHW1rZx48YQwuTJkyNmm/z8/NbW1jP9qiQ6lpSUdNoBlVwuW1paetNNN2V4wMbGxmSPk15sytLPsmiqAPQ/IROALFBRUTFs2LDzzz//qaeeCiH86U9/Ov/884cNG5bce+YsHT9+PPMomJKXlxdCePjhhzsdTc5zPvbYY5kc6pOf/OQFF1wwevToo0ePhhB+9atfXXDBBZdccsmZTqkfZNFUARgo53344YcDPQf6z3nnnZc88OcOcJYOHz68fv36u+66q9PRhoaGZ555ZsmSJf08KwDa89vvgBAyzy3+mQEAcO7w2++AcLksAAAA0QiZAAAARCNkAgAAEI2QCQAAQDRCJgAAANEImQAAAEQjZAIAABCNkAkAAEA0QiYAAADRCJkAAABEI2QCAAAQjZAJAABANEImAAAA0QiZAAAARCNkAgAAEI2QCQAAQDRCJgAAANEImQAAAEQjZAIAABCNkAkAAEA0QiYAAADRCJkAAABEI2QCAAAQjZAJAABANEImAAAA0eQO9AQYGOedd95ATwEAABiCnMk8t3z44YcDPQUAAGAoO0/qAAAAIBZnMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiOb/ATR5Wtu1QDvSAAAAAElFTkSuQmCC\" data-image-state=\"image-loaded\"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250px 8px; transform-origin: 250px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function template includes the code to create this figure using Matlab Latex\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function P=Calc_Perceptron(X,WH,WP)\r\n%The P value in this case is a single value\r\n%No ReLU,Softmax, or Sigmoid applied to the output P\r\n  P=0;\r\nend\r\n\r\n%The figure was generated using Matlab and Latex\r\n%{\r\nfunction perceptron\r\n% put figure code into cody\r\nfigure(1);clf;\r\nplot([0;140;140;0;0],[-5;-5;100;100;-5],'k','linewidth',2);hold on\r\nxticks([]);yticks([]); %Tciks/Labels off\r\n\r\naxis equal;\r\naxis tight\r\n\r\n\r\nr = 10;\r\nphi = 0:0.01:2*pi;\r\ncxA = r*cos(phi);\r\ncyA = r*sin(phi);\r\n\r\nrxA=[0 2*r 2*r   0 0]';\r\nryA=[0   0 2*r 2*r 0]';\r\n\r\npatch(cxA+10,cyA+80,'y');text(10-2,80,'X_{1}','Fontsize',20);\r\npatch(cxA+10,cyA+20,'y');text(10-2,20,'X_{2}','Fontsize',20);\r\n\r\npatch(cxA+80,cyA+80,'y');text(80-6,94,'H_{1}','Fontsize',20);text(80-8,80,'\\Sigma','Fontsize',30);\r\npatch(cxA+80,cyA+20,'y');text(80-6,34,'H_{2}','Fontsize',20);text(80-8,20,'\\Sigma','Fontsize',30);\r\n\r\npatch(cxA+130,cyA+50,'y');text(130-2,50,'P','Fontsize',20);\r\n\r\npatch(rxA+80,ryA+70,'y');text(85,80,'ReLU','Fontsize',20);text(102,88,'Y_{1}','Fontsize',20);\r\npatch(rxA+80,ryA+10,'y');text(85,20,'ReLU','Fontsize',20);text(102,32,'Y_{2}','Fontsize',20);\r\n\r\nquiver(20,20,55,0,'k','LineWidth',3.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\nquiver(20,80,55,0,'k','LineWidth',3.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\nquiver(20,20,58.5,58.5,'k','LineWidth',3.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\nquiver(20,80,58.5,-58.5,'k','LineWidth',3.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\n\r\nquiver(100,20,25,25,'k','LineWidth',3.5,'MaxHeadSize',.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\nquiver(100,80,25,-25,'k','LineWidth',3.5,'MaxHeadSize',.5); % line arrowhead x,y,dx,dy,  VectorLine draw\r\n\r\ntext(40,85,'WH_{11}','Fontsize',20);\r\ntext(20,65,'WH_{12}','Fontsize',20);\r\ntext(40,25,'WH_{22}','Fontsize',20);\r\ntext(20,38,'WH_{21}','Fontsize',20);\r\n\r\ntext(115,68,'WP_{11}','Fontsize',20);\r\ntext(115,28,'WP_{21}','Fontsize',20);\r\n\r\nstr='$$ X=\\left[\\matrix{ X_{1} \u0026 X_{2}} \\right]  $$'; %valid\r\ntext(1,50,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ WH=\\left[\\matrix{ WH_{11} \u0026 WH_{12}\\cr WH_{21} \u0026 WH_{22} } \\right]  $$'; %valid\r\ntext(1,5,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ H=\\left[\\matrix{ H_{1} \u0026 H_{2}} \\right]  $$'; %valid\r\ntext(75,65,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ ReLU(H)=Y  $$'; %valid\r\ntext(75,58,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ Y=\\left[\\matrix{ Y_{1} \u0026 Y_{2}} \\right]  $$'; %valid\r\ntext(75,51,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ X*WH=H  $$'; %valid\r\ntext(60,5,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ Y*WP=P  $$'; %valid\r\ntext(60,0,str,'Interpreter','latex','Fontsize',20);\r\n\r\nstr='$$ WP=\\left[\\matrix{ WP_{11}\\cr WP_{21} } \\right]  $$'; %valid\r\ntext(100,5,str,'Interpreter','latex','Fontsize',20);\r\n\r\n\r\n\r\nend % Perceptron \r\n%}\r\n","test_suite":"%%\r\nX=[1 2]; WH=[1 2;3 4];WP=[.5; -1];\r\nP=Calc_Perceptron(X,WH,WP);\r\nPexp=-6.5;\r\nvalid=isequal(P,Pexp);\r\nassert(valid)\r\n%%\r\nX=[3 1.5]; WH=[1 -3;3 4];WP=[1; 2];\r\nP=Calc_Perceptron(X,WH,WP);\r\nPexp=7.5;\r\nvalid=isequal(P,Pexp);\r\nassert(valid)\r\n%%\r\nX=[-.5 .5]; WH=[4 2;1 4];WP=[.1; .4];\r\nP=Calc_Perceptron(X,WH,WP);\r\nPexp=0.4;\r\nvalid=isequal(P,Pexp);\r\nassert(valid)\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":3097,"edited_at":"2023-08-20T22:48:06.000Z","deleted_by":null,"deleted_at":null,"solvers_count":13,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2023-08-20T22:16:25.000Z","updated_at":"2026-03-30T12:52:26.000Z","published_at":"2023-08-20T22:48:07.000Z","restored_at":null,"restored_by":null,"spam":null,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis challenge is to calculate the Neural Net Perceptron value,P, given X, WH, and WP using ReLU on the hidden layer. This example is for two inputs, two hidden nodes, and a single output. No offset terms are applied.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"864\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"1228\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"baseline\\\"/\u003e\u003cw:attr w:name=\\\"altText\\\" w:val=\\\"\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId1\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function template includes the code to create this figure using Matlab Latex\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.png\",\"relationshipId\":\"rId1\"}]},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABMwAAANgCAIAAABfr2MvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH5wgUFiY7QuC/UQAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyMC1BdWctMjAyMyAxNTozODo1OSs8RnAAACAASURBVHic7N17fBT1vf/xT/axJyfmBAuPGBF5BKoPmlKMES0oKhhIQgwhRC5WBLkU5HiDgtRLL1hr9Wh7qvIo1nqDcrgYAyhXNYYY7gREQAIEGvmlFAwxYhrFGDHEdff3x8Cy7C17mZ3Lzuv54I+wM7vzGcLOzHu+l0lwuVwCAAAAAIAabHoXAAAAAACIH4RMAAAAAIBqCJkAAAAAANUQMgEAAAAAqiFkAgAAAABUQ8gEAAAAAKiGkAkAAAAAUA0hEwAAAACgGkImAAAAAEA1hEwAAAAAgGoImQAAAAAA1RAyAQAAAACqIWQCAAAAAFRDyAQAAAAAqIaQCQAAAABQDSETAAAAAKAaQiYAAAAAQDWETAAAAACAagiZAAAAAADVEDIBAAAAAKohZAIAAAAAVEPIBAAAAACohpAJAAAAAFANIRMAAAAAoBpCJgAAAABANYRMAAAAAIBqCJkAAAAAANUQMgEAAAAAqiFkAgAAAABUQ8gEAAAAAKiGkAkAAAAAUA0hEwAAAACgGkImAAAAAEA1hEwAAAAAgGoImQAAAAAA1RAyAQAAAACqIWQCAAAAAFRDyAQAAAAAqIaQCQAAAABQDSETAAAAAKAaQiYAAAAAQDWETAAAAACAagiZAAAAAADVEDIBAAAAAKohZAIAAAAAVEPIBAAAAACohpAJAAAAAFANIRMAAAAAoBpCJgAAAABANYRMAAAAAIBqCJkAAAAAANUQMgEAAAAAqiFkAgAAAABUQ8gEAAAAAKiGkAkAAAAAUA0hEwAAAACgGkImAAAAAEA1hEwAAAAAgGoImQAAAAAA1RAyAQAAAACqIWQCAAAAAFRDyAQAAAAAqIaQCQAAAABQjV3vAqCphIQEvUsAAAAAtOZyufQuwUJoyQQAAAAAqIaWTIviXg4AAADiHv34dEFLJgAAAABANYRMAAAAAIBqCJkAAAAAANUQMgEAAAAAqiFkAgAAAABUQ8gEAAAAAKiGkAkAAAAAUA0hEwAAAACgGkImAAAAAEA1hEwAAAAAgGoImQAAAAAA1RAyAQAAAACqIWQCAAAAAFRDyAQAAAAAqIaQCQAAAABQDSETAAAAAKAaQiYAAAAAQDWETAAAAACAagiZAAAAAADVEDIBAAAAAKohZAIAAAAAVEPIBAAAAACohpAJAAAAAFCNXe8CAABA5MrLy9va2i677LIBAwYEWqepqamqqkpEbrjhhm7dumlYHQDAihJcLpfeNUA7CQkJyg/83gEgPlx++eWNjY0jR45cvXp1oHUqKyuHDh0qIqtXrx45cqSG1QGAzrj61QXdZQEAAAAAqiFkAgAAAABUQ8gEAAAAAKiGkAkAAAAAUA0hEwAAAACgGkImAAAAAEA1PCcTAADTa2hoWLZsWaClNTU1WhYDALA4QiYAAKa3e/fucePG6V0FAAAihEwAAOJAYmJip06dAi09c+ZMa2urlvUAAKyMkAkAgOkVFhauXr060NLKysqhQ4dqWQ8AwMqY+AcAAAAAoBpCJgAAAABANYRMAAAAAIBqCJkAAAAAANUQMgEAAAAAqiFkAgAAcTqdDodD7yoAAPGAkAkAAGTEiBEFBQV6VwEAiAeETAAArG727NllZWV6VwEAiBN2vQsAAACR+/TTTztcJy8vz+Vy+V3U0tIyZcqUVatWqV0XAMC6aMkEAMCiVqxYkZGRsWrVqokTJ+pdCwAgfhAyAQCwqNLS0uTk5LVr1y5ZskTvWgAA8YPusgAAWNScOXOuu+46m407zgAANREyAQCwqH79+uldAgAgDnHzEgAAAACgGkImAAAAAEA1hEwAAAAAgGoImQAAAAAA1RAyAQAAAACqIWQCAAAAAFRDyAQAAAAAqIaQCQAAAABQjV3vAgAAgP5cLpfeJQAA4gQtmQAAAAAA1RAyAQAAAACqIWQCAAAAAFRDyAQAAAAAqIaQCQAAAABQDSETAAAAAKAaHmECAABgCZs3bz516pSI3HjjjV27dg2y5smTJ3fu3Ckil19++fXXX69RfQDiBSETAADAEk6cODFx4kQRKSwsfPfdd4OsOXXq1LKyMpvNVlVVpVV1AOJHAg9ftpSEhATlB+P/3t2lRsz4+wgABhT94RfaC/2UN2rUqDVr1ojI0qVLJ0yY4HedJUuWTJ48WUR+97vfPfnkk2oVCejCRFe/8YSQaS1G/pp5XdZEX6DXZZIBdxkADMLzCNzhwTIhQYVDNFSUkBDGOa6pqeknP/lJc3Nz586da2trfTvNNjU1ZWRknDp1qm/fvnv37rXZmL8D5mbkq984xoEDOks4x+USzz/R8/rABA8qfDoAmJznUVHdwy+MLC0t7aWXXhKRU6dOzZgxw3eF++6779SpU4mJicuXLydhAogMxw7ow/fKJtb8Bs6YbxUADIZgiTvuuGP06NEi8tZbb61atcpz0YoVK5RXnnvuuYyMDH3qA2B+dJe1Ft07DHgUoMv2vSnl8C0AEPdUPPzSXdZowuouq2hqarrqqquamprS0tI+/vjjLl26iEhzc/NPfvKTpqam3NzcysrK2BQLaE33q19roiUTGtG43TJENGwCiHvGPPxCX2lpaS+++KKINDU1PfLII8qLs2bNampq6ty58+LFi3WtDoDp0ZJpLdrfyzFa02VwNGwCiCfKEVj1QxotmUYTQUum4mc/+9lbb70lIrt3725tbR0yZIiIlJaW3nnnnSqXCOiHlkxdEDKtReOvmXLv3HSImgDMLkbx8tyHEzKNJeKQ6e4f27dv37a2ttra2rFjxy5btkz1CgEdETJ1Qci0Fs2+ZjG9vtEGUROAGWlw+CVkGk3EIVNEVq1aNWbMGOXnbt26HTx4MDU1Vb3SAP0RMnXBmEyozHPwj6m5h2vqXQgAhCRuDr/Q0ujRo2+//Xbl50WLFpEwAaiCkAnVxOX1jXtaIL0LAYBg4u/wC83ceuutyg+DBw/WtRAA8cOudwGIEyYdfhkKZb8SEuhbDsCI4mB4AgAgzhAyoYI4Tphu7q6zRE0AxmGFwy8AwHQImYiKpe6g06QJwFBImAAAYyJkInLWvL5RmjTJmQB0ZKkbfAAA02HiH0TImglTwWxAAHTEHD/QndPpdDgcelcBwLgImYiElROmggecANAFh18YwYgRIwoKCvSuAoBxETIRNi5x3MiZALTE4RdGMHv27LKyMr2rAGBohEyEh0scL+RMANrg8IsYmTZtmsvlcrlciYmJwddsaWkZM2bMX/7yF20KA2BeTPyDUDHPRCBMBRRn9uzZc+LECZvNVlxc7HeFHTt2fP755yLSv3//7t27+65QX1+/d+9eESkoKEhKSiovL29ra7vssssGDBgQaKNNTU1VVVUicsMNN3Tr1k2dPUEcIWFCdytWrJg5c+bJkycnTpy4dOlSvcsBYGiETISBS5xAyJnxpKqq6sEHHxSRY8eO9ezZ02up0+kcOnTo6dOnRWTmzJnz5s3z/YRnnnnmlVdeSU5O/uabb0Rk6tSpjY2NI0eOXL16daCN7t+/f9SoUSKyevXqkSNHqrg7iAMkTBhBaWlpcnLy2rVri4uLCZkAgqO7LELCJU6H6DcbN3Jzc5Ufdu7c6bt069atSsIUkUCjkrZv3y4iI0aMiE2BsBYOvzCIOXPm1NXVBeriAQCeCJnoGJc4ISJnxofMzMy0tDQRqays9F1aUVEhIkOGDBGRurq6+vp6rxVaW1tramrc6wDR4PAL4+jXr5/NxnUjgJBwsEAHuMQJCzkzPuTk5IjIrl27fBetX79eRO65555evXqJv8ZMJYWKSGFhYWyrRLzj8AsAMClCJoLhEgfWpOTDw4cPt7W1eb5+8uTJjz76SERyc3Pz8/NFpLy83Ou9mzZtEpFevXqlp6drVC7iEYdfAIB5ETIREJc4kaExMw4owzKdTqdXj9kNGzaISFZWVlpa2tChQ0WkvLzc6XR6rrNjxw4R4THliAaHXwCAqREy4R+XONEgZ5pd9+7dld6w27Zt83x93bp1ci5AFhUV2Wy2tra2jRs3uldob2+vrq4Wj9mDAAAArIZHmAAxwUNNzG7IkCF1dXXK4y7d3nvvPRFR2jDtdnt2dvamTZvWr1+fl5enrKA0bNrt9qKiIq8PbGhoWLZsWaDNKXMFAcI9PgCA+REy4QeXOKogZ5paQUHB/Pnzt2zZ4nQ6lQkVP/jgg5aWlqSkJGVaIBEZNmzYpk2bKioqnn32WeWVqqoqERk0aJDd7n103b1797hx4zTcA5gSh18AQBwgZMIblziAiOTn59tsNofD8eGHHw4YMEDOzfFTUFDgnsRfeUjJgQMHGhsbu3XrJudCpjInkJfExMROnToF2tyZM2daW1tjsB8AAABaY0wmEEMMzjSvlJSU/v37i8eDTJRnk3gGyH79+qWmpsq5CYEcDsfOnTtFxN171lNhYeG/A1u9enXs9wlGxz0+AEB8IGTiAlziqI6caV5Kt9jt27eLSEtLixIgvWb0UfKk8rTMiooKp9PZuXPnfv366VAuTI7DL0zE5XJ5Tb4NAJ4ImTiPSxzAkxIylQspJUZeccUVGRkZnusUFxeLyNatW+Xcw0tuvfVW7UsFAAAwDkImEHM0ZppUTk6O3W4/derU8ePHlb6yvgFSadhsaGhoamravXu3iPjOKwt0iHt8AIB4QsjEWVziAF5sNpvSmLlr1y6lr6xvyOzatWvfvn1FZNu2bcoDM3lCJsLF4RcAEGcImYAWaMw0KfeQy9raWrvdXlhY6LuOMhVQaWmpw+HIyspSppkFAACwLEImRLiPDgSQnZ0tIiUlJSIyaNCgxMRE33WGDh0qImvWrBGRwYMHx64Yp9PpcDiiXweGwuEXABB/CJmARmjMNKPrr78+JSVFiW1+n34p54ZuKusMGzYsdsWMGDGioKAg+nUAAABiipAJ7qMDwQwfPlz5IVB4s9lsSjdau90eKIhGb/bs2coMt1GuA0Ph8AsAiEsJLs5vVuJuSfP8vXOVo6WEBOFLh7C0tLRMmTJl1apVIpKbm+v32XShrAMDMunhNyFBzFh2HOPMAgTh9+oXsUZLptWZ9BIHsIgVK1ZkZGSsWrVq4sSJ0awDAACgGUImoClGZiIspaWlycnJa9euXbJkSTTrwIC4xwcAiFd2vQuAnrjEAQxuzpw51113nc0W7IZgKOsAAABohpAJAMbVr18/VdaB0XCPDwAQx7jzDWiNHrMAAACIY4RM6+I+OgAAAADVETIBHdCYCVgZ9/gAAPGNkAkAAAAAUA0h06K4jw4AAAAgFgiZAABoh3t8AIC4R8gE9MGwTAAAAMQlQiYAAAAAQDV2vQuAPgzeWauiQk6fFhHJy5OUlICrHTggR4+KiOTkyMUXa1QboBdXCN/bUNYBAACIKVoyYUSffCKjRsmoUfLggwHXOX5csrNl1CgpKSFhAjAHBmQCAKwggdveluIeBGj8X/uoUbJmjYjI2rVSXOy9tL1d+veXAwfkiiukutrEITMhgaYnwELiI2QmJJjgJGIpnEqAIDyufvmaaIeQaS0mCpnNzXL11dLYKGlpcvCgdO16wdJ77pH588Vmk6oqGTBApxLVwJUBYClhhcw9e+TEiWi32Lu39O4d7Yd4IWQaDacSIAhCpi4ImdZiopApIps3y5AhIiK5uVJZef71N96Qu+4SEZk7V2bP1qc2tXBlAFhKWCFzxAh5551ot3j33bJgQbQf4oWQaTScSoAgCJm6YEymFZnlKzZ4sDz8sIjIhg0yb97ZF48ckXvvFREpLjZ9wgSAIH71qwv++vbbcuaM/z/ffCNffy0HD8q778oLL8iNN55/15dfalw1AAC0ZFqMci/HRL9zp1N++lOprpbERNm3T3r1kmuvlcOHJT1d9u+XLl30ri9q3H4GLCXcMZm//a388Y9nf+7WTQ4elNTUkN5YUSFjx8qpU9K3r+zbF3adwWnZkllWJu3t/hfZbJKYKP37h/pvEoQyBcCVV0pWVqglXX65XH99wHWamqSqSkTkhhukW7doy+sQpxIgCFoydUHItBbThUwROXJErr1WTp+Wvn0lL0+eey4ehmK6cWUAWEcEs/44nXLNNVJTc/avt98ub74Z6nuVEQdJSfLtt+FttENahsxLLpHm5g7WycyUP/5Riooi34pyCfrAA/K3v4Va0tixsmxZwHUqK2XoUBGR1atl5MjICwsRpxIgCEKmLuguC6PLyJC5c0VEqqvluedERP785zhJmABMIcGDxpu22eTNNyUx8exf33pLliwJ9b2DB8tdd0lbW8CWQBPp2lVyc73/ZGaK3S4iUlMjI0bI66/rXSUA4BxCJkzg3nvPP8UkO1seekjXalTlcon2l60AQuf1DdU+cPbuLc88c/6v06dLfX2o773vPhGR6mr1q9LY4MFSWen95+BBOXNG5s+XpCQRkfvvl5YWvQsFAIgIIROm4HTKyZNnfz58+PzPAKAjzQLnQw9JdvbZn1tbZdy4UN84cKAkJcmnn8aoLv3ZbDJtmvz5zyIira1SVqZ3QQAAESFkwhQeeUR27RKbTUSkqUkmTdK7IAC4UKwD59Kl0rnz2Z+rquRPfwr1jYMHx3/73uTJZ3/YuNHPUodDNm6Ud96RjRvF4dCyLgCwLkImjK6s7OyYzN/8RmbOFBGpqJDnn9e3KABW4XK5wp0rIhaBMz39gjlp5syRAwdCemNOTscT55jdN9+c/eE///OC15ua5J575KKLJDdXRoyQ3Fy56CK55574/wcBAN3Z9S4ACKah4Wy7ZZ8+8vjj4nBIWZnU1clvfytDh4Y017wpMCwTiFcqzmo4frysXi1vvSUi4nTK2LGyb9/Z4YhBPPJIlJs1gb///ewPubnnXzx+XG6+WRoaREQGDZLLL5cvv5TKSpk/XyoqZOdOLZ4sAgCWRUsmDG3cOGlulsTEs/MrJidLaanYbNLeLmPHSlub3vUBgIZee+18NKqttUSADK69XZ5/Xn7/exGRnj3PTxHndEpRkTQ0SLdusm+fbN0qy5bJ+vXy8cdyxRVy/LiMGaNj1TGhy+zHABAIIRPG9cQTsm2biMhf/iJ9+px9sV8/+cMfRERqa2XGDN1qAwDtdekiixad/+uLL/ofhRh/tm6V4cMv+DNsmPzwh3LRRfLww+J0SlqarFlzdui+iCxbdvbhouvWSd++5z+nVy955x0RkZ07pbJS892IPXImAIMgZMKgNm8+GyaLi+X++y9Y9NhjcuONIiJ//7usW6dDbSriegBAWPLzL7i/NmGCfPmlftVopbFRysou+FNeLsePn42Xv/ylHDp0QZhcuVJEZNAg6dfP+6P69JEbbhARWbZMq+pjzOs8Qs4EYASMyYQRNTXJHXeIiHTrJgsX+llh+XLp00daW2XyZKmtla5d/azjdIrTefZR3eYS/dgtAKqL+Npd9W/0s89KRYUcOSIi0tgou3dLfr66WzCcG26QBx44+7PDIRUV8uab4nTKyJGycKF06eK9vtLAa7fLmjV+Pi0xUUSkri529YrTGcMP9+Jy+cmZnEcA6MuEF+CwgHHjpKlJROT11yU11c8KykSLkyfLqVMydqxs3uxnnREj5MwZo3eI8r04EK4PACOJLFvG9CuclCTLl8tPfypOpzz6aPwnTBH54Q8veHjV1KkyY4YMGyZr1si+fX5m8VGe2rJpk2zaFPAzlf60Efvuu2BL3c9KsenUY4zzCAB9ETJhOE8+KRs2iIj85jeSkxNwtUmT5O235a23ZMsW+dOf5Ne/vmDp7NlSVnbBTIPmwvUBYDpafmcdDklOluHD5X//V7NtGsvAgVJaKiNGyPHjkp8vO3dKSsr5pUpD4o03Sq9eAT+hU6cIN52ZKVu2SHt7sHXcS5VWUw24XC6vGyKcRwDoiJAJw3n8cXn88ZDWfPNNPy+2tMiUKbJqlbpFxZbvxYFwfQCYgS5f0oYGKSqSa6+V11/XfuMGUlQkM2bIiy9KTY3MmHHBlEgpKdLaKjfeGJOHKiu9c/fvD7bO8eNnf7jqKvULCIScCcA4mPgHcWXFCsnIkFWrZOJEvUsJTULC2YtUv9cBzN8AGJDLg/Zb//JLyc+XLl1k7dqQxpwvWHBB+ooz//u/0rOniMjixRdMtHvLLSIiO3f6f1dZmSxbJnv2RLjRa68VEamvP58k/W5CRJKSJD09wq1Exvf/JOcRALogZCKulJZKcrKsXStLluhdSvjImYABuW8D6Rgs3drb5bbbpKlJKiv9zHbj17vvxvP0s8nJ8tprZ3+eNu38w5OLikREdu7084iX+nq57TYZN05KSiLcqPtpnO65iLxs3SoVFSIi48ZFuIlokDMBGAEhE3Flzhypqzt/BWA65EzAgNQKli6XK8pv8113yb59UlYm3buH+pZdu8JY2Yzy889muX/9S37/+7Mv3n23XHGFiMidd16QMxsbZcyYsyNaf/lL7486dsz7QSmef9z69pWRI0VEyspkwAB5552zIzCdTjlwQJ54QoYOFRFJTpbf/jYmu9whciYA3dFZ31qU04xFfucJCZKba/TZZd3dZS980c/VAF9VIA4kJCRE/FV+5BGZO1feey+M6WSPHJEf/1jWr1d5BtqEBO3OI5dcIs3NMnZssMdaNjfLj38szc1is8m+fZKVJSJy+LAMHnx2ovIbbpBeveTrr6Ws7Oy8r2vXXnA7MpQI5rnLX34peXny0UfnX7Hbz88oKyIpKbJypXYT/4Z4KuE8Amtyfxf4CmiJlkzAcGjPBODlr3+V556T+fPDyy3KaMyf/jQ2NRlGaqr85S8iIk7n+QH5ffrIwYMyebLY7bJrl5SUyLp14nDIzTfLzp3Rdnjp0kV275Y///n87LXuhGm3y5Qpsn+//o+WoT0TgI5oybQWj3s5+haiBfO2ZJ5bRHsmEG8ia8l85x0ZMUJ+9zt58skw3lVfL717S1ubfP992FsMTsuWTIQirFMJ5xFYDS2ZuqAlEzAo2jMBiMiOHfKzn8nkyeElzIYGyc+X06dDnR8I8Yr2TAC6IGQCugly71lBzgQs7vhxGTlSbr5ZFiwIaX2nU7ZulUcekYwMqa0VEbnhhpgWCBMgZwLQXgjP2AKgH9+HawvP1wZMS/lGh/j1bWqSIUOkqUn27pUePQKu5nSKwyHffy/t7XL6tPfSH/wg8moRN3xPJZxHAMQUIRMwOnImYE2/+pX8618iIqdOyalTEX5IWpqKFcHEyJkAtMTxxVo8TzBx/5s3/sQ/HXaXvXBl5gEC4kE0TzExCCb+MZrQzybMAwQLYuIfXTAmE9BHWAlTGJ8JAIga4zMBaIPusohb8Xe7in6zQBwIa1gmoDr6zQLQAC2ZFuVyubh3aUa0ZwIAokR7JoBYI2QCJkPOBABEiZwJIKYImYAOwh2Q6YWcCZgafUlgBORMALFDyLQurnJMjZwJAIgSORNAjBAyAbMiZwIAokTOBBALhExAa1H2lfVEzgRMir4kMA5yJgDVETItjaucOEDOBABEiZwJQF2ETEBTKjZjupEzAQBRImcCUBEh0+pozIwP5EzAdDj8wmjImQDUQsgEtBOLZkw3ciYAIErkTACqIGQC8YOcCZgLjZkwIHImgOgRMsFVjkZi2ozpRs4EAESJnAkgSoRMIN6QMwET4TYfjImcCSAahEyIcJUTe9o0Y7qRMwEAUSJnAogYIRNnkTPjDDkTMAsOvzAsciaAyBAygZjTuBnTjZwJmAU5E4ZFzgQQAUImzuMqJ/6QMwEAUSJnAggXIROILb2aMd3ImYApcJsPRkbOBBAWQiYuwFWOunRPmApyJgAgSuRMAKEjZMIbOTMukTMB4+PwC4MjZwIIESETiBWDNGO6kTMB4yNnwuDImQBCQciEH1zlRM9oCVNBzgSMjyMwDI6cCaBDhEz4x1VONIyZMBXkTABAlMiZAIIjZCIgcma8ImcCBsfhF8ZHzgQQBCETwXChEwEjN2O6kTMBg+PwC+MjZwIIhJAJqMkUCVNBzgQMjpwJ4yNnAvCLkIkOcJUTOhMlTAU5EzA4jsAwPnImAF+ETHSMq5xQmC5hKsiZgMFxBIbxkTMBeCFkIiRc5QRn0oSpIGcChpWQkJCQkMARGMZHzgTgiZCJUHGVE4ipE6aCnAkYjRIv3T9zBIbxkTMBuBEyEQaucnzFQcJUkDMB4/D71eMIDOMjZwJQEDIRHuUqh1OGIm4SpoKcCejOswHTFzkTxkfOBCCETETA5XJxoSNxlzAV5ExAL8HjpRuHXxgfORMAIRMRsvKFjtKWG38JU0HOBLQX/Cvm9a208uEXZkHOBCyOkInIWfNCR4mX8ZowFeRMQDMhNmB6YeQCjI+cCVgZIRNRsdqFThw3YHohZwKxFnr/2ECvW/NOH0yEnAlYFiET0bLIhU58d5H1i5wJxE6IX6UOjzlWu9MH0yFnAtZEyIQ64vtCxwpdZP0iZwKqi6x/bBAWudMH8yJnAhZEyIRq4vJCx4INmF7ImYBawo2XYR154vtOH8yOnAlYDSETKoubCx13vLRywlSQM4HoafCVcd/p49sJAyJnApZCyIT6zH6hQ7z0Rc4EIhbx/LGRbS4uO5UgPpAzAesgZCJWzBg1iZdBkDMBzUR/CHIffvmOwlDImYBFEDIRW2aJmsTLUJAzgQjodVRxnWP8IzAshZwJWAEhE1rwvNAx1KnEXRLxMkTkTCAaoRxnVD8WETVhNORMIO7Z9S4AFuI+qbjPJTrGOqUEgmUEXC6X79VAQkIC/5hAIL5HP71qMMLhFxB/pxLOI0A8IWRCB3qlTc/TGWeyaJAzgQiEkjBj/SXyG3f54kIX5EwgjhEyoadAd/dVPMUQLGOEnAmExff74vsl0vLr47ktAif0Qs4E4hUhE4bgdUYJdL8/yHknUAsB56rYIWcCIQolYeooUOC8cB2tqoHFaJ8z9+zZc+LECZvNVlxc7HeFHTt2fP755yLSv3//7t27+65Qn6wRXAAAIABJREFUX1+/d+9eESkoKEhKSnrnnXccDofvana7PTExccCAARdffLGqewCYAJeD1uLRPdWUv/cg12Qm3aM44PeXwq8DcPObMH1fN/i3xjiRGH4Z/P9PhwJ9TWJh3rx5Dz74oIgcO3asZ8+eXkudTmenTp1Onz4tIjNnzpw3b57vJ9x///2vvPJKcnLyN998IyKdOnVqbW0NssWsrKw5c+bccccdqu0DwmH2q1+TYnZZmIkrML1Lsy7mmwWCCDFhGl+Qwy+MQO//INHy3YXYfUdyc3OVH3bu3Om7dOvWrUrCFJGysjK/n7B9+3YRGTFihOeLNpst0Yey6MCBA2PHjn3mmWfU2gXA+AiZAKLl9/rGdNfQgOqCNM54fWviICQAUdIsZ2ZmZqalpYlIZWWl79KKigoRGTJkiIjU1dXV19d7rdDa2lpTU+Nex+2uu+464+P7778vKSlRNve73/2utrY2FnsEGBAhE4AKyJmAlw67/7kboEiYgEKznJmTkyMiu3bt8l20fv16Ebnnnnt69eol/hozlRQqIoWFhR1uyGazjR8//o033hARp9P58ssvR1c4YBqETADqIGcCbqEPMCNhAp60yZlKPjx8+HBbW5vn6ydPnvzoo49EJDc3Nz8/X0TKy8u93rtp0yYR6dWrV3p6eoiby8vLU1Y+evRo1LUD5kDIBKAaciYg2k5hAsQfDXKmMizT6XR69ZjdsGGDiGRlZaWlpQ0dOlREysvLnU6n5zo7duwQkYKCgrC2qLSLtre3R1c4YBqETABqImfC4kiYQPRinTO7d++upL5t27Z5vr5u3To5FyCLiopsNltbW9vGjRvdK7S3t1dXV4vH7EGhcDqdyiRDKSkpapQPmAAhE4DKyJmwLBImoJZY50xl2h7lcZdu7733nogobZh2uz07O1vOjdJUKA2bdru9qKgo9G09//zzSr/cW265RY3aARMgZAJQHzkTFkTCBNQV05ypNFdu2bLF3Rv2gw8+aGlpSUpKUqYFEpFhw4aJx0w/IlJVVSUigwYNstvtXh/ocDhaL1RdXb1mzZoJEyY8+uijItK9e/e7775brfoBg/P+hgCAKlwul+/VQEJCApfdiEskTCAWfE8lap1H8vPzbTabw+H48MMPBwwYIOfm+CkoKLDZzrbBKK2dBw4caGxs7Natm5wLmcqcQF5KS0tLS0sDba5z586rVq2iuyysg5ZMALFCeyYsgoQJxE6M2jNTUlL69+8vHg8yUVosPQNkv379UlNT5dyEQA6HQxlamZeXF+JWbDZb7969H3744cOHD19//fXRlw2YBSETQAyRMxH3SJhArMUoZyrdYrdv3y4iLS0tSoD0mtFHyZPK0zIrKiqcTmfnzp379evn+2njxo37+kLffPPNd999949//OPZZ59VGkIB6yBkAogtcibiGAkT0EYscqYSMpWnmCgx8oorrsjIyPBcp7i4WES2bt0q5x5ecuutt/r9NLvdnnKh5ORkd89bwGr4rw8g5siZiEskTEBLqufMnJwcu91+6tSp48ePK31lfQOk0rDZ0NDQ1NS0e/duEQlrXlnAsgiZALRAzkScIWEC2lM3Z9psNqUxc9euXUpfWd+Q2bVr1759+4rItm3blAdmhvWETMCyCJkANELORNwgYQJ6UTdnuodc1tbW2u32wsJC33WUqYBKS0sdDkdWVhajK4FQEDIBaIeciThAwgT0pWLOzM7OFpGSkhIRGTRoUGJiou86Q4cOFZE1a9aIyODBgyPbUHBOp9PhcES/DmAchEwAmiJnwtRImIARqJUzr7/++pSUFCW8+X36pZwbuqmsM2zYsAi20qERI0YUFBREvw5gHIRMAFojZ8KkSJiAcaiVM4cPH678ECjC2Ww2pRut3W4PFESjMXv2bGVu2yjXAQzFrncBgNXt2bPnxIkTNptNmSfd144dOz7//HMR6d+/f/fu3X1XqK+v37t3r4gUFBQkJSWVl5e3tbVddtllAwYMCLTRpqamqqoqEbnhhht0GV7icrl8rwYSEhK4ZIdhkTA18MEHH3zxxRcikpiYGPrz7qFoaGjYv3+/8nP//v3T0tL0rUcDvqeSCM4jy5YtW7ZsWfB11q5dG2Tp119/HdYW3VpaWqZMmbJq1aoo1wEMiJAJ6KyqqurBBx8UkWPHjvXs2dNrqdPpHDp06OnTp0Vk5syZ8+bN8/2EZ5555pVXXklOTv7mm29EZOrUqY2NjSNHjly9enWgje7fv3/UqFEisnr16pEjR6q4O6EjZ8JESJjaeOyxx5qbm1NTUzt16kTIDNc//vGPuXPnikh1dfWSJUv8zmETf1TJmbpYsWLFzJkzT548OXHixKVLl0a8DmBMhExAZ+7J0Hfu3OkbMrdu3aokTBEpKyvzGzK3b98uIiNGjIhlmTFBzoQpmDphVldXHzhwwPf17Ozsnj17Op3O119/3XfpJZdcoldEefrpp0PZtOn2S4OC8/LylGTu7v9pESbNmaWlpcnJyWvXri0uLg4UIENZBzAmQiags8zMzLS0tKampsrKyjvvvNNrqfJ46CFDhmzatKmurq6+vj49Pd1zhdbW1pqaGmUdzWpWETkTBmfqhCkiX3zxxb59+5qampT5M/v06XPzzTf36NHDZrOJiMPhOHHiRH19/fr16//1r3/ZbLZx48alpqb6Pi3QaEy3X6Yr2FzMmDPnzJlz3XXXKf8BolkHMCgXrITfuzGNHTtWRDIzM30XXXfddSJSWlraq1cvEXnllVe8Vli5cqXyO/3kk0+UV5QxliNHjgyyxffff1951+rVq9Xai2hwdIIxxc1/S/dQvUOHDvldYfTo0SJy++23a1yYl9zc3HfffTf09c2yX27aFFxYWBjWP2PcMO8XVkRyc3OjXwd+me7/Q3zg1gigP6U31OHDh9va2jxfP3ny5EcffSQiubm5yox25eXlXu/dtGmTiPTq1curhdNcXMw3C+Mxexumpy1btohI586d+/Tp43cF5dhiumGQptsv0xVsLr7fUM4jgF4ImYD+lGGZTqezsrLS8/UNGzaISFZWVlpamvIw6PLycqfT6bnOjh07JPDE6yZCzoShxFPCFJGtW7eKSKC+l9XV1crYb+XB9CZiuv0yXcGmQ84EDIKQCeive/fuSm/Ybdu2eb6+bt06ORcgi4qKbDZbW1vbxo0b3Su0t7dXV1eLx+xBpkbOhEHEWcIUj9HdfpcqR57U1NTevXtrWlbUTLdfpivYjMiZgBEw8Q9gCEOGDKmrq1Med+n23nvviYjShmm327Ozszdt2rR+/Xp3TyqlYdNutxcVFXl9YENDQ5AHfylzBRmQi3mAoLf4S5g1NTUtLS0iMmjQIL8rbN68WUzYRdN0+2W6gs3L91TCeQTQGCETMISCgoL58+dv2bLF6XQq88h98MEHLS0tSUlJOTk5yjrDhg3btGlTRUXFs88+q7xSVVUlIoMGDbLbvb/Lu3fvHjdunIZ7oBpyJnQUfwlTzrWPdTgO0HQzVJtuv0xXsKmRMwF9ETIBQ8jPz7fZbA6H48MPPxwwYICcu9ooKChwz12uXHkcOHCgsbFRmUJWCZnKnEBeEhMTO3XqFGhzZ86caW1tjcF+qIOcCV3EZcIUEaWPfV5eXnt7u+9S844DNN1+ma5gsyNnAjoiZAKGkJKS0r9//127du3atUsJmcrQHc8A2a9fv9TU1Obm5g0bNkyYMMHhcOzcuVMC9K0qLCxcvXp1oM1VVlYqvXANi5wJjcVrwhQRZUax8vLyyy+/3Hfp119/LWGOA1yxYsXdd98dbhklJSXFxcXhvisI1fcr1kxXcBwgZwJ6IWQCRpGTk7Nr167t27fPmjWrpaVFCZBeM/rk5eUtX768rKxswoQJFRUVTqezc+fO/fr106nk2CJnQjNxnDBrampOnTolIlVVVVlZWb4rjBkzZtWqVWGNAxw9evRll10WbiU33XRTuG8JIsr9OnLkyIYNG+6//34VSwou4oJPnjz58ssv19XV9ejRY/z48ZmZmVqUG0fImYAuCJmAUeTk5Pzxj39UbnWXlZWJyBVXXJGRkeG5TnFx8fLly5VJ8JWHlwSaCj8+kDOhgThOmHJuHGBKSorfYCPnjjZhhUy73X7LLbeoUl7EItuv+vr6kpKSw4cPr1y5csyYMVqGzMgKPnz48HPPPffUU09169Zt4cKFV1999Ysvvjh9+nQNCo4nxs+ZoRRjqIKBDvEIE8AocnJy7Hb7qVOnjh8/rvSV9Q2QSsNmQ0NDU1PT7t27RcR3Xtk4w3NNEFPxnTDl3DjAQI/S3bNnT1tbm4gMHDhQ07KiFtl+JSUlFRUVLVq06KKLLtKgSE+RFTxjxoynnnqqe/fuNptt2rRpDzzwwIwZMww7PbiR8VwTQGOETMAobDabMpHsrl27lL6yviGza9euffv2FZFt27Yplyzx8YTM4MiZiJG4T5hybhzg4MGD/S5VJg8z4zjAyPYrLS0tMzPTPZualiIreMuWLddcc437r8pY+jVr1sSuzjhGzgS0RHdZwEDy8vIqKirKyspqa2vtdnthYaHvOvn5+dXV1aWlpQ6HIysrS5lmNu7Rbxaqs0LCPHz4sDIOMNCDGZW+9+E+mHHHjh0vvPBCuMXMnDlTrWGZMdqv2Im44ClTpvhGYqfTGYMaLcH4/WaBuEHIBAxEmbm+pKRERAYNGpSYmOi7ztChQ//85z8rd7ID3RRXhdPpdDqdvk/gdHM4HCISZAV1kTOhIiskTBHZsmWLBB0HqDwqKdwwlp6e7vcWWIfvCvctgcRov2In4oIXLFjg+dc9e/aISAT/+HAjZwLaIGQCBnL99denpKQoT7D0+/RLOTd0Uwl4w4YNi10xI0aMOHPmjNLFy9PJkyfnzJlTUlKijCC64oorpk+f/tBDD8WuEjdyJlRhkYQpHY0DdD+YMdwBmenp6ZMmTYq+vIjFaL9iR5WCW1paXnnllSlTpsTrjOKaIWcCGmBMJmAsw4cPV34IdDlis9mU29h2uz1QEI3e7NmzlakOvTQ1NV177bV///vfc3JyXnrppd///vf/8R//8fDDD0+dOjVGlXhhfCaiZJ2E2djYqEwhdtVVV/kudTqdS5cuFRG73e41i7XBmW6/1Cr4vvvuu/nmm1977bUY1WkpjM8EYs4FK+H3jg599dVXo0ePVv6f5Obmei2dMWOGiPzhD39wv/L1118rz23buXOnZkVyNENkLPLfplu3bl792O12e7du3ZSlL7zwgldXfJvNlpiYuHz5cn3Ldrlcubm57777bqClKu5XamrqxIkTY7UbMSj46aefvvvuu0PcbmFhYZB/RrhZ5IAAfr+6oCUTwHkrVqzIyMhYtWrVxIkT/a6wcuXKxMTExx57zP1KSkrK7Nmz5dyYIm24aM9E+KzThvnpp59+9913nif777777tNPP1WW/uIXvzhz5ozn0u+///7MmTN33HGHvmV3yHT7pVbBCxcubGtrU8ZnOp1OHmGiFt8jAOcRQC2ETADnlZaWJicnr127dsmSJX5XeOWVVxYvXuw126Fyq769vV2LEs8hZyIs1kmYiDNlZWXNzc1PPvmk8tfa2lpCporImUCMMPEPgPPmzJlz3XXXBXmIXHFxse+LSiK95ZZbYliZPy7mAUJoSJgwqR07dsyaNSs/P3/69OlOp/O7776rq6t7/PHH9a4rrvieSjiPANEjZAI4L4JJCxcuXLhhw4asrKxAMxXFFDkTHSJhwq2mpuYPf/hDXV1dc3NzSUnJiRMnLr300mXLluldV0DFxcXNzc11dXWeLxpn1ty4Qc4EVEfIBBC5devW3XvvvZ07d169erVeNZAzEQQJE54yMzPffPNNvasIw7///W+9S7AKciagLkImgAgtWLDgv//7v1NTU8vKyq688kodKyFnwi8Sphnt2LGjvb09MTFReVYTQldfX793714R+eyzz/SuxZTImYCKCJkAIjFr1qwXXnihe/fulZWVvXv31rsccia8kTDNaODAgfv37z906FCnTp0ImeH65z//uXjxYhHp0aPHpZdeqnc5pkTOBNTCN8da3IdOfu/oUEJCQm5ubmVlpdfrDodj1KhR77zzTv/+/d999920tDRdyvPL76yA/G+3IBImgIhxAIkzXP3qgkeYAAjPbbfd9s477xQVFW3dutVQCVN4rglEhAtEANHhuSZA9OguCyAM//M//1NWVlZYWPj222/rXYt/9Ju1OBImgOjRbxaIEiETQKiam5ufeuop5Yfhw4d7Lc3Pz581a5YedXkjZ1oWCROAWsiZQDQImQBCtW3btvb2dhHZtWuX79Ju3bppXlFA5EwLImECUBc5E4gYXxVrYegzLIV5gKyDhAkgRji8mB1Xv7pg4h8AcYt5gCyCS0AAscM8QEAECJkA4hk5M+6RMAHEGjkTCBchE0CcI2fGMRImAG2QM4GwEDIBxD9yZlwiYQLQEjkTCB0hE4AlkDPjDAkTgPbImUCICJkArIKcGTdImAD0Qs4EQkHIBGAh5Mw4QMIEoC9yJtAhQiYAayFnmhoJE4ARkDOB4AiZACyHnGlSJEwAxhF6zkxISOAUA6shZAKwInKm6ZAwARhNhzmTeAnLImQCsChypomQMAEYU1jtmbEvBzAKQiYA6yJnmgIJE4CRkTMBX4RMAJZGzjQ4EiYA4wuUMzlewbIImQCsjpxpWCRMdOjw4cOqf2ZDQ0Nra6vqH4v4FmJ7JicXWAQhEwDImUZEwkSHXn755fnz56v+sd9+++3IkSObmppU/2TEN7850+AHroTo6F0+jMvo//WhLvfhgN874Mvv+ZIviy5ImGo5fPjwnj17/C6y2WwpKSnZ2dldunSJZhPV1dUHDhzwu2jSpEler2zcuPHEiRO+a06YMMFmO3vje8WKFW1tbZ5Le/fuff3113u9ZdGiRW+//fbKlSvDqio7O7tnz55Op/P111/3XXrJJZcUFhaKyPbt26dPn15VVZWSkuL387WxZMkS3xeVXfB8pbGx8f333/d8JSMjY8CAAbEtDgH4PXx5vajjAc2nkig/7YK/GvNAzdWvLux6FwAARuF7HSBmuA8df0iYKvr3v/998ODB5ubm//u//xORG2+8sbCwsEuXLl999dXRo0fr6urGjBmTn58/b968jIyMyDbxxRdf7Nu3r6mpqaSkREQyMjIGDRp00UUX9enTx3flY8eO7d279+DBg9u2bROR/Pz8K6+8snfv3u6EKSI1NTUHDx5cs2aNiNx8881XX321b20HDhx47LHHgvSV9aqqT58+N998c48ePZQNORyOEydO1NfXr1+//l//+pfNZhs3blxqauqtt96qvH3gwIGjRo2aMmXKm2++Gdk/S/QcDseRI0c+++yzdevWKc2q+fn5mZmZ2dnZXmt+++23GzduXLx4sYhkZWX179+/V69eOlRsbe5BmL6nEiOcWTyClpof6/VpnnvKcdvqXLASfu9AhzhU6ot//Fj45JNPlH/M//f//p/Xovfee89ms3Xu3PngwYPRbGL//v3KJg4dOtThyi+88IKIpKamBlmnqKjol7/8ZaClffr0mT9/fvRVjR49WkRuv/1230VnzpxJT09fuXJlh1uJNeUGgYhs2rQp0Dr//Oc/k5KSFi9erGFduIDXUcsgV+Aem9P6j3GO4capxFIYkwkAF3AxPlM/tGHGiNJs2L17d98GroKCgqKiolOnTs2cOTOaTWzZskVEOnfu7LcB08vmzZtFJC8vL8g6n3zySaCSFixY8NVXX02dOjX6qsrLywNVkpiY+Ktf/erhhx92Op0dbiimxo8fb7fbJUDvWRFpb2//+c9/vnbtWt/+ydCGb9Nlh8eumJ5W3GMmfSOfZtybZgCnNREyAcAbOVMXJMzYKSsrE5HBgwf7XZqYmCgiu3fvjmYTW7duFRF3d9PglGg3ZMiQQCu0trY2Nzd7jTx0e/bZZ++55x7PHraRVVVdXX369GkR8e2AqpgyZUp9ff0bb7zR4YZiKjExcdy4cSJSWlra3t7uu8K4ceOmTZuWn5+veWkQMdIsskbIlr680qbe5UAjhEwA8IOcqTESZkwpWStQCKmpqRGRHj16RLOJiooKCZzWPHUY7ZRPCxSJt2/ffuTIkTvuuCP0qgKlWaWBNzU1tXfv3n5XSE5OLiwsXLhwYSjbiimlibKtrW3ZsmVeix566KGrrrqKNkwdKZ0DI3ijiucUA2ZLX0RNSyFkAoB/5EzNkDBjqr6+vr6+XkQGDhzou7S6urq2tlZEHnjggYg3UVNT09LSIqGFzA6jnYhs2rSpoKDA76I333yza9euQd7rW9WgQYP8rhBKr92CgoItW7Yon6OjvLy8rl27iogyj5HbggULGhoannzySZ3qwnl65UzPeGkKRE2LIGQCQEDkTA2QMGPNPSDzyiuv9FrkcDhmzJghIg888MD06dO9lm7evPnOO+8cPHjwiBEjhg0b9uGHHwbfhIoDMrdu3RooGW7cuDHQonCr6rDXrohcffXVTqdz48aNoWwxpu666y4RqaysPHnypPJKRUXFkiVL/D6LBbqIuEkzYuaKl56ImnGPkAkAwZAzY4qEqYFAAzJra2vz8vKOHDny97///W9/+5vnoubm5ttuu23ChAkzZszYvHnz22+/PW/evOLi4kANekoGC3FAZvAurCLS2tr65Zdf+h2Q6XA4Dh8+HGLPXqWqvLy8dn8+/PDDDnvtiojyfM4gAVszkydPFhH3Ez6rq6t/85vfrF27VpkTCMYRbtSM7ITibsA0NaJmHOPABAAdcPH8zNggYWpDGZB59OjRadOmKa+0tbUdOnQoNTV13LhxkydPTkpK8ly/paVl8ODBx44d279/v7vxMyMj49prr/3www/9tkBWVlZK4F6png4cONDa2iqRDsj86KOPnE7nNddc0+GG3FWVl5dffvnlvku//vpr6ajXrogkJiYmJSUdPXq0w82tWLHi7rvvDqUwTyUlJcXFxaGsmZWVlZmZWVNTs2jRovHjx0+cOLGsrKxLly7hbhHa8HviUMW5B3LG4rP1oewLZ9U4Q8gEgI6RM1VHwtSGe0DmSy+95H5+yUcfffT4448fOHDg0Ucf9UqYInLffffV1NQ8/fTTnt1rGxsbd+/efcstt/huoqam5tSpUxJayFSeKRLxgMzPPvtMRFJSUjrckLuqqqqqrKws3xXGjBmzatWq4L12Ff/1X//11Vdfdbja6NGjL7vssg5X83LTTTeFvvKkSZMeffTRmpqa/Pz8+fPnp6enh7s5aEk5poUSNUM/m8RB62UgSpOmcC6IF4RMAAgJOVNFJEzNKOMS09LS+vbt637xlltuKS8v79Gjx2233Xbo0CHPMFlTU1NaWmq325WxmiJSV1e3du1aZeyf8rATv5tISUnxm+UUTqdTeeJIKAMyt2/f/uijj/pd1NbWJiKhdBDtsCqlF3EoITMrK+vjjz/ucDW73e43hKvozjvvVP5lHnnkkQEDBsR0W1BLiFGzw7NJ/DVg+qJJM54QMgEgVORMVZAwtaREqZycHK/Xk5KS+vfvX1ZWtnbt2tmzZ7tfX7x4sYikpqbec88933//vdPpTE1NzcnJ2bt3b6Bopwx9DNT2KCJ/+tOf+vTpo3QKDWVAZnNzc6A2OqfTKaGFzOBV7dmzR8mrfmfc9WKz2ZSVdXfo0CERsdvtEyZM0LsWhCfK3rNx3IDpiybN+EDIBIAwkDOjRMLUmDIg02973e7du0Xk22+/9XxReZzJfffd98QTT4S4CWXoY6BRlCKyfPnyvXv3isjRo0eVAZk33nhjoJVXrVoVJK8qTant7e1RVlVVVSUhDMhUNDY2+k7Mq4vt27eLSHZ2ttIsDHPpsEkz0KnEUglTQZNmHCBkAkB4yJkRI2FqLMgTMo8cOdLU1CQiP/zhDz1fV/KbZ9/a4A4fPhx8QOaKFSsGDhyohCJl+hybzRakY+2LL7742muvBVqanJwsIsqssNFUFSR7+zpx4oR7OGsQO3bseOGFF0L5QE8zZ84MfVjmjh07RCTWnXIRU6EP1FRYMGG6KU2anCZMipAJAGEjZ0aAhKk9ZVyi3/Y69zM5Lr74Ys/XlTl1/I69FJH6+nqvjqzKRD6Bhj62trb++te/XrZsmfLXn/70pyISpBVu0aJFvXr1ChJxlU9obGwMtEIoVcm5J2SGGDJbW1t/8IMfdLhaenp6YWFhKB/o9a4Q13Q4HMovNJQuvjC4QL1nPc8jVhiE2SFypnkRMgEgEuTMsJAwdRFkbptdu3YpP7jz5Jo1ay655JK8vLxVq1b5HYL4i1/84tprr506darni0GGPra0tIwcOfI///M/lUdNikiXLl369u1bXV195MiRjIwMr/V37Njx/PPPK22MgaSlpSUnJ+/fvz/IOsGrEpHq6mqlLTSUtNbQ0OB0OoP073VLT0+fNGlSh6tFbPPmzQ6Hw263B+mZDBMJ3qRp5QZML+RMk6JPPwBEKNDgGe0rMTgSpi6ampqUrNW/f3/fpX369PF6Ze7cuX379r377rt79eo1f/58z0XHjx+/7bbbevXq5ZUwGxsblYl8vGJPU1PTq6++mpmZuWnTprvuustz0V//+lebzfarX/3Ka+sLFy689957y8vLO3zwY0FBgTJwNBB3VVdddZXvUqfTuXTpUhGx2+2+QdeXksaVFlQdOZ3ON954Q6mEAZnxxOVyeR4P3cmTY6Qn91RAMBFuDFiL+yvK7x1Qi98zH18xNxKm9n70ox8dO3bM4XC4X7Hb7d27dz927Jj7ldbW1pycnN27dz/66KMzZ878zW9+U1RUdMcdd4hIfX39mDFjrrzyysLCwpMnT27durVLly6//vWvPXPp5Zdf3tTU5N6EzWZzz/jqdDo9N33s2LGePXt6lldWVjZ16tQePXpMmTKlS5cutbW1K1euvPHGG5977jn3f5yDAAAgAElEQVSvvrt+vfrqqw888MC3337r26fXqyplx9PS0j799FMR+etf//rwww97ThqklL106VJlx/2aNWtWaWnp559/3mFhMfLb3/72+eef9y37/fffZ3BmXCJhBpKQEOHpg6tfXRAyrYWvGRAL5MxASJgGV1ZWtmHDhvb29smTJ/fr189zUU1NzSeffHLxxRffdNNNqjedtbe3r1mzZtu2bWfOnLnppptuvfXWbt26hfjeL7/88tJLLy0pKQmSDFX04x//uLi4+Nlnn9VgWwAJM7jIciZXv7ogZFoLXzMgRsiZvkiYiJFp06bV19evX78+1hv64IMPbr755o8//jiU2WWBKJEwQxFBzuTqVxeETGvhawbEDjnTEwkTsXP06NEf/ehHhw4dCuUpl9EYM2bMD37wg4ULF8Z0K4CQMMMRbs7k6lcXhExr4WsGxBQ5U0HCRKw9/vjj+/fvX7t2bew2UV1dPWTIkNra2q5du8ZuK4CQMMMXVs7k6lcXTFAGAKphvlkhYUITTzzxRHNzszLhaiy0t7dPnDhx8eLFJEzAgJhv1vgImQCgJovnTBImtGGz2VavXv3iiy/u2bMnFp8/derUe+65p7i4OBYfDniiGTMy5EyDI2QCgMosmzNJmNBSWlra22+/vXz5ctU/eceOHfn5+b/4xS9U/2TACwkzGuRMI2NMprXQKx3QjNXGZ5IwASAsJMzohTI4k6tfXdCSCQAxYan2TBImAEB7NGYaFiETAGLFIjmThAkA4aIZUy3kTGMiZAJADMV9ziRhAkC4SJiIe4RMAIitOM6ZJEwAgO5ozDQgQiYAxFxc5kwSJgBEgGbMWCBnGg0hEwC0EGc5k4QJABEgYcIiCJkAoJG4yZkkTACA0dCYaSiETADQThzkTBImAESGZkxYByETADRl6pxJwgQAGBaNmcZByAQArZk0Z5IwASBiNGPCUgiZAKAD0+VMEiYAwPhozDQIQiYA6MNEOZOECQDRoBkTVkPIBADdmCJnkjABACZCY6YREDIBQE8Gz5kkTACIEs2YsCBCJgDozLA5k4QJADAjGjN1R8gEAP0ZMGeSMAEAQGQImQBgCIbKmSRMAFAFfWVhTYRMADAKg+RMEiYAwOzoMasvu94FAADOc7lcvifFhIQEzWIeCRPa++CDD7744gsRSUxMzMvL07scQ2hoaNi/f7/yc//+/dPS0vStBwDCot2FC4zAffnI7x0wMr83XzX42pIwoYu8vLzm5ubU1NROnTqtXr1a73IMobKy8k9/+pOIVFdXL1mypLCwUO+KEAn6yuorIeGCW7ec0bRESyYAGI4u7ZkkzLixZMkS3xezs7N79uzp+UpjY+P777/v+UpGRsaAAQNiW1wATz/9dKAcZfDdiVF5eXl5SqPu8OHDVaoUsBx6zOqIkAkARqRxziRhxg2Hw3HkyJHPPvts3bp1TU1NIpKfn5+ZmZmdne215rfffrtx48bFixeLSFZWVv/+/Xv16qVDxUEZfHcMXh4A6IXustZChwHAXLTpN0vCjEuLFi2aMmWKiGzatGnw4MF+1zl69OhVV1316quvTpo0SdPiLpSXl/fLX/4yeI9Qg+9O7MobPnz49OnT6S5rRvSVNQLP8xunNi0xuywAGJcG882SMOPV+PHj7Xa7BOjPKSLt7e0///nP165dq2/CDJHBd8fg5QGAxgiZML0PPvigrKysrKyssrJS71pMpqGhoewcpaMXDCimOZOEGccSExPHjRsnIqWlpe3t7b4rjBs3btq0afn5+ZqXFgmD747BywMsi3OaXgiZML3HHntszpw5c+fO/dvf/qZ3LSbzj3/8Y+7cuXPnzp00adLu3bv1LgcBxShnkjDjntJo1tbWtmzZMq9FDz300FVXXWWuVjWD747BywMALTHxD/yoq6vbsWOH14uJiYl33nmn8nNNTc1HH33kudRms02YMEGj+nwEmZbQk+n2K9YFM3uhiag+DxAJ0wry8vK6du168uTJkpISz4SzYMGChoYG3yxkcAbfHYOXB40xIBMWR8iEH59//vmuXbtOnDixbt065ZWRI0d6PiD7008/Xbhw4ZYtW0QkPT198ODBffr00afWcJhuv0xXMGJKxZxJwrSOu+66a+7cuZWVlSdPnuzatauIVFRULFmyZOPGjXqXFgmD747BywMA7bhgJeH+3ocMGSIi6enpvou2bdtmt9tffPFFVQuMRG5u7rvvvhvWW0yxX55iXXBhYWG4/4bQS/RHck4ElrJ//37lt/zcc8+5XK59+/Zdd911X3zxhd51XSD0w7jBdycW5XF8NikRcbn4Y4g/nOx0wZhMBPPggw+KSH19vdecOl9++eWsWbPWr18/ffp0nUqLiun2y3QFI3ZcrqjGZ9KGaTVZWVmZmZkismjRosbGxokTJ65Zs6ZLly4RfNSKFSs6hc/dEcNouxMLBi8PsCbOcrqguyyCKSoq6t69e0NDw/PPP+/upXn69Onhw4f//ve/z8nJ0be8iJluv0xXMGLKFWm/WRKmNU2aNOnRRx+tqanJz8+fP39+enp6ZJ8zevToyy67LNx33XTTTZFtLpAQd+fIkSMbNmy4//771d169OWdPHny5Zdfrqur69Gjx/jx45VQCujinXfE4fDzut0uiYkyYIBcfLHmNSFu6NqOCq1F8Hv/wx/+oLzl2LFjLpfru+++y8/PX7p0acxqDFsE3WVdZtgvLzEtmO5YZhTuIZ3jv2V98sknym988eLFetfiX1iH8eC788knn/zxj3+cOHFicnLyxIkTVS1ThfIOHTo0ZcqUEydOfP/99/PnzxeRDgc7cHw2KTFDd9mUlA5iQlaWLF+uf51q9ZjV+z+FtdBdFh249957bTabiLz66qsiMnbs2MLCQh0nXFWL6fbLdAUj1lzh9JulDdPKDh06JCJ2uz0+jhjBdycpKamoqGjRokUXXXSR5qWJdFTejBkznnrqqe7du9tstmnTpj3wwAMzZsyoqanRvEzgPJtNEhO9/ygOHJCxY+WZZ3StD+ZEyEQHunbt+rOf/UxEXnvttalTp1599dWzZs3SuygVmG6/TFcwNBBiziRhWtz27dtFJDs7W7lRZXbBdyctLS0zM1PHPQ1e3pYtW6655hr3X4cOHSoia9as0aw8aMNczy+56y45c8b7z/ffS0mJpKWJiPzud1Jbq3eVMBvGZKJjM2bMWL58eXNz8+nTp5944gm9y1GN6fbLdAVDA66OxmeSMKE8bveWW26J/nNeeOGFcN81c+ZMdYdlqrU7MRK8vClTpviGT6fTGfOygDDZbDJ+vFx6qQwdKk6nvPyyzJund00wFUImOjZw4MDevXvX1tYeO3Ys4g9ZsWLF3XffHe67SkpKiouLI95ocKrsl5ZMVzC0ESRnkjDhcDi2bdsmIgMHDozyo9LT0wsLCyN4V5Tb9aTi7sRCh+UtWLDA86979uwRkQj+VQFt5OVJerrU18vRo3qXArMhZKJjy5Yt++qrr0Rk165de/bs6devXwQfYpBpCT2Fu196zVXoFnrBzF5oNYFypu9qWlUEo9i8ebPD4bDb7YMHD47yo9LT0ydNmqRGUZFTcXdiIazyWlpaXnnllSlTpkR2VgW00auX1NdLe7vedcBsCJnoQHl5+UsvvVRbW9u9e/fW1tbXXnststOh3W43VO+m0Pervr6+pKTk8OHDK1f+f/buPT6K6v7/+Iftso00CIgRQ76RwoMH+EDIFypgEIFcIMQQAhErUqF9iIgXwFTFtiBfELBaK9QbtVQxWjQGRAG5xMA33BJITEFBjMgP80UwgTTGVBpDDHFdfn8MLMvesrvZ3bns6/ngj83M7MzZDZlz3nPOnHlv0qRJaoVM3wt85MiRZcuWLV26NDY2Njc3d8CAAStWrOBBmobnNmc6bRC2wkAjbDbb22+/LSI33nijAW7I1PjH8bd4999///Dhw1955ZXQFw0IkM0mZWUi0vo8tIATzZ2joSmlpaVLlix5//33r7zyypkzZ4rI66+/3tDQoHa52sqvz6X6XIXiZ4GZvTBieYmRJMxIM3/+/J/+9Kc/+clPXn/9dREpLy//yU9+8tOf/rS4uFjtogVC4x8ngOI99dRTHTp0eP/9981mLvdDu5Yvl+ZmEREtdRNAHwiZ8OjQoUOzZs3asGFDly5dRETpwbNarcqjvfTL38+l+lyF/haY2QsjGWESiqeeeurcuXOOjyz78ccfz507p6kRJb7T+Mfxt3i5ubnNzc3K/Zk2m42LgFCX1SqNjZf9O3RINm6UqVPld78TEYmLE/9n1UCk4/oZ3Dt58uS0adMKCgq6deumLOndu3dycvKuXbtWrlz56KOP+rtDjUxLGPTPFWoBFJjZCyOZl+dkkj8BLSgoKKivr1+yZIny49GjRysqKrhzHirKz5f8fI9rO3eW9esZLgu/ETLhRk1NTWZmZn5+vtOsgI888siuXbsqKyuLiopGjx7t1z61MC1hKD5XSAVWYGYvjFje78kkZwKqKy0tzcnJSUtLmzVrls1m++GHHyorKxcuXKh2uQBnJpP06SOZmfLIIxIbq3ZpoEOETDg7efJkcnLy6tWrXS+sZmZmxsfHV1VVPffccwGETHWnJQzR5wqdoBSY2Qsjh/eEad+GnAljq6ioWLx4cWVlZX19fV5eXnV19TXXXLNmzRq1y3VBVlZWfX19ZWWl40JtPo4FkWPKFHGaf8pkkqgo0d7sWtAT/vvgklOnTv3pT39KSEiora0dOHCg6wYNDQ0///nPRaSwsHD37t1hLl7AdPe5glhgZi+MEG6fVuI2T/qSRQH96t+//7p16w4ePKjcGLlz507tJEwR+eabb867sFgsapcLEc1slujoy/516EDCRFvxPwgiIqWlpe3bt/+v//qvefPmNTQ0NDU1derUae/evY7bzJgxo0uXLspjpm02W3Jy8k9+8pOpU6eqVGSf6O5zBbfAzF4YIbw8D5OcCb0oLS3duHFjQUGB2gXRiqqqqo0bN27cuPFf//qX2mUBAL/R9ISIyM033/zDDz9432bVqlVON/tpn+4+VxAL7DR74ZEjR5hYwpC8JEz7j67bMG4WmnLLLbd88sknn332WceOHbmBXPF///d///jHP0Tkuuuuu+aaa9QuDvyjnHg5yyKSETIBA2L2wgjRasK0LyRnQsueeOIJtYugOUlJSUlJSWqXAgACRMgEjIbZCyOEjwnTvoqcCQAAwoOQCbRC43MVumL2wkjgV8K0b0DOBAAAYUDIBFqhzFWodin88M0336hdBIRWAAnTvhk5EwAAhBohE0ZQWlra0tJisViYMcIvVVVVH330kYgwe6GOBJww7RuTMwEAIvLdd2qXICyYUl0VhEzoHtMSBozZC3WnjQnT/hZyJgAACB1aFZHF3rLk9w7oTlASppe9tXGHAABHPMVEI+zVHXVcOJnULgAAoHXBTZie3u42eQIAAPiFkAkAWhf0hOllJ+RMAADQRoRMANC0ECVML7siZwIAjIEKTS2ETADQrpAmTC87JGcCAICAETIBQKPCkDC97JacCQBtcf78ec6jiFiETADQorAlTC87J2cCAIAAEDIBQHPCnDC9HIKcCQDQqXbteGyJagiZAKAtqiRMLwciZwJAYBgxi4hFyAQADVExYXo5HDkTAAD4jpAJAFqhesL0clByJgBARxgrqy5CJgBogkYSppdDkzMBwF+MmEVkImQCgPo0lTC9FICcCQDQProxVUfIBACVaTBhKsiZANB2dGYiAhEyAUBNmk2YCnImAADwFyETAFSj8YSpIGcCAHSEsbJaQMgEAHXoImEqyJkA0BaMmEWkIWQCgAp0lDAV5EwAgPbRjakRhEwACDfdJUwFORMAAkZnJiIKIRMAwkqnCVNBzgSAgJEzQ41uTO0gZAJA+Og6YSrImQAAwDtCJgCEiQESpoKcCQCBoTMzdOjG1BRCJgCEg2ESpoKcCQDQDhKm1hAyASDkDJYwFeRMAAgAnZmIBIRMAAgtQyZMBTkTAAJAzgwuujE1iJAJACFk4ISpIGcCAFREwtQmQiYAhIrhE6aCnAkA/qIzE8ZGyASAkIiQhKkgZwKAv8iZbUc3pmYRMgEg+CIqYSrImQCAcCJhahkhEwCCLAITpoKcCQB+oTMzYCRMjSNkAkAwRWzCVJAzAcAv5EwYEiETAIImwhOmgpwJAH4hZ/qLbkztI2QCQHCQMO3ImQDgF3Km70iYukDIBIAgIGE6IWcCgF/Imb4gYeoFIRMA2oqE6RY5EwD8Qs70joSpI4RMAGgTEqYX5EwA8IX9xEjO9ISEqS+ETAAIHAmzVeRMAPCiXbt2yimRnOkFCVN3CJkAECASpo/ImQDgyh4vHZcoL8iZjkiYekTIBIBAkDD9Qs4EADvXeOmKnCki7dqRMPWKkAkAfiNhBoCcCQDi9bzndJ6M8JypxEuqV50iZAKAf0iYASNnAohk3jsw3Z4hlZwZgadJOjD1jpAJAH4gYbYRORNABPJlfKwnSm9e5JwmGSJrDIRMAPAVCTMoyJkAIoov57dWa5MI6dJkiKxhEDIBwCckzCAiZwKIBG3pwHRl7C5NOjANhpAJAK0jYQYdOROAgfkVL/2qUAzZpUkHpvEQMgGgFSTMECFnAjAkv85jAVQoRurSpAPTqMxqFwAANI2EGVLnz593/YbbtWvHlwxAj8J5mcx+/tTp+VL5qjjbGxUhEwA8ImGGATkTgAEEFi/beKJT3q67qEm8jASETABwj4QZNuRMALqm7jh/x6gp2k6bxMvIQcgEADdImGFGzgQQaYJ7frPvTYMdm/azO6f0yEHIBABnJExVkDMBGIPbs5nrNqE7umimY5Ouy4hFyASAy5AwVUTOBKBHjucuXxJmGDh1bEoY06bjp+fsHbEImQBwCQlTdeRMAHrkGup82TgMPBUsuEUgWMIJIRNQ2YEDB6qrq00mU1ZWltsNSktLv/76axEZMmRIXFyc6wZVVVUfffSRiKSnp0dFRRUWFjY3N1977bWJiYmeDlpXV7dv3z4Ruemmm2JjY4PzSfSPhKkR5EwAOqWFPkxPnE6hbovqy1nW7Ufk/Awn1NmRxXEsh7olgd0LL7zw29/+VkROnDjRo0cPp7U2m61jx45NTU0i8tBDD73wwguue3jggQdWrlzZoUOHs2fPikj37t1ramomTpy4YcMGTwctKioaM2aMiGzYsGHixIlB/Dj6RcLUGg8NIH4pADTK01nLpQtRu+cxrXXDBgWtX1WY1C4AEOlSU1OVF2VlZa5ri4uLlYQpIgUFBW73sHfvXhEZP358aAoYEUiYGuT2V6DlXgIAkcwACVNEzvtA7TJCHwiZgMr69+8fExMjIkVFRa5rt2/fLiLJyckiUllZWVVV5bRBY2NjRUWFfRsEgISpWeRMALrgY8IEIgchE1BfSkqKiJSXl7uu2rZtm4jMnDmzd+/e4q4zU0mhIpKRkRHaUhoUCVPjyJkANM73sf3UL4gchExAfUo+PHLkSHNzs+Py2trajz/+WERSU1PT0tJEpLCw0Om9u3btEpHevXvHx8eHqbgGQsLUBXImAM3i7nHALUImoD7ltkybzeY0YnbHjh0ikpCQEBMTo8zTU1hYaLPZHLcpLS0VkfT09PAV1yhImDpCzgSgQa0mTE+vAcMjZALqi4uLU0bDlpSUOC7ftGmTXAyQmZmZJpOpubl5586d9g1aWloOHTokDrMHwUckTN0hZwLQFB/7MJkvB5GJ52QCmpCcnFxZWak87tLugw8+EBGlD9NsNo8aNWrXrl3btm0bPXq0soHSsWk2mzMzM512eOrUqTVr1ng6nDJXUMQiYeoUz88EoBGMkgW8I2QCmpCenv7qq6/u2bPHZrOZTCYR+fDDDxsaGqKiopRpgUTk1ltv3bVr1/bt25999lllyb59+0RkxIgRZrPz3/L+/funTJkSxk+gGyRMXSNnAlAdCRNoFSET0IS0tDSTyWS1Wv/5z38mJibKxTl+0tPTlcwpFx9Scvjw4ZqamtjYWLkYMpU5gZxYLJaOHTt6Oty5c+caGxtD8Dm0joRpAORMACoiYQK+4J5MQBOio6OHDBkiDg8yUZ5N4hggBw8e3LVrV7k4IZDVai0rKxMR++hZRxkZGd94tmHDhtB/Js0hYRoG92cCUAUJE/ARIRPQCmVY7N69e0WkoaFBCZBOM/ooeVJ5Wub27dttNlvnzp0HDx6sQnH1hoRpMORMAGFGwgR8R8gEtEIJmcpTTJQY2bNnzz59+jhuk5WVJSLFxcVy8eElY8eODX9RdYeEaUjkTABhQ8IE/ELIBLQiJSXFbDafOXPm5MmTylhZ1wCpdGyeOnWqrq5u//79IuI6ryyckDANjJwJIAxImIC/CJmAVphMJqUzs7y8XBkr6xoyu3XrNnDgQBEpKSlRHpjJEzK9I2EaHjkTQEiRMIEAEDIBDbHfcnn06FGz2ZyRkeG6jTIVUH5+vtVqTUhIUKaZhVskzAhBzgQQIiRMIDCETEBDRo0aJSJ5eXkiMmLECIvF4rrNmDFjRGTjxo0ikpSUFKKSWK1Wq9Xa6mY2m82XzVRBwowo5EwAQUfCBAJGyAQ0ZOjQodHR0Upsc/v0S7l466ayza233hrcAtTW1s6YMeOKK65o3759+/bte/XqtXz5ci/bjx8/Pj09PbhlCAoSZgQiZwIIIhIm0BaETEBbxo0bp7zwFN5MJpMyjNZsNnsKooGpq6sbNGjQa6+9lpKS8vLLLy9atKh9+/Zz586dPn262+0ffvhhZRZcrSFhRixyJoCgIGECbdSOP5iIYj9p8nuHqzlz5qxYsWLx4sULFy5UljQ2Ng4bNqyioqKsrCwxMdG+ZUNDw913371+/XoRSU1NVR67ohEkTNA6BNAWnEMMhtavKujJBHDBe++9Z7FYFixYYF8SHR398MMPi0hhYaF94TvvvNOnT5/169dPmzZNhVJ6RcKE0J8JoA1ImEBQmNUuAACtWLlyZVNTk8l02bUns9ksIi0tLfYl+fn5HTp0eP/997Oyst58881wl9IzEibszp8/7/r/oV07Bu8A8IaECQQLIRPABVlZWa4LV69eLSIjR460L3n88cd/8YtfOGVR1ZEw4YScCcAvJEwgiLTVTASgKbm5uTt27EhISHCchWjw4MEkTOgC42YB+IiECQSXtlqKALRj06ZN9913X+fOnTds2KB2WbwhYcILciaAVpEwgaAjZAJwY9WqVRMmTOjUqdO2bdt69eqldnE8ImGiVeRMAF6QMIFQ4J5MAM5ycnJefPHFuLi4oqKi66+/Xu3ieETChI+MfX9mYWFhc3Pztdde6/icISd1dXX79u0TkZtuuik2NjaMpQM0jYQJhAghE8AlVqs1Ozt7y5YtQ4YM2bp1a0xMjNol8oiECb8YOGdOnz69pqZm4sSJXka2f/LJJ9nZ2SKyYcOGiRMnhrF0gHaRMIHQYbgsgEsmTJiwZcuWzMzM4uJiEiYMhnGzAOxImEBI0ZMJ4IInn3yyoKAgIyNj8+bNapfFGxImAmbg/kwAviNhAqFGyAQgIlJfX7906VLlxbhx45zWpqWl5eTkqFEuZyRMtBE5E4hwJEwgDAiZAERESkpKWlpaRKS8vNx1rUZmCiFhIijImUDEImEC4UHIBCAiMnHixABq2XBWzCRMBBE5E4hAJEwgbJj4B4AOkDARdMwDBEQUEiYQTvRkAtA6EiZCxEj9madOnVqzZo2ntRUVFeEsDKA1JEwgzAiZADSNhImQMkzO3L9//5QpU9QuBaBFJEwg/AiZALSLhIkwMEbOtFgsHTt29LT23LlzjY2N4SwPoBEkTEAVhEwAGkXCRNgYIGdmZGRs2LDB09qioqIxY8aEszyAFpAwAbUw8Q8ALSJhIsyYBwgwGBImoCJ6MgFoDgkTqjBAfybg3e7du8+cOSMiw4YN69atm5cta2try8rKRKR79+5Dhw4NU/mCh4QJqIuQCUBbSJhQETkTxlZdXT1t2jQRycjI2Lp1q5ctp0+fXlBQYDKZ9u3bF67SBQ0JE1Adw2UBaAgJE6pj3CwMbOrUqRMnThSRgoKCt956y9Nmq1evLigoEJHHH388MTExfOULBhImoAWETABaQcKERpAzYWCvvPJK165dRWTOnDm1tbWuG9TV1eXk5IjIwIEDn3jiiTAXr41ImIBGEDIBaAIJE5oSaTnTarVarVa1S4FwiImJefnll0XkzJkzs2fPdt3g/vvvP3PmjMViWbt2rcmkp4YiCRPQDj2dOwAYFQkTGhQJObO2tnbGjBlXXHFF+/bt27dv36tXr+XLl6tdKITcHXfccdttt4nIu+++u379esdV77zzjrJk2bJlffr0Uad8ASFhAppCyASgMhImNMvYObOurm7QoEGvvfZaSkrKyy+/vGjRovbt28+dO3f69OlqFw0ht3LlypiYGBG5//77v/32W2VhfX290reZmpo6Z84cNcvnJxImoDXMmBdZ7Gdhfu/QCBImtM+o7dc5c+asWLFi8eLFCxcuVJY0NjYOGzasoqKirKxMd9O9wF/vvPPO5MmTReSee+5ZtWqViEydOjUvL69z584VFRVxcXFqF9BXRv0LRbDQ+lUFITOy8GcGTSFhQi8M2Yrt3r17fX39999/73jfXW5u7j333LNo0SLdzfiCAPzyl7989913RWT//v2NjY3Jyckikp+ff+edd6pdNF8Z8m8TwUXrVxU8JxOAOkiY0BFDPj9z5cqVTU1NTjO7mM1mEWlpaVGpUAirlStX7tmzp66u7t57721ubhaRyZMnkzABtJ2+K0j4i2s50AgSJvQoElq0o0eP3rFjxwcffJCenq52WRAO69evnzRpkvI6Njb2008/VR5won2R8PeIoKD1qwom/gEQbiRM6JSx5wESkdzc3B07diQkJJAwI8dtt912++23K6/feOMNEiaAoEvGQnIAACAASURBVCBkAggrEiZ0zcA5c9OmTffdd1/nzp03bNigdlkQVmPHjlVeJCUlqVoQX5EwAe0jZAIIHxImDMCQOXPVqlUTJkzo1KnTtm3bevXqpXZxAI9ImIAuEDIBhAkJE4ZhsJyZk5Nz7733xsXF7d27d+jQoWoXB/CIhAnoBbPLAggHEiYMxhjzzVqt1uzs7C1btgwZMmTr1q0xMTFqlwjwiIQJ6Ag9mQBCjoQJQzJAf+aECRO2bNmSmZlZXFxMwoSWkTABfaEnE0BokTBhYLruz3zyyScLCgoyMjI2b96sdlmgJ1arVS4+UjU8SJiA7hAyAYQQCROGp9OcWV9fv3TpUuXFuHHjnNampaXl5OSoUS5oV21t7eOPP56Xl9fc3CwiPXv2nDVr1qOPPhrq45IwAT0iZAIIFRImIoQec2ZJSUlLS4uIlJeXu66NjY0Ne4mgaXV1dYMGDaqpqcnIyMjMzKytrc3Pz587d+5nn32Wm5sbuuOSMAGd0nQViKCzn6z5vSPUSJiINLSGYWBz5sxZsWLF4sWLFy5cqCxpbGwcNmxYRUVFWVlZYmJiKA7K3xSCgtavKpj4B0DwkTARgQwwDxDgyXvvvWexWBYsWGBfEh0d/fDDD4tIYWFhKI5IwgR0jeGyAIKMhImIpcdxs4AvVq5c2dTUZDJd1jmhzP2jjLsOLhImoHeETADBRMJEhCNnwpCysrJcF65evVpERo4cGdxjkTABA2C4LICgIWECwrhZRIbc3NwdO3YkJCSkp6cHcbckTMAYuLYaWbj1GaFDwgQc+dJW5pwMndq0adOkSZOio6M/+uijXr16BWu3JEyEAmdaVdCTCSAISJiAE+/9me3ataNvEzq1atWqCRMmdOrUadu2bSRMAG5xTyaAtiJhAm75fn8mN21CL3Jycl588cW4uLiioqLrr78+WLsNZ8I8cOBAdXW1yWRye6OpiJSWln799dciMmTIkLi4ONcNqqqqPvroIxFJT0+PiorasmWL1Wp13cxsNlsslsTExCuvvDKonwDQAWq1yKK7AQMBX+nXywc0ABIm4J2n1rPTcq394dDRqi9h+P9jtVqzs7O3bNkyZMiQrVu3xsTEBGvPYe7DfOGFF37729+KyIkTJ3r06OG01mazdezYsampSUQeeuihF154wXUPDzzwwMqVKzt06HD27FkR6dixY2Njo5cjJiQkPP7443fccUfQPgP8obvWrzEwXBYa0s7F+fMS2D+n/aj9yQyLhAm0ytO4WU/3Z6rF99OvSIBnZv6F6F94TJgwYcuWLZmZmcXFxfpNmCKSmpqqvCgrK3NdW1xcrCRMESkoKHC7h71794rI+PHjHReaTCaLC2XV4cOHJ0+e/NRTTwXrIwDaR8iE+ry0aQLmtB8CZyiQMAEf+TjfbPhPUF5SJeDoySefLCgoyMjI2Lx5c1RUVLB2q8p9mP3791dCclFRkeva7du3i0hycrKIVFZWVlVVOW3Q2NhYUVFh38burrvuOufixx9/zMvLUw73P//zP0ePHg3NZwI0h5AJdbht2YSO28AZwuNFABIm4BdN/YG4DZaAJ/X19UuXLlVejHPhdkCpL1Sc6SclJUVEysvLXVdt27ZNRGbOnNm7d29x15mppFARycjIaPVAJpPpV7/61dtvvy0iNpvtb3/7W9sKDugGE/8g3JRKRcUGjf3QjNEPGAkT8MvF856beYBctwzdX5PDSS9ER4AxlZSUtLS0iIdUFhsbG8A+1Z1LNiMjY+3atUeOHGlubnbsmK2trf34449FJDU1taSkpLKysrCw8L777nN8765du0Skd+/e8fHxPh5u9OjR8fHxVVVVx48fD96HADSNnkyEidOFcy1w6ttUuzi6QcIEAqPieSZsw0ZgSBMnTjzv2apVq/zdoboJUy7elmmz2ZxGzO7YsUNEEhISYmJixowZIyKFhYU2m81xm9LSUhFJT0/364hKv6iS1YFIQMhEyGm/cUPU9B0JE/CXvyeWIJ6INHh1D1A9YYpIXFyckvpKSkocl2/atEkuBsjMzEyTydTc3Lxz5077Bi0tLYcOHRKH2YN8YbPZlEmGoqOjg1F8QAcImQghfTVuiJqtImEC4dH2s5D2r+4hMmkhYSqUaXuUx13affDBByKi9GGazeZRo0bJxbs0FUrHptlszszM9P1Yy5cvb25uFpGRI0cGo+yADhAyERL6ipeOiJqekDCBwIT/L0Wnp18YnnYSplzsrtyzZ499NOyHH37Y0NAQFRWlTAskIrfeeqs4zPQjIvv27RORESNGmM3O05pYrdbGyx06dGjjxo1Tp0793e9+JyJxcXH33HNP6D8ZoAlM/IPgU9o3uqaU3z5Xh8ql0QASJtAWvkz54ySwGYBUn1kN8ERTCVNE0tLSTCaT1Wr95z//mZiYKCKFhYUikp6ebjJd6INRejsPHz5cU1OjzG+khMy0tDTXHebn5+fn53s6XOfOndevX89wWUQOejIRTPYOTGOw92qqXRCVkTCBtlOmSAnd/vU7fgSRQGsJU0Sio6OHDBkiDlPmKj2WjgFy8ODBXbt2lYsTAlmtVuXWytGjR/t4FJPJdP3118+dO/fIkSNDhw4N6icANI2QieAwcPsmwkfPkjCBIPIravp+2jHq6RfGoMGEqVCGxe7du1dEGhoalADpNKOPkieVp2Vu377dZrN17tx58ODBrnubMmXKd5c7e/bsDz/88Pnnnz/77LOBPegF0C9CJoLA8O2biO3SJGECoRDEnGmw8SMwHs0mTLkYMpWnmCgxsmfPnn369HHcJisrS0SKi4vl4sNLxo4d63ZvZrM5+nIdOnSwj7wFIg33ZKKtIqd9Y8+ZGqkdQ42ECYSO8tfUxktXkXP6hU5pOWGKSEpKitlsPnPmzMmTJ5Wxsq4BUunYPHXqVF1d3f79+0XEr3llgYjF9RUELgKvoEdOlyYJEwgDX0bPejrhRNrpF7qj8YQpIiaTSenMLC8vV8bKuobMbt26DRw4UERKSkqUB2b69YRMIGIRMhEgww+R9cLwOZOECYSTv39fEXiBD7qj/YSpsN9yefToUbPZnJGR4bqNMhVQfn6+1WpNSEjg7krAF4RMBIL2jYFzJgkTCD/vXZqOf5WRfIEPeqGXhCkio0aNEpG8vDwRGTFihMVicd1mzJgxIrJx40YRSUpKCnoZrFar1WptdTObzebLZoBGEDLhNxKmwpCzzpIwARW1OnqW0y+0T0cJU0SGDh0aHR2thDe3T7+Ui7duKtvceuutwTp0bW3tjBkzrrjiivbt27dv375Xr17Lly/3sv348ePT09ODdXQg1AiZ8A9NHEcGu0WThAlogae/O06/0D59JUzFuHHjlBeeIpzJZFKG0ZrNZk9B1F91dXWDBg167bXXUlJSXn755UWLFrVv337u3LnTp093u/3DDz+szH8L6EU7jf/lI7jsZ//Afu80cTxp107rlWirSJh2Bw4cqK6uNplMysz1rkpLS7/++msRGTJkSFxcnOsGVVVVH330kYikp6dHRUUVFhY2Nzdfe+21iYmJng5aV1e3b98+Ebnpppu44QcKp79K7fxFtmunocJANFMH6TFhqmXOnDkrVqxYvHjxwoULlSWNjY3Dhg2rqKgoKytzrCwaGhruvvvu9evXi0hqaqrywBX4pY2tXwSGnkz4ioTphd77M0mYjvbt25ednT1hwoSTJ0+6rrXZbGPGjMnOzs7Ozv7zn//sdg9PPfVUdnb2XXfdFRUVJSLTp0/Pzs5+5plnvBz0k08+UfZZXl4elE8BAzh/kWgpYQJukTD98t5771kslgULFtiXREdHP/zwwyJSWFhoX/jOO+/06dNn/fr106ZNU6GUQBsQMuETEmar9JszSZhO7NPTKzPaOykuLm5qalJeexq8tHfvXhEZP358aAqIyMLpF9pHwvTXypUr//GPf5hMl7XDzWaziLS0tNiX5Ofnd+jQ4f3331+9enW4iwi0DSETraOJ4yM95kwSpqv+/fvHxMSIiNtRScoDu5OTk0WksrKyqqrKaYPGxsaKigr7NkBbcPqF9pEwA5CVlXXnnXc6LVSS5MiRI+1LHn/88crKSk/3bgBaRshEK2jiGBgJ0xP747ldV23btk1EZs6c2bt3b3HXmamkUBFx+7w1wHecfqF9JMxgyc3N3bFjR0JCguP8Q4MHD3bq7QT0gv+48IYmjr901JlJwvRCyYdHjhxpbm52XF5bW/vxxx+LSGpqqjLHoOPNM4pdu3aJSO/evePj48NUXABQAwkzWDZt2nTfffd17tx5w4YNapcFCA5CJjwiYQZGFzmThOmdclumzWZzGjG7Y8cOEUlISIiJiVEez11YWGiz2Ry3KS0tFc9T4QM+4gwMjSNhBsuqVasmTJjQqVOnbdu29erVS+3iAMFByASCT+M5k4TZqri4OGU0bElJiePyTZs2ycUAmZmZaTKZmpubd+7cad+gpaXl0KFD4jB7EBAAEiY0joQZLDk5Offee29cXNzevXuHDh2qdnGAoDGrXQBoFE2cNlJypgZrXBKmj5KTkysrK5XHXdp98MEHIqL0YZrN5lGjRu3atWvbtm2jR49WNlA6Ns1mc2ZmptMOT506tWbNGk+HU+YKAoTTLzSPhBkUVqs1Ozt7y5YtQ4YM2bp1qzLhHGAYhEy4QRPHqEiYvktPT3/11Vf37Nljs9mUeRc+/PDDhoaGqKgoZVogEbn11lt37dq1ffv2Z599Vlmyb98+ERkxYoQyE72j/fv3T5kyJYyfALrE6RcaR8IMlgkTJhQUFGRmZq5bt055qDJgJIRMOKOJEyxa68wkYfolLS3NZDJZrdZ//vOfiYmJcnGOn/T0dPtcf8pDSg4fPlxTUxMbGysXQ6YyJ5ATi8XSsWNHT4c7d+5cY2NjCD4HAAQNCTNYnnzyyYKCgoyMjM2bN6tdFiAkCJlACGknZ5Iw/RUdHT1kyJDy8vLy8nIlZCrPJnEMkIMHD+7atWt9ff2OHTumTp1qtVrLyspExD561lFGRoaXaQOLioqUUbiIZFzjg5aRMIOlvr5+6dKlyotx48Y5rU1LS8vJyVGjXEAwETJxGZo4hkTCDExKSkp5efnevXtzcnIaGhqUAOk0o8/o0aPXrl1bUFAwderU7du322y2zp07Dx48WKUiQ8c4/ULLSJhBVFJS0tLSIh6exqyMiwH0jtllcQlNnFBQfaZZEmbAlHsvlaeYFBQUiEjPnj379OnjuE1WVpaIFBcXy8WHl4wdOzb8RQWA0CFhBtfEiRPPe7Zq1Sq37zp//rzTU7UALSNkAiGnYs4kYbZFSkqK2Ww+c+bMyZMnlbGyrgFS6dg8depUXV3d/v37RcR1XlmgVVzjg2aRMAEEgJCJC2jiGA8Js41MJpPSmVleXq6MlXUNmd26dRs4cKCIlJSUKA/M5AmZAAyDhAkgMIRMIBzC35lJwgwKZQqfgoKCo0ePms3mjIwM122UqYDy8/OtVmtCQgK308BfXOODNpEwAQSMkAkRmjiGQ8IMllGjRolIXl6eiIwYMcJisbhuo8wKu3HjRhFJSkoKUUmsVqvVam37NgDgCxImgLYgZAJhErbOTBJmEA0dOjQ6OlpJbm6ffikXb91Utrn11luDW4Da2toZM2ZcccUV7du3b9++fa9evZYvXx7ANtAsrvFBg0iYANqIkAmaOIZCwgw6+0PM0tPT3W5gMpmUYbRms9lTEA1MXV3doEGDXnvttZSUlJdffnnRokXt27efO3fu9OnT/doGAHxHwgTQdpp4TDzCxl5zOP7eCZnh1K5dCKtqEqbBzJkzZ8WKFYsXL164cKGypLGxcdiwYRUVFWVlZYmJiT5uA83S6em3XTvRY7ENLIg1CwkTxuO29YtQoycz0um0iQNXJEzjee+99ywWy4IFC+xLoqOjH374YREpLCz0fRsA8AUJE0CwmNUuABBZlDszg15nkzANaeXKlU1NTSbTZVcDzWaziLS0tPi+DbSJa3zQFBImgCAiZEY0mjjGQMI0qqysLNeFq1evFpGRI0f6vg0AeEfCBBBcDJcF9I2EGVFyc3N37NiRkJDgaRYiH7eB6rjGB+0gYQIIOib+iSxOtz7TylFLsCZpIGFGlE2bNk2aNCk6Ovqjjz7q1atXwNtAC3R9+mXiH61pS51CwoThMfGPKujJjFy6buJASJgRZtWqVRMmTOjUqdO2bds8pUdftgEAOxImgBAhZAK6RMKMKDk5Offee29cXNzevXuHDh0a8DbQCK7xQQtImABCh4l/ABW0cY5ZEmbksFqt2dnZW7ZsGTJkyNatW2NiYgLbBgAckTABhBQ9mRGK6+j6RcKMKBMmTNiyZUtmZmZxcbGn9OjLNgBgR8IEEGr0ZAJ6QsKMKE8++WRBQUFGRsbmzZvbsg00hWt8UBcJE0AYMLtsZHGsWvjNq87f+QBJmBGlvr6+e/fuLS0tN910U9euXZ3WpqWl5eTk+LJNuMoLXxkgZDK7rNb4XpuQMBGBmF1WFfRkAvpAwow0JSUlLS0tIlJeXu66NjY21sdtAEBBwgQQNvRkRhaHaznqFqQV27dLU5OIyOjREh3tcbPDh+X4cRGRlBS58sowlS2I2nLtmb9cQKfoyUTQ+VKbkDARsejJVAUT/0CLvvpKsrMlO1t++1uP25w8KaNGSXa25OXpMmH6joQJGIYBEib0iIQJIMzoyYwseunJFJHsbNm4UUTk/fclK8t5bUuLDBkihw9Lz55y6JCOQ2arl59JmICRGCNk0pOpNd6rEhImIhw9maogZEYWHYXM+noZMEBqaiQmRj79VLp1u2ztzJny6qtiMsm+fZKYqFIRg8HflgF/sICu+RUyDxyQ6uq2HvH66+X669u6EyeETK3xUpWQMAFCpioImZFFRyFTRHbvluRkEZHUVCkqurT87bflrrtERP7yF3n4YXXKFix+tQz4awX0zq+QOX68bNnS1iPec4+sWtXWnTghZGqNp6qEhAkIIVMl3JMZifTyJ5aUJHPniojs2CEvvHBh4bFjct99IiJZWbpPmF6QMAH8/veX/bh5s5w75/7f2bPy3Xfy6aeydau8+KIMG3bpXd9+G+ZSQytImABURE9mZFGqHB39zm02ufFGOXRILBY5eFB695ZBg+TIEYmPl08+kS5d1C5fm7m9/EzCBIzK33sy58+Xp5++8Do2Vj79VFyeh+re9u0yebKcOSMDB8rBg36X07tw9mQWFEhLi/tVJpNYLDJkiK/fiRfKFAC9eklCgq9F6t5dhg71uE1dnezbJyJy000ShmcJuVYlJEzAjp5MVRAyI4vuQqaIHDsmgwZJU5MMHCijR8uyZUa4FdPOl5YBf6SAMQQw64/NJv/931JRceHH22+Xdet8fa9yx0FUlHz/vX8HbVU4Q+bVV0t9fSvb9O8vTz8tmZmBH0U57z74oPz1r74WafJkWbPG4zZFRTJmjIjIhg0ycWLgBfORU1VCwgQcETJVwXBZaF2fPvKXv4iIHDoky5aJiPz5zwZJmK5ImIAGtbso/Ic2mWTdOrFYLvz47ruyerWv701KkrvukuZmjz2BOtKtm6SmOv/r31/MZhGRigoZP17eekvtUmoDCROAFhAyoQP33XfpKSajRsmjj6pamqA6f/5Sg4CECWiQ4x9mOwdhK8D118tTT136cdYsqary9b333y8icuhQ8EsVZklJUlTk/O/TT+XcOXn1VYmKEhF54AFpaFC7oGojYQLQCEImdMBmk9raC6+PHLn02khImIC+hDNwPvqojBp14XVjo0yZ4usbb7lFoqLk9OkQlUt9JpPMmCF//rOISGOjFBSoXSBVkTABaAchEzrw2GNSXi4mk4hIXZ38+tdqFyjYSJiAroUhcL75pnTufOH1vn3ypz/5+sakJOP37/3mNxde7NzpZq3VKjt3ypYtsnOnWK3hLFdYkTABaAohE1pXUHDhnsx58+Shh0REtm+X5cvVLVRo0SwAtMPfv8cQBc74+MvmpHn8cTl82Kc3pqS0PnGO3p09e+HFT3962fK6Opk5U664QlJTZfx4SU2VK66QmTON/4UoqEoAqMisdgEAb06dutBv2a+fLFwoVqsUFEhlpcyfL2PG+DTXvMa5bYWqMr8IgKAL7pSGv/qVbNgg774rImKzyeTJcvDghdsRvXjssbYfWetee+3Ci9TUSwtPnpThw+XUKRGRESOke3f59lspKpJXX5Xt26WsLBxPFgkPtzUGCROAuujJhKZNmSL19WKxXJhfsUMHyc8Xk0laWmTyZGluVrt8AOCDYF05euWVS9Ho6NGICJDetbTI8uWyaJGISI8el6aIs9kkM1NOnZLYWDl4UIqLZc0a2bZN/t//k5495eRJmTRJxVIHmWucJGECUB0hE9r1xBNSUiIi8vzz0q/fhYWDB8vixSIiR4/K7NmqlS1YaAkA8F2XLvLGG5d+XLHC/V2IxlNcLOPGXfbv1lvl5z+XK66QuXPFZpOYGNm48cKt+yKyZs2Fh4tu2iQDB17aT+/esmWLiEhZmRQVhf1jhAUJE4AWEDKhUbt3XwiTWVnywAOXrVqwQIYNExF57TXZtEmFsgGAWtLSLru+NnWqfPuteqUJl5oaKSi47F9hoZw8eSFePvKIfPbZZWHyvfdEREaMkMGDnXfVr5/cdJOIyJo14Sp9WCjZkoQJQCO4JxNaVFcnd9whIhIbK7m5bjZYu1b69ZPGRvnNb+ToUenWzXkDZQpBM//BAWhAcJv+zz4r27fLsWMiIjU1sn+/pKUFcfdadNNN8uCDF15brbJ9u6xbJzabTJwoubnSpYvz9koHr9ksGze62ZvFIiJSWRm68orNFsKde0LCBKAdtMGhRVOmSF2diMhbb0nXrm42UCZa/M1v5MwZmTxZdu++sLy2Vh5/XPLyLtyu2bOnzJoljz4apmIHjJYBoFkB304Zur/rqChZu1ZuvFFsNvnd74yfMEXk5z+/7OFV06fL7Nly662ycaMcPOhmFh/lqS27dsmuXR73qYynDdgPP3hba39WiokRYwAiEiETmrNkiezYISIyb56kpHjc7Ne/ls2b5d13Zc8e+dOf5A9/kLo6GTRIamokI0MyM6W2VvLzZe5c+ewz992hABBcYbtgZLVKhw4ybpw880x4Dqg5t9wi+fkyfrycPClpaVJWJtHRl9YqHYnDhknv3h730LFjgIfu31/27JGWFm/b2NcqvaYAEGkImdCchQtl4UKftly37rIflyyRmhpZvPjS2+fOlWHD5PXXZeZMSUwMcjkBQNQYiXDqlGRmyqBB8tZbYT6ytmRmyuzZsmKFVFTI7NmXTYkUHS2NjTJsWEgeqqyMzv3kE2/bnDx54cUNNwS/AACgfQzjgHG8955YLLJgwaUl0dHy8MMiIoWFahWqFe3aMVYW0J/zDsJ86G+/lbQ06dJF3n/fp9vOV626LH0ZzDPPSI8eIiL/+MdlE+2OHCkiUlbm/l0FBbJmjRw4EOBBBw0SEamqupQk3R5CRKKiJD4+wKMAgK4RMmEcK1fKP/7hfAOM0gjzPq4JADyxx0gVg6VdS4tMmCB1dVJU5Ga2G7e2bjXy9LMdOsgrr1x4PWPGpYcnZ2aKiJSVuXnES1WVTJggU6ZIXl6AB7U/jdM+F5GT4mLZvl1EZMqUAA8BAHpHyIRxZGXJnXc6L1y9WuTiVW0ACIC6wdLRXXfJwYNSUCBxcb6+pbzcj431KC3tQpb78ktZtOjCwnvukZ49RUTuvPOynFlTI5MmXbij9ZFHnHd14oTzg1Ic/9kNHCgTJ4qIFBRIYqJs2XLhOqbNJocPyxNPyJgxIiIdOsj8+SH5yACgfe00UnEiPJRpEiPnd56bK/fcIwkJrdw8oyKGywIRpV27dgH/xT/2mPzlL/LBB35MJ3vsmPTtK9u2BXkG2nbtwlePXH211NfL5MneHmtZXy99+0p9vZhMcvCgJCSIiBw5IklJFyYqv+km6d1bvvtOCgouzPv6/vuXOiRFxJcphB0/8rffyujR8vHHl5aYzZdmlBWR6Gh5773wTfxLVQJ4YZ8knD+TcKInE4a1aZPcd5907iwbNqhdFABom5dekmXL5NVX/cstyt2YN94YmjJpRteu8vzzIiI2m0ybdmFhv37y6afym9+I2Szl5ZKXJ5s2idUqw4dLWdllCTMAXbrI/v3y5z9fmr3WnjDNZrn7bvnkk4h4tAwAeEJPZmRxuJajbkFCbtUqufde6dpVCgpk6FC1S+MZl5+BiBJYT+aWLTJ+vPzP/8iSJX68q6pKrr9empvlxx/9PqJ34ezJhC+oSgAv6MlUBT2ZMKCcHLn3XomLk717NZ0wAaBVpaXyy1/Kb37jX8I8dUrS0qSpydf5gQAACCKekwlDsVolO1u2bJEhQ2TrVomJUbtAXnHtGYB3J0/KxIkyfLisWuXT9jab7N0rmzfLyy9LU5OIyE03hbSAAAC4QciEoUyYIAUFkpkp69ZJVJTapQGAy50/f973EbN1dZKcLHV18tFHct11Hjez2cRqlR9/lJaWC8HSUadOgZcWAIDAEDJhHE8+KQUFkpEhmzerXRQAaLPf/16+/FJE5MwZOXMmwJ1ofEAHAMCQmPgnsrRzmKbdYL/5+nrp3l1aWuSmm6RrV+e1aWmSk6NGsbxiuCwQgdryFBONYOIfraE2Abxg4h9V0JMJgygpufA47PJyN2tjY8NcHAAAACBC0ZMZWQzck6k7XHgGIhM9mQg6KhTAC3oyVcEjTAAACJ/z5887XO4DAMCACJkRilYOAAAAgFAgZAIqYGgTAAAAjIqQCQBAWDGWBABgbITMyEUrBwAAAEDQETKBcGOsLAAAAAyMkBnR6MwEAFVw+gUAGBghEwgrujEBAABgbIRMAABUQGcmAMCoCJmRjlYOAAAAgCAiZALhw1hZAI64zAcAMCRCJmjlAAAAAAgaQiYQJnRjdwMrzgAAIABJREFUAnDFZT4AgPEQMiFCKwcAAABAkBAygXCgGxOAJ1zmAwAYDCETF9DKCR0SJgAAACIHIROXkDMBQBWcfgEARkLIBEKLbkwAviBnAgAMg5CJy9DKAQAAANAWhEw4I2cGEd2YAHzH6RcAYAyETCBUSJgA/EXOBAAYACETbtDKaTsSJgAAACITIRPukTMBQBWcfgEAekfIhEc0dAJGNyaAtuD0CwDQNUImEGQkTABtR84EAOgXIRPe0MrxFwkTQLBwBgYA6BQhE62gleM7EiYAAABAyETryJm+IGECCDpOvwAAPSJkwic0dLwjYQIIEU6/AADdIWTCVzR0PCFhAggpTr8AAH0hZMIPNHRckTABhAGnXwCAjhAy4R8aOo5ImADCRjn9cgYGAGgfIRN+I2cqSJgAwuz8+fOcgQEA2kfIRCC4oE7CBKAWciYAQOMImQhQxF5QV9I1CROAiiLz9AsA0AtCJtok0ho6SrwkYQJQHSNKAACaRchEW0VOQ4cOTACaErEjSgAAGmdWuwAwAiV6tWvXzqgRTGnDkTABaND58+fbtWsnIpyiAAAaQchE0Bi1oUMHJgCNM/yVPgCAvhAyEUz2ho4YImrSgQlAR4x6pQ8AoDuETASfAaIm8RKAHhng9AsAMABCJkJFp20d4iUAvdPp6RcAYBiETISWjto6xEsARqKj0y8AwGAImQgHLbd17LP/Ey8BGI/j6Ve0dwYGABgSIRPho6m2DtkSQOSwn+i0ebEPAGAwhEyEm1NbR8Lb3CFbAohkThf7hMAJAAgBQiZU45o2JTTNHYfdky0B4LIzIYETABB0hEyoz1Nzx2EDP/bmugOCJQB44v0MzOkTABAAQia0xW0gdJs8/doDAKBVrudPT6dff87KAICIQ8iEDqibG202m9VqdV1usVjCXxhonNVqtdlsTgtNJpPZzMkWusRlO+hUxNbdVEPQCJPaBQC0rrCw8Kcuunfvrna5oEXTp093/d+Sk5OjdrkAILJEbN1NNQSN4KoG4JOHHnpowIAB9h8NfykUgZk+ffrIkSMdl9x7771qFQYAIlwE1t1UQ9AIQibgk7Fjx2ZkZKhdCmhdUlJSUlKS4xJqdwBQSwTW3VRD0AiGywIAAAAAgoaeTCA4jh8/vnfvXqeFffr0SUxMFJHKysrS0lJPa0WkoqLi448/dlybmpoaFxfnuOTQoUOHDx92PfSoUaN69Ohhs9neeust17VXX321dq7j8i0BADQlDBXTkSNHDhw44KkAJpPpqquuSktLY24eGAn/m4Hg+Prrr8vKynbu3Hns2DERSU5O7tu37/XXX6+sra6uLisrKyoqqqystK/t06eP/e3V1dVFRUXr1q1rbm5OSEhISkoaO3as0yH+/e9/Hzx4sK6uLi8vT0T69es3fPjw6667zmQyiYjVaq2urq6qqtq2bduXX35pMpmmTJnStWtX1/2oiG8JAKApYaiYvvnmm08//bS+vv71118XkWHDhmVkZHTp0kVETpw4UVNTU1hY+P3338+bN2/BggXh+dRAyJ1HJOH3HoCtW7eKyNatW33Z+M033xQRk8nkdq1Su1gsFk9vnzZt2oMPPuj9EJ988onyS/zss8/cbnDbbbeJyO233+5LgVURUd+SiLRaWgBAcPlVd58PS8X01VdfKRXTF1984bTq7NmzI0aMEJHZs2f7WGDfUQ3R+lUF92QCwdShQwfx/HguZW1LS4vb9zY2Np4+ffqll17yfog9e/aISOfOnfv16+d2g8LCQhEZPXq0PwUPK74lAICmhKFiKikpEZG4uLjevXu77n/27NkismLFilOnTvlffEBzCJlAMCn1kIg0NTW5rj1y5Ijyorm52XXt0qVL58+fr4zq9KK4uFhEPA3vPHTokHLoUaNG+VzqcONbAgBoShgqpoKCAhFxmvrVzn5Dpn0kDqBrhEwgmK666irlhest/lVVVbm5ucrrEydOOK09fvz4sWPHUlJSWj3E9u3bRSQ5OdntWuVCadeuXe33k2gQ3xIAQFPCUDEpVz89jaCx51h7SQBdI2QCwdS/f3/lhevFznnz5r3xxhvKa/uNGXaPPfbYs88+2+r+KyoqGhoaRES5ecPV7t27RfOjQPmWAACaEuqKqaqqqqqqSkRuueUWtxso/Zw9e/a0z1sL6BohEwimqKgo5YVTLfXhhx/GxcXdfPPNbtcWFxf37dvX9SYNV0oXXKu3GnrqwdMIviUAgKaEp2Lq1q2b241LS0vLyspE5JVXXgmo+IDm8AgTIJhMJpPZbLZarU43dSxatGjdunVRUVEmk8lmszU2NjqufeKJJzZt2uTL/nfu3Ckio0ePdjv9gF5uNeRbAgBoSqgrJqWj0u2o2mPHjt1xxx3R0dH5+fkMsYFhEDKBIOvQoUNDQ0Ntba19SW5ublZW1pVXXikiUVFRTU1NjpdC//73v0+ePDk6OtqXnRcVFYlIYWFh9+7dXdd+9913opNbDfmWAACaEtKKSbkhMyYmRqmhRESJrAUFBXl5edOmTVu8eHFsbGwwPw+gKkImEGR9+/bdv3+/8tRmEWlqanr77bftlUrXrl2bmpoOHjyo/NjY2Lh27Vql561VFRUVZ86cEZF9+/YlJCS4bjBp0qT169d7ug567NixHTt2PPDAAwGsDTp9fUu1tbV/+9vfKisrr7vuul/96lf2W3cAAIYRuorJfkNmdXX1mjVr7MuvueaatLS0559/3impeqmRw1xZAwHjnkwgyLp16yYi33//vfLjU089NX/+fPvaG264QUTOnj2r/Lh06dInnnjCxz0rd3RER0e7zU5ycTSOU3yqqqr605/+9Otf/3rQoEHKLR++rw0dHX1LR44cmTdv3r333rt69epevXoNGDDgr3/9q4+FAQDoRagrJovFsm7dulUOnnrqKWWgrLKZl5pIrcoaCBghEwgyZfIApR46fvz4559/7ngPhvIkLmW8zfHjx48fPz5y5Egf96xcMU1PT3e79sCBA8punWaui4qKyszMfOONN6644gq3pfWyNnR09C3Nnj176dKlcXFxJpNpxowZDz744OzZsysqKnwsDwBAF0JXMdlvyPT+LE0vNZFalTUQMEImEGQ/+9nP5GI9NH/+/GeeecZxrVI9KHXYo48+umzZMt/3rAza8fQc53379om7Ww1jYmL69+/vqWLzvjZ0dPQt7dmz57//+7/tP44ZM0ZENm7c6HuRAADaF7qKSbkhc/jw4d4381ITqVVZAwHjnkwgyDp27CgilZWVxcXF8fHxTpOVK5dC6+rqdu/ePWDAgB49evi42yNHjii3Gnp69qP3pzxrjY6+pbvvvtu1XrfZbL7vAQCgfSGqmOw3ZPre8wkYACETCLJBgwaJyOnTp5csWbJ+/XqntX379hWRzz//fMmSJT7Oe67Ys2ePeL3VUHn2o15Cpo6+pVWrVjn+eODAARHJyMjwfQ8IrsrKytLSUqeFFovlzjvvVF5XVFR8/PHHjmtNJtPUqVODW4zjx4/v3bvXaWGfPn2UB6m7LaR9rdtCpqamxsXFOS45dOjQ4cOHXQ89atSoHj162Gy2t956y3Xt1VdfreL/Tz2WGVCEqGJSbsg0m81Ot2kAxkbIxAU0mIJFuamjoaEhOztbmffckTKvwJkzZ6ZOnerjvOcK77ca2p/9qJc6TKffUkNDw8qVK+++++7BgwcHtge03ddff11eXl5dXW1v502cONHxwsHp06dzc3OVKw7x8fFJSUn9+vULRTHKysp27tx57NgxEUlOTu7bt699GHZ1dXVZWVlRUZEyU6Wytk+fPva3V1dXFxUVrVu3rrm5OSEhISkpaezYsU6H+Pe//33w4MG6urq8vDwR6dev3/Dhw6+77jqla91qtVZXV1dVVW3btu3LL780mUxTpkzp2rWr637CSY9lNoww1ONHjhxRLrS5ZTKZrrrqqrS0NLNZl83LEFVMPt6QCRiMLs8CCAUaTMGi1D39+/efNWuW61plvE1CQsL06dN932dNTc327dvl4ux2Tmw225tvvikiZrPZ8ZeiZTr9lu6///7hw4e/8sorgb0dQXHzzTfffPPNIpKSkrJr1674+PgNGzY4bpCWltahQ4fk5OTnn3/e7X+woEhMTExMTHzrrbemTZtmMpmcnmSQlJSUlJT0xhtv3H333RaLxfU5B+np6crVkI4dO3qarzglJSUlJeXw4cPKOXPdunWOadlisShTX06aNOnLL7+87bbb3F6nCzM9ltkwwlCPf/PNN59++ml9ff3rr78uIsOGDcvIyOjSpYuInDhxoqamprCw8Pvvv583b96CBQvC86mDKBQVU11dnfLnHx8fH6RiAjpxHpGk1d+70go3mUxu1yqVisVi8fT2adOmPfjgg97L8Mknnyhl+Oyzz9xucNttt4nI7bff7n0/YbN161YR2bp1q4/bf/DBByKyY8cOL3srKSnxcW+xsbFOl4TNZnNsbKyy9sUXX7RYLI5rTSaTxWJZu3at6666du06bdo0Twfyvjbo9Pgt/fGPf7znnnt8LJKdiLT6R4HAvP/++8ov9H//938dl//73//+xS9+4el/V3C99957Shl++OEH17Vr1671csr97rvvUlNTf/zxR++HePHFF0Wkc+fOnjZQ2r4rV670q+QhpccyG0YY6vGvvvpK+Y/9xRdfOK06e/asckv87Nmz/S15cPlbd58PdsXUu3dv14rpyiuv9OW9XmqiACprqiFSjyrouMdllIrfZrNZrVZPa1taWty+t7Gx8fTp0y+99JL3Qyhj2Dp37uxpAJu+7i10NWDAgKefftpx3nOntcuWLfN9uObp06edGq8//PDD6dOnlbVz5sw5d+6c49off/zx3Llzd9xxR3A+TMjo7lvKzc1tbm5W7s+02Ww8wkQLMjMzlbF8y5cvty9samoaN27cokWLPP3vCi7lrKgc13XtkSNHlBfKfJVOli5dOn/+/FZH0CmzVXka02EfBD5q1CifSx1yeiyzYYShHlduMoyLi3OaGkfZ/+zZs0VkxYoVp06d8r/4agpuxfTFF1+4Vkz/+c9/gldeQNMImbgMDaa2i4uL+8Mf/uBpbXx8/KOPPhrO8miTvr6lgoKC+vr6JUuWKD8ePXqUkKkFJpNp5syZIlJYWHjy5EkRsVqt2dnZDz74YFZWVnjKcNVVVykvXG9Uq6qqys3NVV6fOHHCae3x48ePHTvmSxJWBoEnJye7Xas0912fyqMuPZbZMMJQjys3GXp6UpS9+84+cEkv9FUxARpHyMRlaDABTkpLS3Nyck6cODFr1qwHHnhgxowZDz744DXXXKN2uSAict999ykN4r///e8iMnny5IyMjLZMJPvcc88dP37c9+379++vvHBtss+bN++NN95QXtuHF9o99thjzz77bKv7r6ioaGhoEM9P5dm9e7dobOiHHstsJGGox70/C8qeY+0lARCBmPgHl2m1wZSamioiX331lVMINHCDSe8qKioWL15cWVlZX1+fl5dXXV19zTXXrFmzxpe1kcPL95CVlVVfX69MlWGnl1l8Da9bt26//OUv165d+8orr/zrX/8aMGBATk5OW3Y4d+5ci8Xi+3RBynSU4nLO/PDDD+Pi4pQJilzXFhcX9+3b13WooSvlulur9xd4umynCj2W2UhCXY/bn/ro6TSo9HP27NnTPm8tfOSlJqKyhu4QMnEZGkzG079//3Xr1gW2NnJ4+R6++eabMBcGfpk9e/batWvr6+ubmpqeeOKJNu4tOjq6a9euvm9vMpnMZrPVanUamrho0aJ169ZFRUWZTCabzdbY2Oi49oknnvDxOXvKvJSjR492exOdNu8v0GOZjSQ89Xi3bt3cblxaWlpWViYizMIdAC81EZU1dIeQicvQYAKgL7fccsv1119/9OhR1+F/vjh69OigQYOefPJJ5W6rG264QXmMwbFjx7Kzs0eOHPm3v/3N+x46dOjQ0NBQW1trX5Kbm5uVlaU8Zy8qKqqpqcmxQf/3v/998uTJPj5nr6ioSEQKCwu7d+/uuva7774TP+8veOedd+655x4fN7bLy8vz/TbXoJcZfgl1PW5/6qPrqmPHjt1xxx3R0dH5+fmMSAIiHCETzmgwAdCRNWvWKBM2lpeXHzhwYPDgwX69/brrrps5c+b8+fO3bt2an58fExMTHR2dm5s7Z86cPn36/PKXv2x1D3379t2/f799QHVTU9Pbb7+tnOtEpGvXrk1NTQcPHlR+bGxsXLt2retjM92qqKg4c+aMiOzbty8hIcF1g0mTJq1fv96v1vxtt9127bXX+r69wt791apQlBn+Cmk9rtyQGRMTY/9PrkTWgoKCvLy8adOmLV68ODY21vtOqLsBwyNkwhkNJgB6UVhY+PLLLx89ejQuLq6xsfGVV17xN2R26NDhhRdeWLBgwUsvvTRy5EiLxfLcc899++23mzdv9vEhKN26dROR77//Xvnxqaeemj9/vn3tDTfcUFVVdfbsWeXHpUuX+j6mVxmXGB0d7faEKRf7lPw6Z5rN5pEjR/q+vb9CUWb4K3T1uP2GzOrqascbAq+55pq0tLTnn3/ex6RK3Q0YHiETzmgwAdCF0tLSJUuWbN269corr5w5c+Zf/vKX119/fdmyZUp3jV9iYmLmzp1rtVqffvppm8326quv+t6cVW6BU86Kx48f//zzz5988kn7WuV5Ekqv0fHjx48fP+77KUtp96enp7tde+DAAWW3mpqGSo9lNp5Q1+MWi2XdunWtPunEC+puwPB4hAmcuTaYHC/nR1qDCYA2HTp0aNasWRs2bOjSpYuIPPDAAyJitVpfffVVf3dVV1e3cOHCuLi4c+fO3XbbbY8//vjUqVNvueUWe8+Pdz/72c/k4llx/vz5zzzzjOPaK664Qi6eUR999NFly5b5XjClAJ6eRrhv3z7R3s2Neiyz8YSuHrffkNmWhAkgEtCTCWd+NZief/553/dM4wNAUJw8eXLatGkFBQVKj42I9O7dOzk5edeuXStXrvTrgelHjhy58cYbO3Xq9P7776ekpIwbN+6qq646fPjwzJkzx4wZM3v27Jdeesn7Hjp27CgilZWVxcXF8fHxTlNuKg36urq63bt3DxgwoEePHr4XTLm/wNMDn7w/q9CT0tLSF1980a+3iMhDDz3kS9duiMoMf4WuHld+g8OHDw9iaQEYEiETzmgwAdCympqazMzM/Pz8+Ph4x+WPPPLIrl27Kisri4qKfD+T9O7d+/e///2sWbNiYmJE5LPPPmtubo6Ojn777bczMjJ8uW1s0KBBInL69OklS5asX7/eaW3fvn1F5PPPP1+yZImPs3cq9uzZI17vL1Ae+OTvOTM+Pj4jI8Ovtyjv8mWzEJUZ/gpRPW6/IbPtI12puwHDI2TCGQ0mAJp18uTJ5OTk1atX2584b5eZmRkfH19VVfXcc8/5fiaxWCyON6TV1tY2NDQor6dOnerLHpShiQ0NDdnZ2a63gyp9rWfOnJk6daqPc6IovN9fYH/gk7/3F8THx//617/26y2+C1GZ4a8Q1ePKDZlms7ntv0HqbsDwCJlwRoMpMMePH9+7d6/Twj59+iQmJopIZWVlaWmpp7UiUlFR8fHHHzuuTU1NjYuLc1xy6NChw4cPux561KhRPXr0sNlsb731luvaq6++OoC6PET4lhCwU6dOvfnmm08//bTVah04cKDrBg0NDT//+c+rqqoKCwt3797taWS+d1FRUVar1a+3KGfC/v37z5o1y3Wt0muUkJAwffp03/dZU1Ozfft2Ebnhhhtc19pstjfffFNEzGZznz59/Cpt6OixzEYVono8iDdkaqfulrBUTEeOHDlw4ICnAphMpquuuiotLc1splkO4+B/M5zRYArM119/XVZWtnPnzmPHjolIcnJy37597feXVldXl5WVFRUVKXPKK2sdP2x1dXVRUdG6deuam5sTEhKSkpLGjh3rdIh///vfBw8erKury8vLE5F+/foNHz78uuuuU+p7q9VaXV1dVVW1bdu2L7/80mQyTZkypWvXrq77URHfEgJQWlo6atQox+zXqVOnPXv2OF6TmjFjxuuvv26z2UTEZrMlJycrv1y31xS8qK+v97cBbbFYROSFF15wu1Zp7v/1r3/1cW/du3evq6uzf9jFixf/8Y9/jImJOX36tIi89NJLc+fObWlpUdZardb27dubzeY333zzjjvu8KvYQaTHMhtbKOrxuro65WKx8boTw1AxffPNN59++ml9ff3rr78uIsOGDcvIyFAmLTtx4kRNTU1hYeH3338/b968BQsWhOdTAyF3HpHEl9/7Bx98ICI7duxwu3br1q0iUlJS4uMRY2Njna7Mmc3m2NhYZe2LL76otM/sTCaTxWJZu3atX58rpJSPvHXrVl82VtKyyWRyu1apXSwWi6e3T5s27cEHH/R+iE8++UT5rj777DO3G9x2220icvvtt/tSYFVE1LckIq2WFrpWXV399NNPe1r71VdfLVu2LJzlAYJbj/fu3du1Hr/yyiuDV96Q8KvuPh+Wiumrr75SvsAvvvjCadXZs2eVGStmz57tY4F9RzVE6lEFM1DD2YABA55++mlPTyEfMGDAsmXLfB/Uevr06R9++MHx/9wPP/ygXN4WkTlz5pw7d85x7Y8//nju3Dn9Xt5WrhDbbDa3I+6UtfYr+k4aGxtPnz7d6lSWyt2tnTt37tevn9sNtD+1Bt8SjCQuLu4Pf/iDp7Xx8fF+zXYLtF1w6/EvvvjCtR7/z3/+8//bu9vYKsv7D+CXtZaK9W8GAQZNNS6OJqN0ErZExwKyzW5hCwm4wURg82Fkk7q9QJ10ZiI43DKjKBqnbBVhPElChgbmHDhkWlwkc5u1uFobsvIwVslYVwtKV/8v7njSnD4dytWHUz6fV+ec6/Tu1YuHX7/nvn/3FW++g0I/FKakqbWwsDDtVkzJ8cvLy0MIjz766OHDh898+jDoCJmk8wvT2UjqUAghaTFNU1NTkzxI7iyfZsWKFRUVFT1eqpfchreryztT3a3Tpk3LeNb9zSoB9B11vBf6oTAlTa1dtYunThenrsSBrCZkQkwjRoxIHnRs8W9oaKisrEweHzx4MG20vr6+tra2qw+e20u6W6dPn97paPJB6SDfbtQqATCo9ENh6n6rtlSOTc0EspqQCTGltlXo+GHn0qVL165dmzxONWak3HHHHT//+c97PH51dXWyv0JX243u2bMnDPqrQK0SAINKXxem1C6jXV2onJznvPzyy1P3rYWsJmRCTMmdJEOHKvXqq68WFhamdpFOG927d29xcXHHJo2OklNwPbYadnUGb5CwSgAMKv1TmMaMGdPpm6uqqvbt2xdCePLJJ3s1fRh0bGECMeXk5OTm5ra2tqY1ddxzzz1bt27Nz8/Pyclpa2trbm5uP7ps2bIMd8RO7iD/pS99qdPbD2RLq6FVAmBQ6evClNpltONQbW3tnDlzCgoKNm3a5BIbhgwhEyIbPnx4U1PTsWPHUq9UVlbOnDkz2RE7Pz+/paWl/UehTzzxxNy5czPcEXvXrl0hhOeff37cuHEdR//73/+GLGk1tEoADCp9WpiShsxRo0YlFSqEkETWnTt3btiwYcGCBffee+/YsWNj/jwwoIRMiKy4uPi1115Ldm0OIbS0tGzcuDFVVEaOHNnS0vL6668nT5ubm7ds2ZKceetRdXX1iRMnQgivvPJKaWlpxzdcd91127Zt6/g56LFjxx5//PG6urpLL7103rx5qc6T9mpra3fv3v29730vs5/ybGXXKmWygABktb4rTKmGzEOHDm3evDn1+ujRo8vKylatWpVKqj2Wm34u1tBrejIhsjFjxoQQTp48mTxduXJlRUVFanTChAkhhPfeey95umLFimXLlmV45KSjo6CgoNPsFD66GictPtXU1CxduvQ73/nOunXrPvGJT0ycOPGxxx5LjTY0NPz0pz9duHDhpEmTkoaQ/pFFq9T9AgIwNPR1YcrLy9u6desv21m5cmVyoWzytm7KzUAVa+g1IRMiS24ekNSh+vr6AwcOtO/BSHbiSq63qa+vr6+vnzp1aoZHTj4x/cpXvtLp6P79+5PDpt25rry8fMWKFYWFhTk5Obfccsutt95aXl5eXV2dmu3Xvva1tWvXXnjhhWf4g56VLFql7hcQgKGh7wpTqiGz+700uyk3A1WsodeETIjsoosuCh/VoYqKip/97GftR5PykNSwJUuWPPDAA5kfOblop6t9nF955ZXQWavhSy+99OlPfzr19Nprrw0h/OY3v0mejho1qqSkpMctpKPLolXqfgEBGBr6rjAlDZlTpkzp/m3dlJuBKtbQa3oyIbKLL744hFBXV7d3796ioqK0m5UnH4U2Njbu2bNn4sSJl112WYaHrampSVoNu9r7satdnm+88caOZamtrS3D79tHsmiVBucCAhBXHxWmVENmj2c+lRuGEiETIps0aVII4ciRI8uXL9+2bVvaaHFxcQjhwIEDy5cvz/C+54mXXnopdNtqmOz92DE+/fKXv2z/dP/+/SGEGTNmZP6t+0IWrdLgXEAA4uqjwpQ0ZObm5qa1aXSk3DCUCJkQWdLU0dTUNGvWrOS+5+0l9xU4ceLE/PnzM7zveaL7VsPU3o/d17CmpqZf/OIXN95442c+85nMv3VfyNJVGjwLeK5Zt25dxxenTZuWdjLh6NGjv//979u/Mn78+KuuuiruZOrr619++eW0F1PfqK6urqqqqqvREEJ1dfWf//zn9qNf/OIXCwsLU09ramqSXy47lZOTM2LEiLKystzcga/gWTRV6FEfFaYMGzLTKDdkO//vQ2RJ7SkpKVm8eHHH0eR6m9LS0ptuuinzYx49evSFF14IH93dLk1bW9v69etDCLm5uePHj+/mON/97nenTJny5JNPZv6t+0iWrtLgWcDxYt3aAAANLElEQVRzSmtra21t7T//+c9nn322sbExhFBWVlZSUjJt2rS0d548efLFF198+umnQwilpaWf/exn0y54i+Jf//rXvn37Xnzxxdra2hDC9OnTi4uLU12+hw4d2rdv365du5KNEJLR9n/lDh06tGvXrq1bt546daq0tPSaa6758pe/3P7477777htvvHH8+PGnnnoqhHD11VfPmDHjYx/7WAjh4MGDR48eff7550+ePLl06dK77747+k93RrJoqtCjvihMjY2NyaefRUVFZzQZ5Yas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6XKcMmXKmfw0AyOLpsq55pyt3coQg4SQCUCWqaqqCiGczYWgNTU1kydPvuSSS7Zv3/6FL3zhq1/96ogRI/72t78tWrTo2muvLS8vX716dY8Hufjii0MIdXV1e/fuLSoqStvDIzmT2djYuGfPnokTJ1522WWZTCzV5RjlMteqqqpHHnnkTL/q+9//fiZndONOFYChRMgEIJu0trYmrYCf//zne32QK6644oc//OHixYtHjRoVQnjzzTdPnTpVUFCwcePGGTNmZHiznEmTJoUQjhw5snz58m3btqWNFhcXhxAOHDiwfPnyZ599NsOJJT9abm7u2fx0KUVFRTNmzOjFV2XytrhTBWAoETIByCZ79uxpbW3Nzc295ppren2QvLy89rfhOXbsWFNTU/I48z7PpCezqalp1qxZybYl7SW3BTpx4sT8+fMz7wSL2+VYVFS0cOHCsz9OpzRkAtAVhQGArNHW1rZx48YQwuTJkyNmm/z8/NbW1jP9qiQ6lpSUdNoBlVwuW1paetNNN2V4wMbGxmSPk15sytLPsmiqAPQ/IROALFBRUTFs2LDzzz//qaeeCiH86U9/Ov/884cNG5bce+YsHT9+PPMomJKXlxdCePjhhzsdTc5zPvbYY5kc6pOf/OQFF1wwevToo0ePhhB+9atfXXDBBZdccsmZTqkfZNFUARgo53344YcDPQf6z3nnnZc88OcOcJYOHz68fv36u+66q9PRhoaGZ555ZsmSJf08KwDa89vvgBAyzy3+mQEAcO7w2++AcLksAAAA0QiZAAAARCNkAgAAEI2QCQAAQDRCJgAAANEImQAAAEQjZAIAABCNkAkAAEA0QiYAAADRCJkAAABEI2QCAAAQjZAJAABANEImAAAA0QiZAAAARCNkAgAAEI2QCQAAQDRCJgAAANEImQAAAEQjZAIAABCNkAkAAEA0QiYAAADRCJkAAABEI2QCAAAQjZAJAABANEImAAAA0eQO9AQYGOedd95ATwEAABiCnMk8t3z44YcDPQUAAGAoO0/qAAAAIBZnMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiEbIBAAAIBohEwAAgGiETAAAAKIRMgEAAIhGyAQAACAaIRMAAIBohEwAAACiETIBAACIRsgEAAAgGiETAACAaIRMAAAAohEyAQAAiOb/ATR5Wtu1QDvSAAAAAElFTkSuQmCC\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":43078,"title":"How many bottles can you drink?","description":"Sometimes if you buy a drink in a glass bottle you can return that bottle and get some money back.\r\n\r\nLet's assume we have \"x\" amount of money, the drink cost \"p\" per bottle, and we get \"c\" back money for each bottle.\r\n\r\nIf we have enough time, how much can we buy drinks for \"x\" money?\r\n\r\nExample\r\n\r\nWe have $10, drink costs $1, for each bottle we return we get $0.35\r\n\r\n Step I: \r\n We buy 10 drinks\r\n We get $3.50 back for bottles\r\n \r\n Step II: \r\n We buy 3 drinks and we are left with $0.50\r\n We get back $1.05 back so we have $1.55\r\n\r\n Step III:\r\n We buy 1 drink and we have $0.55\r\n We get $0.35 for bottle, so we have $0.90 and we can't buy another drink for that.\r\n\r\nSummary for $10 we were able to drink 14 bottles.","description_html":"\u003cp\u003eSometimes if you buy a drink in a glass bottle you can return that bottle and get some money back.\u003c/p\u003e\u003cp\u003eLet's assume we have \"x\" amount of money, the drink cost \"p\" per bottle, and we get \"c\" back money for each bottle.\u003c/p\u003e\u003cp\u003eIf we have enough time, how much can we buy drinks for \"x\" money?\u003c/p\u003e\u003cp\u003eExample\u003c/p\u003e\u003cp\u003eWe have $10, drink costs $1, for each bottle we return we get $0.35\u003c/p\u003e\u003cpre\u003e Step I: \r\n We buy 10 drinks\r\n We get $3.50 back for bottles\u003c/pre\u003e\u003cpre\u003e Step II: \r\n We buy 3 drinks and we are left with $0.50\r\n We get back $1.05 back so we have $1.55\u003c/pre\u003e\u003cpre\u003e Step III:\r\n We buy 1 drink and we have $0.55\r\n We get $0.35 for bottle, so we have $0.90 and we can't buy another drink for that.\u003c/pre\u003e\u003cp\u003eSummary for $10 we were able to drink 14 bottles.\u003c/p\u003e","function_template":"function y = bottle(x,p,c)\r\n  y = x;\r\nend","test_suite":"%%\r\nx = 10;\r\np=1;\r\nc=0.35;\r\ny_correct = 14;\r\nassert(isequal(bottle(x,p,c),y_correct))\r\n\r\n%%\r\nx = 20;\r\np=1.5;\r\nc=0.4;\r\ny_correct = 17;\r\nassert(isequal(bottle(x,p,c),y_correct))","published":true,"deleted":false,"likes_count":13,"comments_count":1,"created_by":90955,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":80,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-05T21:45:06.000Z","updated_at":"2026-02-06T20:05:06.000Z","published_at":"2016-10-05T21:45:06.000Z","restored_at":"2017-09-28T06:15:07.000Z","restored_by":null,"spam":false,"simulink":false,"admin_reviewed":true,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSometimes if you buy a drink in a glass bottle you can return that bottle and get some money back.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eLet's assume we have \\\"x\\\" amount of money, the drink cost \\\"p\\\" per bottle, and we get \\\"c\\\" back money for each bottle.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf we have enough time, how much can we buy drinks for \\\"x\\\" money?\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWe have $10, drink costs $1, for each bottle we return we get $0.35\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ Step I: \\n We buy 10 drinks\\n We get $3.50 back for bottles\\n\\n Step II: \\n We buy 3 drinks and we are left with $0.50\\n We get back $1.05 back so we have $1.55\\n\\n Step III:\\n We buy 1 drink and we have $0.55\\n We get $0.35 for bottle, so we have $0.90 and we can't buy another drink for that.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSummary for $10 we were able to drink 14 bottles.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1975,"title":"Kaggle: Reverse Game of Life - Zoo of Stills and Oscillators","description":"\u003chttp://www.kaggle.com/c/conway-s-reverse-game-of-life Kaggle's Conway's Reverse Game of Life\u003e contest inspires this Reverse Life Zoo challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003chttp://mathworld.wolfram.com/GameofLife.html Game of Life at Wolfram\u003e. \u003chttp://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Wiki Life\u003e.\r\n\r\n\r\n  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n  2. Any live cell with two or three live neighbors lives on to the next generation.\r\n  3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\r\n\r\n\r\nDetermine the Zoo of life at its previous Snapshot. The output must evolve to the given Zoo Snapshot.  It is a Zoo since all animals are in their private enclosures and do not interact with any other animals. Animals are stable or cyclic oscillators.\r\n\r\n*Input:* Zoo , an [m,n] array\r\n\r\n*Output:* ZooPre, image of the Zoo at its prior iteration\r\n\r\n\r\n*Example:*\r\n\r\n  Zoo        ZooPre\r\n  0000000000  000000000  \r\n  0110000100  011000000  \r\n  0110000100  011001110  \r\n  0000000100  000000000  \r\n  0000000000  000000000\r\n\r\n*Additional References:*\r\n\u003chttp://www.conwaylife.com/wiki/Oscillator Oscillators\u003e, \u003chttp://www.conwaylife.com/wiki/Still_life Still Life\u003e\r\n\r\n*Next:* Small Island - Prior Snapshot Prediction","description_html":"\u003cp\u003e\u003ca href = \"http://www.kaggle.com/c/conway-s-reverse-game-of-life\"\u003eKaggle's Conway's Reverse Game of Life\u003c/a\u003e contest inspires this Reverse Life Zoo challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003ca href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003eGame of Life at Wolfram\u003c/a\u003e. \u003ca href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003eWiki Life\u003c/a\u003e.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n2. Any live cell with two or three live neighbors lives on to the next generation.\r\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\u003c/pre\u003e\u003cp\u003eDetermine the Zoo of life at its previous Snapshot. The output must evolve to the given Zoo Snapshot.  It is a Zoo since all animals are in their private enclosures and do not interact with any other animals. Animals are stable or cyclic oscillators.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e Zoo , an [m,n] array\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e ZooPre, image of the Zoo at its prior iteration\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample:\u003c/b\u003e\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eZoo        ZooPre\r\n0000000000  000000000  \r\n0110000100  011000000  \r\n0110000100  011001110  \r\n0000000100  000000000  \r\n0000000000  000000000\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eAdditional References:\u003c/b\u003e \u003ca href = \"http://www.conwaylife.com/wiki/Oscillator\"\u003eOscillators\u003c/a\u003e, \u003ca href = \"http://www.conwaylife.com/wiki/Still_life\"\u003eStill Life\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eNext:\u003c/b\u003e Small Island - Prior Snapshot Prediction\u003c/p\u003e","function_template":"function ZooPre=Zoo_prior(Zoo)\r\n ZooPre=Zoo;\r\nend","test_suite":"%%\r\n block=[0 0 0 0;0 1 1 0;0 1 1 0;0 0 0 0];\r\n Zoo=repmat(block,3,1);\r\n\r\n ZooPre=Zoo_prior(Zoo);\r\n mc=conv2(single(ZooPre),[1 1 1;1 0 1;1 1 1],'same');\r\n ZooChk=~(mc\u003c2 | mc\u003e3) \u0026 ((ZooPre \u0026 mc==2) | (ZooPre \u0026 mc==3) | (~ZooPre \u0026 mc==3)); \r\n\r\n \r\n   assert(all(all(ZooChk==Zoo))) \r\n%  figure(1);imagesc(ZooPre)\r\n%  figure(2);imagesc(Zoo)\r\n\r\n%%\r\ncaterer1=[0 0 0 0 0 0 0 0 0 0;0 0 0 1 0 0 0 0 0 0;0 1 0 0 0 1 1 1 1 0;0 1 0 0 0 1 0 0 0 0;0 1 0 0 0 0 0 0 0 0;0 0 0 0 1 0 0 0 0 0;0 0 1 1 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0];\r\n\r\ncaterer2=[0     0     0     0     0     0     0     0     0     0;\r\n     0     0     0     0     0     0     1     1     0     0;\r\n     0     0     1     0     1     1     1     1     0     0;\r\n     1     1     1     0     0     1     0     1     0     0;\r\n     0     0     0     0     0     0     0     0     0     0;\r\n     0     0     1     1     0     0     0     0     0     0;\r\n     0     0     0     1     0     0     0     0     0     0;\r\n     0     0     0     0     0     0     0     0     0     0];\r\n\r\ncaterer3=[0     0     0     0     0     0     0     0     0     0;\r\n     0     0     0     0     0     0     0     1     0     0;\r\n     0     0     1     1     1     0     0     0     1     0;\r\n     0     1     1     1     1     1     0     1     0     0;\r\n     0     0     0     1     0     0     0     0     0     0;\r\n     0     0     1     1     0     0     0     0     0     0;\r\n     0     0     1     1     0     0     0     0     0     0;\r\n     0     0     0     0     0     0     0     0     0     0];\r\n\r\n Zoo=[caterer1 zeros(8,1) caterer2 zeros(8,1) caterer3] ;\r\n\r\n ZooPre=Zoo_prior(Zoo);\r\n mc=conv2(single(ZooPre),[1 1 1;1 0 1;1 1 1],'same');\r\n ZooChk=~(mc\u003c2 | mc\u003e3) \u0026 ((ZooPre \u0026 mc==2) | (ZooPre \u0026 mc==3) | (~ZooPre \u0026 mc==3)); \r\n\r\n \r\n   assert(all(all(ZooChk==Zoo))) \r\n%  figure(1);imagesc(ZooPre)\r\n%  figure(2);imagesc(Zoo)\r\n\r\n%%\r\ncaterer1=[0 0 0 0 0 0 0 0 0 0;0 0 0 1 0 0 0 0 0 0;0 1 0 0 0 1 1 1 1 0;0 1 0 0 0 1 0 0 0 0;0 1 0 0 0 0 0 0 0 0;0 0 0 0 1 0 0 0 0 0;0 0 1 1 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0]; % 8x10\r\nLoaf=[0 0 0 0 0 0;0 0 1 1 0 0;0 1 0 0 1 0;0 0 1 0 1 0;0 0 0 1 0 0;0 0 0 0 0 0]; % 6x6\r\nblinker=[0 0 0 0 0;0 0 0 0 0;0 1 1 1 0;0 0 0 0 0;0 0 0 0 0]; % 5x5\r\n\r\n\r\n\r\nZoo=[[Loaf;Loaf'] zeros(12,1) [caterer1;zeros(4,10)] [blinker;blinker';zeros(2,5)] ] ;\r\n\r\n ZooPre=Zoo_prior(Zoo);\r\n mc=conv2(single(ZooPre),[1 1 1;1 0 1;1 1 1],'same');\r\n ZooChk=~(mc\u003c2 | mc\u003e3) \u0026 ((ZooPre \u0026 mc==2) | (ZooPre \u0026 mc==3) | (~ZooPre \u0026 mc==3)); \r\n\r\n \r\n   assert(all(all(ZooChk==Zoo))) \r\n%  figure(1);imagesc(ZooPre)\r\n%  figure(2);imagesc(Zoo)\r\n\r\n","published":true,"deleted":false,"likes_count":3,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":19,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-11-09T04:53:18.000Z","updated_at":"2026-02-13T15:21:36.000Z","published_at":"2013-11-09T05:22:10.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.kaggle.com/c/conway-s-reverse-game-of-life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest inspires this Reverse Life Zoo challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. No wrap around. Beyond edge is zero. Eight Neighbors.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eDetermine the Zoo of life at its previous Snapshot. The output must evolve to the given Zoo Snapshot. It is a Zoo since all animals are in their private enclosures and do not interact with any other animals. Animals are stable or cyclic oscillators.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Zoo , an [m,n] array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e ZooPre, image of the Zoo at its prior iteration\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Zoo        ZooPre\\n0000000000  000000000  \\n0110000100  011000000  \\n0110000100  011001110  \\n0000000100  000000000  \\n0000000000  000000000]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eAdditional References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.conwaylife.com/wiki/Oscillator\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOscillators\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.conwaylife.com/wiki/Still_life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eStill Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNext:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Small Island - Prior Snapshot Prediction\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":46663,"title":"Kaggle: Planetoid Game of Life - Variable Iterations for a wrapping array","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 377.167px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 188.583px; transform-origin: 407px 188.583px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 203.05px 7.91667px; transform-origin: 203.05px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGame of Life at Wolfram\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eWiki Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.467px 7.91667px; transform-origin: 138.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 360.583px 7.91667px; transform-origin: 360.583px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to Evolve a given 25x25 matrix for a given number(1 to 5) of iterations per these revised Life Laws.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 51.0833px; transform-origin: 404px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 350.35px 7.91667px; transform-origin: 350.35px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e1. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 188.65px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 188.65px 7.91667px; \"\u003elive cell with fewer than two live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 115.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 115.5px 7.91667px; \"\u003eif caused by under-population.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 315.7px 7.91667px; transform-origin: 315.7px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e2. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 288.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 288.75px 7.91667px; \"\u003elive cell with two or three live neighbors lives on to the next generation.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 311.85px 7.91667px; transform-origin: 311.85px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e3. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 192.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 192.5px 7.91667px; \"\u003elive cell with more than three live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by overcrowding.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 361.9px 7.91667px; transform-origin: 361.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e4. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 242.55px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 242.55px 7.91667px; \"\u003edead cell with exactly three live neighbors becomes a live cell\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by reproduction.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 265.65px 7.91667px; transform-origin: 265.65px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 34.65px 7.91667px; transform-origin: 34.65px 7.91667px; \"\u003e5. Edges \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 231px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 231px 7.91667px; \"\u003ewrap around. Eight Neighbors. (Change to normal planar life)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 221.317px 7.91667px; transform-origin: 221.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 19.4333px 7.91667px; transform-origin: 19.4333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 146.25px 7.91667px; transform-origin: 146.25px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (A,iter) Initial state(25,25), number of iterations\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 25.2667px 7.91667px; transform-origin: 25.2667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eOutput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 76.2333px 7.91667px; transform-origin: 76.2333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e B the final evolved state\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function B=iterlife(A,iter)\r\n B=A;\r\n \r\nend\r\n\r\n%Non-wap Life calc by Alfonso\r\n% C=convn(A,ones(3),'same');\r\n% B = C==3 | A\u0026C==4;","test_suite":"%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 4\r\niter=1;\r\nAstr='0001100000000000001000001000000000000001110010000100000000000000110001000100000000000000001001000000000000000000000010100000000000001000000000000000000000001010000000000000000000000001000000000000000000000001000000000110000000000000000000000100100000001100000000000001010000001001000000000000001000000110000000000000000000000000000000000000000000000000110000000000000000000000001000000000000000000011100000000000010000000000110000000000010100000000000000000000001010000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000011000000000110110000000010010000000011110100010';\r\nBstr='0001100000000000001100011000000000000001010110001100000000000000000011000000000000000000011111100000000000000000000001000000000000001000000000000000000000000010000000000000000000000001000000000000000000000000000000000110000000000000000000000100100000001100000000000000011000001000000000000000010000000110000000000000000000000010100000000000000000000000110000000000000000000001011000000000000000000011100000000000010000000001010000000000010100000000010000000000001010000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000001100000000011000000000100001000000010010000000010000100000';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 16\r\niter=2;\r\nAstr='0011100100000000001111000101000010000000011010010000111101000000001000011011011100101100000110000100110000010100000000000111001000000100000100000110001100000000000100000001100000000000000101001111010011000000000011110010101010010000111101001100000110110001111111101100001011111000110110110001100001110000000000100111000011011000000011011000110000000100000001111100011000011100000001001000100000000010000001110100000001100100010001000010001100010000110000010000000000000011011100010000100000000000001011000000001000000000001101100000101000000000000100000000111101000000000000000000110000000000000000000011000100000000000010000';\r\nBstr='0000100000000000111101000000011000000000010011001110001101010000010010011010100100101100000110001100110000110010000000000001000100000110000000001011001100000000000110011000100000000000000101001100010111000000000000001010100011010000000000000011100000011000000000000111000000000000110000001111100000000000001000000100000011000000000110001100010000110100000010000111011100011010000010100111000001001000000011111100000000000001000001001110000000101110111100110000000000001101101000000000100000000000010000000001111000000000010001000001100000000000000101100001001110000000000001100001100000000000000000000000110110000000000011000';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 2\r\niter=3;\r\nAstr='0100000101000001000000110011000010000001100000000001000000110011000000000001000000011110000000010000100000000001110000000000000011000000101000000000001011110000010100000001000100100110001110000011001110011011000101100000101010000100000000000000000000000000000000000000101010000000000011101001011011110000000001111110110010001100000000001011101000010100000000000011000000010010000000010000111110000010000000010001000000000000000000001000001111000000000000000001010001000000000011000000001001000000000010100000000010100000000000100000000000000000001000000000000000101000001110000000000000100100001101111000000011000000001100000';\r\nBstr='1000001100100010001000101100000111000001000000001110000011100000000000000011000000011011011000000001101100001111111000000000110110110110100000000100011010000110100000000011000101010011011110000010010010000001000100000000010010001011100010001101000000000011000000001000110111000000000000000100000000101000000000000000000000000010000000000000010000100010000000000000100010001100000000010001111011000001000000010101100000100000000000001001011010100000000000000001010010010000000011000000011000000000000010100000000000000000110000100000000000000000101000000000000000000000010001000000000111000000010000011000000011100010001000000';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 1\r\niter=4;\r\nAstr='0000100001101010011100110000000000010000100101110000011000000110110001000000010010000010111000000010001000000000011100000001100100011100010110000000001100000111001010000001110000111100010111100000011111110100110000110001100010000100100100001000100001000110001110000000000101000000000001000000010111100000000111000000001000010000000011000000000000001100100000000000001110000011010100000000000000000011001001000000000000000000000011100000000000000000001100001111100000100000000000000110101001101100000001100000000110100110000010000000110010010000000001110000011111000111100000000000010100000000001000011000110000001100010111011';\r\nBstr='0000000000000000010000000000000000000110001110000001001100001001001111100100100110001100101100000000010000000111100000000001000000000000010000000000000001100000011100000010000000100000001110000001111101100000001110000000100001111000000010000000001001100010001101000000001101100001110000000001110011000000001111100000000000000000000011110000001100000001000000000000000000000010101010000000000000000011000111011011000010000001001011010111010010100000010100110100001010001000001110011000000100100100000011000011001110000110000010010000000001100001000010000000000011101010000000001100000001000000000000110000000011000000001000000';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n%%\r\n%Test Cases taken from Kaggle Training set\r\n%Case 3\r\niter=5;\r\nAstr='0110000000000011000000011100000000000001100000001001100000000000100001011001001110000110000000010101000000001111100000101100000011011111100001011100000000101000000001100000001100011100000000100100001010000000000000010010000100000000000000000110000001000000000100000000001100000000000010001100000110000000010001000110000000000000011000100001000010000000011000011000100001000000000110000100010001010000000000001100000000001100000000000100000000001110000000000000000000000100100000001000000000000001010000011011000000000000110000001101100000000000000000000110110000000000000000000000100000000110000000001000000000000000000000000';\r\nBstr='1100001000000100000000011100001000000101000000001011110000000100000000001000000100000100000100000000000000000010001001000000000011111001010100100100010001100100000000000001001100011100000001010000001010000100000000000010000100000000000000010010000001000000001100000001000000000000111110001100001000000011011000001000101100000010000000000000001011000001001110010001001000100000110001100000011000010000001110000001000000011000000010000001000000010000000000000001000000011100000001000000000000000100110001000100010000000010001000000101001000000000100100100001000100000000001000001000000100000000000000010100000100000000000000010';\r\nA=reshape(Astr-'0',25,25);\r\nB=reshape(Bstr-'0',25,25);\r\nC=iterlife(A,iter);\r\nif ~isequal(C,B)\r\n logical(A)\r\n logical(B)\r\n logical(C)\r\nend\r\nassert(isequal(C,B))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-10-03T16:50:36.000Z","updated_at":"2020-10-03T17:35:03.000Z","published_at":"2020-10-03T17:35:03.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to Evolve a given 25x25 matrix for a given number(1 to 5) of iterations per these revised Life Laws.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. Edges wrap around. Eight Neighbors. (Change to normal planar life)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (A,iter) Initial state(25,25), number of iterations\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e B the final evolved state\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":1976,"title":"Kaggle: Reverse Game of Life - Create Isle prior State","description":"\u003chttp://www.kaggle.com/c/conway-s-reverse-game-of-life Kaggle's Conway's Reverse Game of Life\u003e contest inspires this Isle Single Evolution step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003chttp://mathworld.wolfram.com/GameofLife.html Game of Life at Wolfram\u003e. \u003chttp://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Wiki Life\u003e.\r\n\r\n\r\n  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n  2. Any live cell with two or three live neighbors lives on to the next generation.\r\n  3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\r\n\r\nCreate an Isle that will evolve in one step to the given Isle state. An Isle is a morphing matrix that may contain non-periodic and interacting animals. The Isle is pre-evolved and will have \u003e10 live cells. Multiple solutions are possible. Imperfect solutions are allowed. This is a Performance Challenge.\r\n\r\n*Input:* Isle, 10x10 binary, 100 Isles\r\n\r\n*Output:* Isle_Predict,  a matrix that will evolve to Isle\r\n\r\n*Scoring:* 1000 * ( Errors / Total_points )\r\n\r\n*Example:*  (Errors=0 and 100 Total Points)\r\n\r\n  Isle        Isle_Predict\r\n\r\n  0001000000 0001000000\r\n  0010100000 0010100000\r\n  0100100000 0100100000\r\n  1101100000 0101000000\r\n  0100100000 0111000000\r\n  0000101000 0010100000\r\n  0010111100 0010111100\r\n  0001000010 0001000100\r\n  0000110100 0000111100\r\n  0000110000 0000010000\r\n\r\n*Next:* Isle_Predict vs Actual Specific Isle Predecessor. Study in Probability.","description_html":"\u003cp\u003e\u003ca href = \"http://www.kaggle.com/c/conway-s-reverse-game-of-life\"\u003eKaggle's Conway's Reverse Game of Life\u003c/a\u003e contest inspires this Isle Single Evolution step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003ca href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003eGame of Life at Wolfram\u003c/a\u003e. \u003ca href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003eWiki Life\u003c/a\u003e.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n2. Any live cell with two or three live neighbors lives on to the next generation.\r\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\u003c/pre\u003e\u003cp\u003eCreate an Isle that will evolve in one step to the given Isle state. An Isle is a morphing matrix that may contain non-periodic and interacting animals. The Isle is pre-evolved and will have \u0026gt;10 live cells. Multiple solutions are possible. Imperfect solutions are allowed. This is a Performance Challenge.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e Isle, 10x10 binary, 100 Isles\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e Isle_Predict,  a matrix that will evolve to Isle\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring:\u003c/b\u003e 1000 * ( Errors / Total_points )\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample:\u003c/b\u003e  (Errors=0 and 100 Total Points)\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eIsle        Isle_Predict\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003e0001000000 0001000000\r\n0010100000 0010100000\r\n0100100000 0100100000\r\n1101100000 0101000000\r\n0100100000 0111000000\r\n0000101000 0010100000\r\n0010111100 0010111100\r\n0001000010 0001000100\r\n0000110100 0000111100\r\n0000110000 0000010000\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eNext:\u003c/b\u003e Isle_Predict vs Actual Specific Isle Predecessor. Study in Probability.\u003c/p\u003e","function_template":"function Isle_Predict=predict_prior_isle(Isle)\r\n% Given Isle find prior Isle state to produce minimal Isle errors\r\n Isle_Predict=zeros(size(Isle));\r\nend","test_suite":"assignin('caller','score',200);\r\n%%\r\ntic\r\nN=10; % size of Isle\r\nQisles=100; % Qty of Isles to process to find error rate\r\n\r\nrng(15,'twister'); % creation fixed set of Isles\r\n\r\nvalid=0; \r\n\r\nwhile valid\u003cQisles\r\n q=floor(N/4)+randi(floor(N*N/4));\r\n idx=randperm(N*N);\r\n \r\n mb=zeros(N);\r\n mb(idx(1:q))=1;\r\n\r\n for i=1:10 % Pre-Evolve\r\n  %mb0=mb;\r\n  mc=conv2(single(mb),[1 1 1;1 0 1;1 1 1],'same');\r\n  mb=~(mc\u003c2 | mc\u003e3) \u0026 ((mb \u0026 mc==2) | (mb \u0026 mc==3) | (~mb \u0026 mc==3)); \r\n end\r\n\r\n if nnz(mb)\u003eN*N/10  % Avoid empty isles\r\n%   figure(1);imagesc(mb0)\r\n%   figure(2);imagesc(mb)\r\n  valid=valid+1;\r\n  Isle{valid}=mb;\r\n  \r\n end\r\n\r\nend % while  to create cases\r\n\r\nerrTot=0;\r\nfor i=1:Qisles\r\n\r\n isle_predict=predict_prior_isle(Isle{i});\r\n  \r\n m1=isle_predict; % Evolve to calculate errors\r\n mc=conv2(single(m1),[1 1 1;1 0 1;1 1 1],'same');\r\n isle_created=~(mc\u003c2 | mc\u003e3) \u0026 ((m1 \u0026 mc==2) | (m1 \u0026 mc==3) | (~m1 \u0026 mc==3));\r\n  \r\n err=N*N-nnz(Isle{i}==isle_created);\r\n errTot=errTot+err;\r\n\r\nend % Qisles\r\ntoc\r\nassignin('caller','score',min(200,floor(1000*errTot/N/N/Qisles)));\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":6,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":17,"test_suite_updated_at":"2013-11-10T02:23:31.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-11-09T19:43:29.000Z","updated_at":"2026-02-13T15:23:16.000Z","published_at":"2013-11-09T20:16:15.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.kaggle.com/c/conway-s-reverse-game-of-life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest inspires this Isle Single Evolution step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. No wrap around. Beyond edge is zero. Eight Neighbors.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCreate an Isle that will evolve in one step to the given Isle state. An Isle is a morphing matrix that may contain non-periodic and interacting animals. The Isle is pre-evolved and will have \u0026gt;10 live cells. Multiple solutions are possible. Imperfect solutions are allowed. This is a Performance Challenge.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Isle, 10x10 binary, 100 Isles\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Isle_Predict, a matrix that will evolve to Isle\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eScoring:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e 1000 * ( Errors / Total_points )\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (Errors=0 and 100 Total Points)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Isle        Isle_Predict\\n\\n0001000000 0001000000\\n0010100000 0010100000\\n0100100000 0100100000\\n1101100000 0101000000\\n0100100000 0111000000\\n0000101000 0010100000\\n0010111100 0010111100\\n0001000010 0001000100\\n0000110100 0000111100\\n0000110000 0000010000]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNext:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Isle_Predict vs Actual Specific Isle Predecessor. Study in Probability.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1966,"title":"Kaggle: Reverse Game of Life - Single Move to One Cell Case","description":"\u003chttp://www.kaggle.com/c/conway-s-reverse-game-of-life Kaggle's Conway's Reverse Game of Life\u003e contest inspires this Single Reverse step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003chttp://mathworld.wolfram.com/GameofLife.html Game of Life at Wolfram\u003e. \u003chttp://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Wiki Life\u003e.\r\n\r\n\r\n  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n  2. Any live cell with two or three live neighbors lives on to the next generation.\r\n  3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\r\n\r\n\r\nFind all the 4x4 Life matrices that upon one evolution produce a single living cell. This is a single evolution reversal set. The 4x4 gets appended by a ring of zeros for processing. The single living cell may be anywhere in the final 6x6 matrix, but none are expected to occur in the outer ring for a valid solution.\r\n\r\n*Input:* None\r\n\r\n*Output:* Cell array of unique 4x4 matrices that evolve to a single cell\r\n\r\n*Scoring:* 600 - (Number of valid unique 4x4 matrices)\r\n\r\n*Examples:*  A few valid matrices that produce a single cell\r\n\r\n  0000  0010  1101\r\n  0001  1000  1110\r\n  0000  0000  0100\r\n  0101  0110  1001","description_html":"\u003cp\u003e\u003ca href = \"http://www.kaggle.com/c/conway-s-reverse-game-of-life\"\u003eKaggle's Conway's Reverse Game of Life\u003c/a\u003e contest inspires this Single Reverse step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003ca href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003eGame of Life at Wolfram\u003c/a\u003e. \u003ca href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003eWiki Life\u003c/a\u003e.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n2. Any live cell with two or three live neighbors lives on to the next generation.\r\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\u003c/pre\u003e\u003cp\u003eFind all the 4x4 Life matrices that upon one evolution produce a single living cell. This is a single evolution reversal set. The 4x4 gets appended by a ring of zeros for processing. The single living cell may be anywhere in the final 6x6 matrix, but none are expected to occur in the outer ring for a valid solution.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e None\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e Cell array of unique 4x4 matrices that evolve to a single cell\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring:\u003c/b\u003e 600 - (Number of valid unique 4x4 matrices)\u003c/p\u003e\u003cp\u003e\u003cb\u003eExamples:\u003c/b\u003e  A few valid matrices that produce a single cell\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e0000  0010  1101\r\n0001  1000  1110\r\n0000  0000  0100\r\n0101  0110  1001\r\n\u003c/pre\u003e","function_template":"function mcell=Life\r\n  mcell{1}=zeros(4);\r\nend","test_suite":"%%\r\nassignin('caller','score',200);\r\n\r\n%%\r\n[mcell] = Life;\r\n\r\n[nr,nc]=size(mcell);\r\n% check for uniqueness\r\nvalid=1;\r\ntic\r\nfor k=1:nc-1\r\n  mk=mcell{k};\r\n for p=k+1:nc\r\n  mp=mcell{p};\r\n  mkp=mk==mp;\r\n  if all(mkp(:))\r\n   valid=0;\r\n  end\r\n end\r\nend\r\nassert(valid==1,sprintf('Not all unique solutions'));\r\ntoc\r\n\r\n% run an evolution and verify\r\ntic\r\nfor k=1:nc\r\n  m=mcell{k};\r\n  m=[zeros(1,6);zeros(4,1) m zeros(4,1);zeros(1,6)];\r\n  mc=conv2(m,[1 1 1;1 0 1;1 1 1],'same');\r\n  m=~(mc\u003c2 | mc\u003e3) \u0026 ((m \u0026 mc==2) | (m \u0026 mc==3) | (~m \u0026 mc==3)); \r\n  assert(isequal(nnz(m),1),sprintf('Non-Single survivor solution'))\r\nend\r\ntoc\r\nassignin('caller','score',min(200,max(0,600-nc)));\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":3,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":"2019-07-16T14:11:36.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-10-31T02:08:53.000Z","updated_at":"2026-02-13T15:19:14.000Z","published_at":"2013-10-31T03:12:32.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.kaggle.com/c/conway-s-reverse-game-of-life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest inspires this Single Reverse step in Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. No wrap around. Beyond edge is zero. Eight Neighbors.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFind all the 4x4 Life matrices that upon one evolution produce a single living cell. This is a single evolution reversal set. The 4x4 gets appended by a ring of zeros for processing. The single living cell may be anywhere in the final 6x6 matrix, but none are expected to occur in the outer ring for a valid solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e None\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Cell array of unique 4x4 matrices that evolve to a single cell\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eScoring:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e 600 - (Number of valid unique 4x4 matrices)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExamples:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e A few valid matrices that produce a single cell\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[0000  0010  1101\\n0001  1000  1110\\n0000  0000  0100\\n0101  0110  1001]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1970,"title":"Kaggle: Reverse Game of Life - Periods of Oscillators","description":"\u003chttp://www.kaggle.com/c/conway-s-reverse-game-of-life Kaggle's Conway's Reverse Game of Life\u003e contest inspires this Period of Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003chttp://mathworld.wolfram.com/GameofLife.html Game of Life at Wolfram\u003e. \u003chttp://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Wiki Life\u003e.\r\n\r\n\r\n  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n  2. Any live cell with two or three live neighbors lives on to the next generation.\r\n  3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\r\n\r\n\r\nDetermine the period of life for a given binary matrix. A stable configuration, Still Life, has a cycle of 1.\r\n\r\n*Input:* M , an [m,n] array\r\n\r\n*Output:* N, Period of Life cycle (Period \u003c11)\r\n\r\n\r\n*Examples:*  A few matrices of varying periods\r\n\r\n  N=1   N=2    N=3 Caterer\r\n  0000  00000  0000000000\r\n  0110  00000  0001000000\r\n  0110  01110  0100011110\r\n  0000  00000  0100010000\r\n        00000  0100000000\r\n               0000100000\r\n               0011000000\r\n               0000000000\r\n\r\n*Additional References:*\r\n\u003chttp://www.conwaylife.com/wiki/Oscillator Oscillators\u003e, \u003chttp://www.conwaylife.com/wiki/Still_life Still Life\u003e","description_html":"\u003cp\u003e\u003ca href = \"http://www.kaggle.com/c/conway-s-reverse-game-of-life\"\u003eKaggle's Conway's Reverse Game of Life\u003c/a\u003e contest inspires this Period of Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References: \u003ca href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003eGame of Life at Wolfram\u003c/a\u003e. \u003ca href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003eWiki Life\u003c/a\u003e.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\r\n2. Any live cell with two or three live neighbors lives on to the next generation.\r\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\r\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\r\n5. No wrap around. Beyond edge is zero. Eight Neighbors.\r\n\u003c/pre\u003e\u003cp\u003eDetermine the period of life for a given binary matrix. A stable configuration, Still Life, has a cycle of 1.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e M , an [m,n] array\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e N, Period of Life cycle (Period \u0026lt;11)\u003c/p\u003e\u003cp\u003e\u003cb\u003eExamples:\u003c/b\u003e  A few matrices of varying periods\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eN=1   N=2    N=3 Caterer\r\n0000  00000  0000000000\r\n0110  00000  0001000000\r\n0110  01110  0100011110\r\n0000  00000  0100010000\r\n      00000  0100000000\r\n             0000100000\r\n             0011000000\r\n             0000000000\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eAdditional References:\u003c/b\u003e \u003ca href = \"http://www.conwaylife.com/wiki/Oscillator\"\u003eOscillators\u003c/a\u003e, \u003ca href = \"http://www.conwaylife.com/wiki/Still_life\"\u003eStill Life\u003c/a\u003e\u003c/p\u003e","function_template":"function N=Life_Period(M)\r\n%\r\nN=0;\r\n\r\nend","test_suite":"%Block  Still 1\r\nm=[0 0 0 0;0 1 1 0;0 1 1 0;0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Beehive  Still 1\r\nm=[0 0 0 0 0 0;0 0 1 1 0 0;0 1 0 0 1 0;0 0 1 1 0 0;0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Loaf  Still 1\r\nm=[0 0 0 0 0 0;0 0 1 1 0 0;0 1 0 0 1 0;0 0 1 0 1 0;0 0 0 1 0 0;0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Boat  Still 1\r\nm=[0 0 0 0 0;0 1 1 0 0;0 1 0 1 0;0 0 1 0 0;0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Table Still 1\r\nm=[0 0 0 0 0 0 0;0 1 1 0 1 1 0;0 0 1 0 1 0 0;0 0 1 0 1 0 0;0 1 1 0 1 1 0;0 0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==1)\r\n%%\r\n%Blinker  Osc 2\r\nm=[0 0 0 0 0;0 0 0 0 0;0 1 1 1 0;0 0 0 0 0;0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==2)\r\n%%\r\n%Toad  Osc 2\r\nm=[0 0 0 0 0 0;0 0 0 0 0 0;0 0 1 1 1 0;0 1 1 1 0 0;0 0 0 0 0 0;0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==2)\r\n%%\r\n%Beacon  Osc 2\r\nm=[0 0 0 0 0 0;0 1 1 0 0 0;0 1 1 0 0 0;0 0 0 1 1 0;0 0 0 1 1 0;0 0 0 0 0 0];\r\nn=Life_Period(m);\r\nassert(n==2)\r\n%%\r\n%Caterer  Osc 3\r\nm=[0 0 0 0 0 0 0 0 0 0;0 0 0 1 0 0 0 0 0 0;0 1 0 0 0 1 1 1 1 0;0 1 0 0 0 1 0 0 0 0;0 1 0 0 0 0 0 0 0 0;0 0 0 0 1 0 0 0 0 0;0 0 1 1 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0;];\r\nn=Life_Period(m);\r\nassert(n==3)","published":true,"deleted":false,"likes_count":2,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-11-04T04:25:13.000Z","updated_at":"2026-02-13T15:20:35.000Z","published_at":"2013-11-04T04:46:57.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.kaggle.com/c/conway-s-reverse-game-of-life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest inspires this Period of Life challenge. The kaggle contest runs from Oct-14-2013 thru Mar-02-2014. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. No wrap around. Beyond edge is zero. Eight Neighbors.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eDetermine the period of life for a given binary matrix. A stable configuration, Still Life, has a cycle of 1.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e M , an [m,n] array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e N, Period of Life cycle (Period \u0026lt;11)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExamples:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e A few matrices of varying periods\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[N=1   N=2    N=3 Caterer\\n0000  00000  0000000000\\n0110  00000  0001000000\\n0110  01110  0100011110\\n0000  00000  0100010000\\n      00000  0100000000\\n             0000100000\\n             0011000000\\n             0000000000]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eAdditional References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.conwaylife.com/wiki/Oscillator\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOscillators\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.conwaylife.com/wiki/Still_life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eStill Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":2494,"title":"What is the nth step in Conway's Life?","description":"Based on \u003cProblem 52. What is the next step in Conway's Life?\u003e\r\n\r\nGeneralize your solution to Problem 52 - Give the state of the game at nth step for any size board.\r\n\r\nNote: This problem uses the MATLAB convention for indexing (t=1 is the initial state).","description_html":"\u003cdiv style = \"text-align: start; line-height: 20px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: normal; text-decoration: none; white-space: normal; \"\u003e\u003cdiv style=\"display: block; min-width: 0px; padding-top: 0px; transform-origin: 332px 40.5px; vertical-align: baseline; perspective-origin: 332px 40.5px; \"\u003e\u003cdiv style=\"font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-bottom: 9px; margin-left: 4px; margin-right: 10px; margin-top: 2px; text-align: left; transform-origin: 309px 10.5px; white-space: pre-wrap; perspective-origin: 309px 10.5px; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; transform-origin: 0px 0px; perspective-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eBased on\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; transform-origin: 0px 0px; perspective-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/52\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003e52. What is the next step in Conway's Life?\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\u003cdiv style=\"font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-bottom: 9px; margin-left: 4px; margin-right: 10px; margin-top: 2px; text-align: left; transform-origin: 309px 10.5px; white-space: pre-wrap; perspective-origin: 309px 10.5px; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; transform-origin: 0px 0px; perspective-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eGeneralize your solution to Problem 52 - Give the state of the game at nth step for any size board.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-bottom: 9px; margin-left: 4px; margin-right: 10px; margin-top: 2px; text-align: left; transform-origin: 309px 10.5px; white-space: pre-wrap; perspective-origin: 309px 10.5px; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; transform-origin: 0px 0px; perspective-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eNote: This problem uses the MATLAB convention for indexing (t=1 is the initial state).\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function M = life(L,n)\r\n\r\n function L = conway(L)\r\n end\r\n\r\n while t\u003cn\r\n end\r\n\r\nend","test_suite":"%%\r\nL = [\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n];\r\nn = 6;\r\nM_correct = [\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0\r\n 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n];\r\nassert(isequal(life(L,n),M_correct))\r\n%%\r\nL = [\r\n0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 \r\n0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 \r\n0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 \r\n0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 \r\n0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 \r\n0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 0 \r\n1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 \r\n1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n];\r\nn = 13;\r\nM_correct = [\r\n 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1\r\n 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1\r\n 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1\r\n 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0\r\n 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0\r\n 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 0\r\n 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0\r\n 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n];\r\nassert(isequal(life(L,n),M_correct))\r\n%%\r\nL = [\r\n 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0\r\n 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0\r\n 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0\r\n 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0\r\n 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0\r\n 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0\r\n 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0\r\n 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0\r\n];\r\nn = 9;\r\nM_correct = [\r\n 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0\r\n 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0\r\n 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\r\n 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0\r\n 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0\r\n 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0\r\n 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0\r\n 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0\r\n 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0\r\n 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0\r\n 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0\r\n 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0\r\n 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0\r\n 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0\r\n];\r\nassert(isequal(life(L,n),M_correct))\r\n%%\r\nL = [\r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \r\n0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \r\n1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n];\r\nn = 1;\r\nM_correct = [\r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \r\n0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 \r\n1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \r\n];\r\nassert(isequal(life(L,n),M_correct))","published":true,"deleted":false,"likes_count":2,"comments_count":2,"created_by":379,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":29,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2014-08-09T05:29:47.000Z","updated_at":"2026-04-08T14:56:31.000Z","published_at":"2014-08-09T05:31:45.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBased on\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/52\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e52. What is the next step in Conway's Life?\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGeneralize your solution to Problem 52 - Give the state of the game at nth step for any size board.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: This problem uses the MATLAB convention for indexing (t=1 is the initial state).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":46686,"title":"Kaggle: Planetoid Game of Life - Solve 3000 of 50000 Puzzles","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 419.167px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 209.583px; transform-origin: 407px 209.583px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 203.05px 7.91667px; transform-origin: 203.05px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGame of Life at Wolfram\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eWiki Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.467px 7.91667px; transform-origin: 138.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 271.517px 7.91667px; transform-origin: 271.517px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to Solve at least 3000 of the 50K puzzles per these revised Life Laws.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 51.0833px; transform-origin: 404px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 350.35px 7.91667px; transform-origin: 350.35px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e1. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 188.65px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 188.65px 7.91667px; \"\u003elive cell with fewer than two live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 115.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 115.5px 7.91667px; \"\u003eif caused by under-population.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 315.7px 7.91667px; transform-origin: 315.7px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e2. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 288.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 288.75px 7.91667px; \"\u003elive cell with two or three live neighbors lives on to the next generation.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 311.85px 7.91667px; transform-origin: 311.85px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e3. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 192.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 192.5px 7.91667px; \"\u003elive cell with more than three live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by overcrowding.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 361.9px 7.91667px; transform-origin: 361.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e4. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 242.55px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 242.55px 7.91667px; \"\u003edead cell with exactly three live neighbors becomes a live cell\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by reproduction.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 265.65px 7.91667px; transform-origin: 265.65px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 34.65px 7.91667px; transform-origin: 34.65px 7.91667px; \"\u003e5. Edges \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 231px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 231px 7.91667px; \"\u003ewrap around. Eight Neighbors. (Change to normal planar life)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 221.317px 7.91667px; transform-origin: 221.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 19.4333px 7.91667px; transform-origin: 19.4333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 354.317px 7.91667px; transform-origin: 354.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mtest,numtosolve) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values], number of case to solve (3000)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 25.2667px 7.91667px; transform-origin: 25.2667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eOutput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 347.317px 7.91667px; transform-origin: 347.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mstart) the Starting state matrix of at least 3000 puzzles all with perfect zero error solutions, [casenumber, 625 values]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 15.95px 7.91667px; transform-origin: 15.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eHint:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250.483px 7.91667px; transform-origin: 250.483px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e There are 3726 trivial solutions where the  Finish state is the Start state solution.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function mstart = solveLife(mtest,numtosolve)\r\n  mstart=zeros(numtosolve,626)\r\nend","test_suite":"%%\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\n%mtest format is [casenumer, iterations, start1:625,finish1:625] for 50K cases 0:49999\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtrain.mat?attredirects=0\u0026d=1';\r\ntic\r\nfname='https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\nurlwrite(fname,'mtest.mat') %1.22s\r\nload('mtest.mat'); %0.42s\r\ntoc\r\n\r\nnumtosolve=3000;\r\nmstart = solveLife(mtest,numtosolve);\r\ntoc\r\nmstart=unique(mstart,'rows'); % remove exact duplicate solutions\r\n\r\nvalid=0;\r\nfor i=1:size(mstart,1)  % \u003c0.5sec to process 3K cases\r\n icase=mstart(i,1); %50000:99999\r\n iter=mtest(icase-49999,2); %Test cases start at 50000\r\n \r\n A=reshape(mstart(i,2:end),25,25);\r\n for j=1:iter\r\n  C=0;\r\n  for r=-1:1 % -1 Up   Using circshift to perform wrap convolution\r\n   Ar=circshift(A,r,1);\r\n   for c=-1:1 % -1 Left\r\n     Arc=circshift(Ar,c,2);\r\n     C=C+Arc;\r\n   end\r\n  end\r\n  A = C==3 | A\u0026C==4;\r\n end %j\r\n\r\n if isequal(A(:)',mtest(icase-49999,3:end)) % mtest [case, iter, data1:625]\r\n  valid=valid+1;\r\n else\r\n  valid=0;\r\n  break;\r\n end\r\nend %main loop i\r\ntoc\r\n\r\nassert(valid\u003e=3000)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":3,"test_suite_updated_at":"2020-10-06T15:37:58.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-10-06T14:46:29.000Z","updated_at":"2020-10-06T15:37:58.000Z","published_at":"2020-10-06T15:37:58.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to Solve at least 3000 of the 50K puzzles per these revised Life Laws.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. Edges wrap around. Eight Neighbors. (Change to normal planar life)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mtest,numtosolve) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values], number of case to solve (3000)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mstart) the Starting state matrix of at least 3000 puzzles all with perfect zero error solutions, [casenumber, 625 values]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHint:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e There are 3726 trivial solutions where the  Finish state is the Start state solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":46691,"title":"Kaggle: Planetoid Game of Life - Solve 40 non-trivial Puzzles","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 482.167px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 241.083px; transform-origin: 407px 241.083px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 203.05px 7.91667px; transform-origin: 203.05px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGame of Life at Wolfram\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eWiki Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.467px 7.91667px; transform-origin: 138.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 384px 7.91667px; transform-origin: 384px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to Solve at least 40, excluding trivials, of the 50K puzzles per these revised Life Laws. Trivial solutions are where the Final state may match the Start State.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 51.0833px; transform-origin: 404px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 350.35px 7.91667px; transform-origin: 350.35px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e1. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 188.65px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 188.65px 7.91667px; \"\u003elive cell with fewer than two live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 115.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 115.5px 7.91667px; \"\u003eif caused by under-population.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 315.7px 7.91667px; transform-origin: 315.7px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e2. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 288.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 288.75px 7.91667px; \"\u003elive cell with two or three live neighbors lives on to the next generation.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 311.85px 7.91667px; transform-origin: 311.85px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e3. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 192.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 192.5px 7.91667px; \"\u003elive cell with more than three live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by overcrowding.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 361.9px 7.91667px; transform-origin: 361.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e4. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 242.55px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 242.55px 7.91667px; \"\u003edead cell with exactly three live neighbors becomes a live cell\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by reproduction.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 265.65px 7.91667px; transform-origin: 265.65px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 34.65px 7.91667px; transform-origin: 34.65px 7.91667px; \"\u003e5. Edges \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 231px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 231px 7.91667px; \"\u003ewrap around. Eight Neighbors. (Change to normal planar life)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 221.317px 7.91667px; transform-origin: 221.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 19.4333px 7.91667px; transform-origin: 19.4333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 354.317px 7.91667px; transform-origin: 354.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mtest,numtosolve) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values], number of case to solve (40)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 25.2667px 7.91667px; transform-origin: 25.2667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eOutput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 339.533px 7.91667px; transform-origin: 339.533px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mstart) the Starting state matrix of at least 40 puzzles all with perfect zero error solutions, [casenumber, 625 values]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 15.95px 7.91667px; transform-origin: 15.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eHint:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 364.467px 7.91667px; transform-origin: 364.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e There are 40 non-trivial solutions for iterations 1 and 2 where a solving Start state has a single bit flip that is adjacent to a set bit or is a set bit. Cases where there are more than 40 set bits in the final state may consume significant time for no solutions. \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function mstart = solveLife(mtest,numtosolve)\r\n  mstart=zeros(numtosolve,626)\r\nend","test_suite":"%%\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\n%mtest format is [casenumer, iterations, start1:625,finish1:625] for 50K cases 0:49999\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtrain.mat?attredirects=0\u0026d=1';\r\ntic\r\nfname='https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\nurlwrite(fname,'mtest.mat') %1.22s\r\nload('mtest.mat'); %0.42s\r\ntoc\r\n\r\nnumtosolve=40;\r\nmstart = solveLife(mtest,numtosolve);\r\ntoc\r\nmstart=unique(mstart,'rows'); % remove exact duplicate solutions\r\n\r\n%Check for Trivial solutions; Life(mtest(case))==mtest(case)\r\nvalid=1;\r\nfor i=1:size(mstart,1)  % \r\n icase=mstart(i,1); %50000:99999\r\n iter=mtest(icase-49999,2); %Test cases start at 50000\r\n \r\n A=reshape(mtest(icase-49999,3:end),25,25);\r\n Abase=A;\r\n for j=1:iter\r\n  C=0;\r\n  for r=-1:1 % -1 Up   Using circshift to perform wrap convolution\r\n   Ar=circshift(A,r,1);\r\n   for c=-1:1 % -1 Left\r\n     Arc=circshift(Ar,c,2);\r\n     C=C+Arc;\r\n   end\r\n  end\r\n  A = C==3 | A\u0026C==4;\r\n end %j\r\n\r\n if isequal(Abase,A) % mtest [case, iter, data1:625]\r\n  valid=0; %Trivial solution entered\r\n  break;\r\n end\r\nend %main loop i\r\ntoc  % Trivial check timer\r\n\r\nLprocess=size(mstart,1)*valid;\r\nvalid=0; % Reset valid as counter for solutions\r\nfor i=1:Lprocess  % skip if any were trivial\r\n icase=mstart(i,1); %50000:99999\r\n iter=mtest(icase-49999,2); %Test cases start at 50000\r\n \r\n A=reshape(mstart(i,2:end),25,25);\r\n for j=1:iter\r\n  C=0;\r\n  for r=-1:1 % -1 Up   Using circshift to perform wrap convolution\r\n   Ar=circshift(A,r,1);\r\n   for c=-1:1 % -1 Left\r\n     Arc=circshift(Ar,c,2);\r\n     C=C+Arc;\r\n   end\r\n  end\r\n  A = C==3 | A\u0026C==4;\r\n end %j\r\n\r\n if ~isequal(A(:)',mtest(icase-49999,3:end)) % mtest [case, iter, data1:625]\r\n  valid=0; %Evolved does not match goal\r\n  break;\r\n else\r\n  valid=valid+1;\r\n end\r\nend %main loop i\r\ntoc\r\n\r\nassert(valid\u003e=40)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":2,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-10-06T18:14:45.000Z","updated_at":"2020-10-06T18:41:35.000Z","published_at":"2020-10-06T18:41:35.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to Solve at least 40, excluding trivials, of the 50K puzzles per these revised Life Laws. Trivial solutions are where the Final state may match the Start State.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. Edges wrap around. Eight Neighbors. (Change to normal planar life)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mtest,numtosolve) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values], number of case to solve (40)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mstart) the Starting state matrix of at least 40 puzzles all with perfect zero error solutions, [casenumber, 625 values]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHint:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e There are 40 non-trivial solutions for iterations 1 and 2 where a solving Start state has a single bit flip that is adjacent to a set bit or is a set bit. Cases where there are more than 40 set bits in the final state may consume significant time for no solutions. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":52,"title":"What is the next step in Conway's Life?","description":"Given a matrix A that represents the state of Conway's game of Life at one instant (time t=n), return the matrix B that represents the state of the game at the next instant (time t=n+1).\r\nAssume a toroidal game board, so the edges of the matrix wrap left to right and top to bottom.\r\nExamples:\r\n Input  A = [ 1   1   0   0\r\n              0   1   0   0\r\n              1   1   0   0\r\n              0   0   0   0 ]\r\n\r\n Output B = [ 1   1   0   0\r\n              0   0   1   0\r\n              1   1   0   0\r\n              0   0   0   0 ]\r\n\r\n Input  A = [ 0   1   1   0\r\n              1   1   1   0\r\n              0   0   1   0\r\n              0   0   0   0 ]\r\n\r\n Output B = [ 1   0   1   1\r\n              1   0   0   0\r\n              0   0   1   1\r\n              0   1   1   0 ]","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 500.233px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 250.117px; transform-origin: 407px 250.117px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 139px 8px; transform-origin: 139px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eGiven a matrix A that represents the state of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://conwaylife.com/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eConway's game of Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 155px 8px; transform-origin: 155px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e at one instant (time t=n), return the matrix B that represents the state of the game at the next instant (time t=n+1).\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 294px 8px; transform-origin: 294px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAssume a toroidal game board, so the edges of the matrix wrap left to right and top to bottom.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 32px 8px; transform-origin: 32px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eExamples:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 388.233px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 194.117px; transform-origin: 404px 194.117px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 32px 8.5px; transform-origin: 32px 8.5px; \"\u003e Input  \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 76px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 76px 8.5px; \"\u003eA = [ 1   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              1   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   0   0 ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; tab-size: 4; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 32px 8.5px; transform-origin: 32px 8.5px; \"\u003e Output \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 76px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 76px 8.5px; \"\u003eB = [ 1   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   1   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              1   1   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   0   0 ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; tab-size: 4; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 32px 8.5px; transform-origin: 32px 8.5px; \"\u003e Input  \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 76px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 76px 8.5px; \"\u003eA = [ 0   1   1   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              1   1   1   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   1   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   0   0 ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; tab-size: 4; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 32px 8.5px; transform-origin: 32px 8.5px; \"\u003e Output \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 76px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 76px 8.5px; \"\u003eB = [ 1   0   1   1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              1   0   0   0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 108px 8.5px; tab-size: 4; transform-origin: 108px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   0   1   1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e              0   1   1   0 ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function B = gameOfLife(A)\r\n  B = A;\r\nend","test_suite":"%%\r\nA = [ ...\r\n 1     1     0     0\r\n 0     1     0     0\r\n 1     1     0     0\r\n 0     0     0     0];\r\n\r\nB = [ ...\r\n 1     1     0     0\r\n 0     0     1     0\r\n 1     1     0     0\r\n 0     0     0     0];\r\n\r\nassert(isequal(gameOfLife(A),B))\r\n\r\n%%\r\nA = [ ...\r\n 0     1     1     0\r\n 1     1     1     0\r\n 0     0     1     0\r\n 0     0     0     0];\r\n\r\nB = [ ...\r\n 1     0     1     1\r\n 1     0     0     0\r\n 0     0     1     1\r\n 0     1     1     0];\r\n\r\nassert(isequal(gameOfLife(A),B))\r\n\r\n%%\r\nA = zeros(4);\r\nassert(isequal(gameOfLife(A),A))\r\n\r\n%%\r\nA = ones(4);\r\nassert(isequal(gameOfLife(A),1-A))\r\n","published":true,"deleted":false,"likes_count":29,"comments_count":13,"created_by":1,"edited_by":223089,"edited_at":"2023-08-22T14:45:24.000Z","deleted_by":null,"deleted_at":null,"solvers_count":680,"test_suite_updated_at":"2022-10-16T10:41:00.000Z","rescore_all_solutions":false,"group_id":2,"created_at":"2012-01-18T01:00:24.000Z","updated_at":"2026-04-08T23:48:54.000Z","published_at":"2012-01-18T01:00:24.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven a matrix A that represents the state of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://conwaylife.com/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eConway's game of Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e at one instant (time t=n), return the matrix B that represents the state of the game at the next instant (time t=n+1).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAssume a toroidal game board, so the edges of the matrix wrap left to right and top to bottom.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExamples:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ Input  A = [ 1   1   0   0\\n              0   1   0   0\\n              1   1   0   0\\n              0   0   0   0 ]\\n\\n Output B = [ 1   1   0   0\\n              0   0   1   0\\n              1   1   0   0\\n              0   0   0   0 ]\\n\\n Input  A = [ 0   1   1   0\\n              1   1   1   0\\n              0   0   1   0\\n              0   0   0   0 ]\\n\\n Output B = [ 1   0   1   1\\n              1   0   0   0\\n              0   0   1   1\\n              0   1   1   0 ]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":46706,"title":"Kaggle: Planetoid Game of Life - Total Score 0.10","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 482.167px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 241.083px; transform-origin: 407px 241.083px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 203.05px 7.91667px; transform-origin: 203.05px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://mathworld.wolfram.com/GameofLife.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGame of Life at Wolfram\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eWiki Life\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.467px 7.91667px; transform-origin: 138.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 379.783px 7.91667px; transform-origin: 379.783px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to Solve the 50K puzzles with a Score \u0026lt;= 0.10, Kaggle Top 25 result, per these revised Life Laws. Trivial solutions are where the Final state may match the Start State.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 51.0833px; transform-origin: 404px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 350.35px 7.91667px; transform-origin: 350.35px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e1. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 188.65px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 188.65px 7.91667px; \"\u003elive cell with fewer than two live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 115.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 115.5px 7.91667px; \"\u003eif caused by under-population.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 315.7px 7.91667px; transform-origin: 315.7px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e2. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 288.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 288.75px 7.91667px; \"\u003elive cell with two or three live neighbors lives on to the next generation.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 311.85px 7.91667px; transform-origin: 311.85px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e3. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 192.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 192.5px 7.91667px; \"\u003elive cell with more than three live neighbors dies\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by overcrowding.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 361.9px 7.91667px; transform-origin: 361.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 26.95px 7.91667px; transform-origin: 26.95px 7.91667px; \"\u003e4. Any \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 242.55px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 242.55px 7.91667px; \"\u003edead cell with exactly three live neighbors becomes a live cell\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 19.25px 7.91667px; transform-origin: 19.25px 7.91667px; \"\u003e, as \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 73.15px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 73.15px 7.91667px; \"\u003eif by reproduction.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 0.833333px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 0.833333px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 0.833333px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 0.833333px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 265.65px 7.91667px; transform-origin: 265.65px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 34.65px 7.91667px; transform-origin: 34.65px 7.91667px; \"\u003e5. Edges \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 231px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 231px 7.91667px; \"\u003ewrap around. Eight Neighbors. (Change to normal planar life)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 221.317px 7.91667px; transform-origin: 221.317px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 19.4333px 7.91667px; transform-origin: 19.4333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 254.75px 7.91667px; transform-origin: 254.75px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mtest) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 25.2667px 7.91667px; transform-origin: 25.2667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eOutput:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 233.35px 7.91667px; transform-origin: 233.35px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (mstart) the Starting state matrix of 50K puzzles, [casenumber, 625 values]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 39.9333px 7.91667px; transform-origin: 39.9333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eTop Scores:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 96.8667px 7.91667px; transform-origin: 96.8667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e Zapor: 0.0818, 2556293 errors\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 105px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 52.5px; text-align: left; transform-origin: 384px 52.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 15.95px 7.91667px; transform-origin: 15.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eHint:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 356.9px 7.91667px; transform-origin: 356.9px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e A Greedy Complete Single Adjacent bit flip can score \u0026lt;.0.09. Non-optimized processing time for Greedy Complete was 25Ksec. Candidate bits to flip are all wrap-convolve of Goal matrix with kernel ones(3). First test for trivial solution. Process all  bit flips on current optimal solution starting with Goal matrix. Make first best scoring solution the new optimal solution. Iterate on optimal solutions until no improvement on any single candidate bit flip. Greedy Complete for iterations=1 creates 176 solves not counting the 532 Trivial iteration 1 cases.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function mstart = solveLife(mtest)\r\n  %mstart=zeros(50000,626);  column 1 values should range from 50000:99999, other columns 0/1\r\n  urlname='';\r\n  urlwrite(urlname,'mstart.mat')\r\n  load('mstart.mat'); \r\n  \r\n  %Processing to \u003c0.10 Score is unlikely in Cody's 60 seconds\r\n  %Process offline mtest.mat file below.\r\n  %Create an mstart.mat file   using save('mstart.mat','mstart')  about 5.6MB\r\n  %Post the mstart.mat file in the cloud to download\r\n  %Copy the link location into urlname=''; above\r\n  \r\n  %Source data arrray to process mtest\r\n  %fname='https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\n  %urlwrite(fname,'mtest.mat') %1.22s\r\n  %load('mtest.mat'); %0.42s\r\nend","test_suite":"%%\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\n%mtest format is [casenumer, iterations, start1:625,finish1:625] for 50K cases 0:49999\r\n%'https://sites.google.com/site/razapor/matlab_cody/mtrain.mat?attredirects=0\u0026d=1';\r\nfname='https://sites.google.com/site/razapor/matlab_cody/mtest.mat?attredirects=0\u0026d=1';\r\nurlwrite(fname,'mtest.mat') %1.22s\r\nload('mtest.mat'); %0.42s\r\n\r\ncerr=zeros(50000,1);\r\nfor i=1:50000\r\n cerr(i)=nnz(mtest(i,3:end));\r\nend\r\n\r\ntic\r\nmstart = solveLife(mtest);\r\ntoc\r\nmstart=unique(mstart,'rows'); % remove exact duplicate solutions\r\n\r\n%Calc errors for each case submitted, otherwise use 0 input errors\r\ntic\r\nfor i=1:size(mstart,1)  % \r\n icase=mstart(i,1); %50000:99999\r\n Abase=reshape(mtest(icase-49999,3:end),25,25);;\r\n iter=mtest(icase-49999,2); %Test cases start at 50000\r\n \r\n A=reshape(mstart(i,2:end),25,25);\r\n \r\n for j=1:iter\r\n  C=0;\r\n  for r=-1:1 % -1 Up   Using circshift to perform wrap convolution\r\n   Ar=circshift(A,r,1);\r\n   for c=-1:1 % -1 Left\r\n     Arc=circshift(Ar,c,2);\r\n     C=C+Arc;\r\n   end\r\n  end\r\n  A = C==3 | A\u0026C==4;\r\n end %j\r\n cerr(icase-49999)=nnz(Abase-A);\r\n \r\nend %main loop i\r\ntoc  % 4.5s\r\n\r\nScore=sum(cerr)/50000/625;\r\nfprintf('Score %.4f  Total Errors: %i\\n',Score,sum(cerr));\r\n\r\nassert(Score\u003c=0.10)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-10-07T15:47:15.000Z","updated_at":"2020-10-07T16:39:36.000Z","published_at":"2020-10-07T16:39:36.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/conways-reverse-game-of-life-2020\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle's Conway's Reverse Game of Life 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003econtest inspires this Life challenge. The kaggle contest runs from Oct-01-2020 thru Nov-30-2020. References:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://mathworld.wolfram.com/GameofLife.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGame of Life at Wolfram\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWiki Life\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. The Kaggle event is 50K cases to solve for a state 1 to 5 iterations prior to a given state. Imperfect solutions are allowed but penalized. Input file to Kaggle is a csv so Matlab solutions can be posted at the Kaggle site for this event.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to Solve the 50K puzzles with a Score \u0026lt;= 0.10, Kaggle Top 25 result, per these revised Life Laws. Trivial solutions are where the Final state may match the Start State.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.\\n2. Any live cell with two or three live neighbors lives on to the next generation.\\n3. Any live cell with more than three live neighbors dies, as if by overcrowding.\\n4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.\\n5. Edges wrap around. Eight Neighbors. (Change to normal planar life)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote: The edges wrap so the matrix represents the surface of a sphere.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mtest) the Finish state matrix of 50K rows of [casenumber, iterations, 625 values]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (mstart) the Starting state matrix of 50K puzzles, [casenumber, 625 values]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eTop Scores:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Zapor: 0.0818, 2556293 errors\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHint:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e A Greedy Complete Single Adjacent bit flip can score \u0026lt;.0.09. Non-optimized processing time for Greedy Complete was 25Ksec. Candidate bits to flip are all wrap-convolve of Goal matrix with kernel ones(3). First test for trivial solution. Process all  bit flips on current optimal solution starting with Goal matrix. Make first best scoring solution the new optimal solution. Iterate on optimal solutions until no improvement on any single candidate bit flip. Greedy Complete for iterations=1 creates 176 solves not counting the 532 Trivial iteration 1 cases.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"}],"term":"tag:\"life\"","current_player_id":null,"fields":[{"name":"page","type":"integer","callback":null,"default":1,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"per_page","type":"integer","callback":null,"default":50,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"sort","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"body","type":"text","callback":null,"default":"*:*","directive":null,"facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":false},{"name":"group","type":"string","callback":null,"default":null,"directive":"group","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"difficulty_rating_bin","type":"string","callback":null,"default":null,"directive":"difficulty_rating_bin","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"id","type":"integer","callback":null,"default":null,"directive":"id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"tag","type":"string","callback":null,"default":null,"directive":"tag","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"product","type":"string","callback":null,"default":null,"directive":"product","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_at","type":"timeframe","callback":{},"default":null,"directive":"created_at","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"profile_id","type":"integer","callback":null,"default":null,"directive":"author_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_by","type":"string","callback":null,"default":null,"directive":"author","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player_id","type":"integer","callback":null,"default":null,"directive":"solver_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player","type":"string","callback":null,"default":null,"directive":"solver","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"solvers_count","type":"integer","callback":null,"default":null,"directive":"solvers_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"comments_count","type":"integer","callback":null,"default":null,"directive":"comments_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"likes_count","type":"integer","callback":null,"default":null,"directive":"likes_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leader_id","type":"integer","callback":null,"default":null,"directive":"leader_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leading_solution","type":"integer","callback":null,"default":null,"directive":"leading_solution","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true}],"filters":[{"name":"asset_type","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":"\"cody:problem\"","prepend":true},{"name":"profile_id","type":"integer","callback":{},"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":"author_id","static":null,"prepend":true}],"query":{"params":{"per_page":50,"term":"tag:\"life\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"life\"","","\"","life","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007faf32e2c780\u003e":null,"#\u003cMathWorks::Search::Field:0x00007faf32e2c6e0\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007faf32e2be20\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007faf32e2ca00\u003e":1,"#\u003cMathWorks::Search::Field:0x00007faf32e2c960\u003e":50,"#\u003cMathWorks::Search::Field:0x00007faf32e2c8c0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007faf32e2c820\u003e":"tag:\"life\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007faf32e2c820\u003e":"tag:\"life\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"cody-search","password":"78X075ddcV44","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"life\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"life\"","","\"","life","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007faf32e2c780\u003e":null,"#\u003cMathWorks::Search::Field:0x00007faf32e2c6e0\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007faf32e2be20\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007faf32e2ca00\u003e":1,"#\u003cMathWorks::Search::Field:0x00007faf32e2c960\u003e":50,"#\u003cMathWorks::Search::Field:0x00007faf32e2c8c0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007faf32e2c820\u003e":"tag:\"life\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007faf32e2c820\u003e":"tag:\"life\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":58892,"difficulty_rating":"easy"},{"id":43078,"difficulty_rating":"easy-medium"},{"id":1975,"difficulty_rating":"easy-medium"},{"id":46663,"difficulty_rating":"easy-medium"},{"id":1976,"difficulty_rating":"easy-medium"},{"id":1966,"difficulty_rating":"medium"},{"id":1970,"difficulty_rating":"medium"},{"id":2494,"difficulty_rating":"medium"},{"id":46686,"difficulty_rating":"medium"},{"id":46691,"difficulty_rating":"medium"},{"id":52,"difficulty_rating":"medium-hard"},{"id":46706,"difficulty_rating":"hard"}]}}