{"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":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":2036,"title":"Santa's Cards","description":"This Challenge is inspired by the \u003chttp://www.kaggle.com/c/packing-santas-sleigh Packing Santa's Sleigh\u003e contest at kaggle that runs until January 26, 2014. Will Elfonso win another kaggle contest? The kaggle contest is a 3-D fitting/optimization.\r\n\r\nThis Challenge is to place Santa Cards in a minimum area given a board width(columns) and a set of N cards of (rows,columns). Cards can not be rotated.\r\n\r\n*Input*: Card_Array, W ; Card_Array(N,2) and W=width of M array\r\n\r\n*Output*: M ; An X by W array of values 0:N, 0 is unused space\r\n\r\n*Scoring*: Number of rows required to place all cards\r\n\r\n*Example*:\r\n\r\n[2 2;3 3;1 2], 5\r\n\r\nM\r\n\r\n  1 1 2 2 2\r\n  1 1 2 2 2\r\n  3 3 2 2 2\r\n\r\nScores a 3, number of rows\r\n\r\n*Contest Results:*\r\nAlfonso put in a tremendous 40,000 point reduction in the last days and appeared unsurpassable. However, a pair of Polish Professors in Mathematics and Computer Science, Marek and Cygan, submitted an astounding further 34,000 point improvement for the win. Alfonso won the Matlab category prize.","description_html":"\u003cp\u003eThis Challenge is inspired by the \u003ca href = \"http://www.kaggle.com/c/packing-santas-sleigh\"\u003ePacking Santa's Sleigh\u003c/a\u003e contest at kaggle that runs until January 26, 2014. Will Elfonso win another kaggle contest? The kaggle contest is a 3-D fitting/optimization.\u003c/p\u003e\u003cp\u003eThis Challenge is to place Santa Cards in a minimum area given a board width(columns) and a set of N cards of (rows,columns). Cards can not be rotated.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput\u003c/b\u003e: Card_Array, W ; Card_Array(N,2) and W=width of M array\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput\u003c/b\u003e: M ; An X by W array of values 0:N, 0 is unused space\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring\u003c/b\u003e: Number of rows required to place all cards\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample\u003c/b\u003e:\u003c/p\u003e\u003cp\u003e[2 2;3 3;1 2], 5\u003c/p\u003e\u003cp\u003eM\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1 1 2 2 2\r\n1 1 2 2 2\r\n3 3 2 2 2\r\n\u003c/pre\u003e\u003cp\u003eScores a 3, number of rows\u003c/p\u003e\u003cp\u003e\u003cb\u003eContest Results:\u003c/b\u003e\r\nAlfonso put in a tremendous 40,000 point reduction in the last days and appeared unsurpassable. However, a pair of Polish Professors in Mathematics and Computer Science, Marek and Cygan, submitted an astounding further 34,000 point improvement for the win. Alfonso won the Matlab category prize.\u003c/p\u003e","function_template":"function m=cards(c,nc)\r\n % cards array row=card; [h,w]\r\n % fill array with values 1:size(c,1)\r\n % m is nc wide\r\n m=zeros(sum(c(:,1)),nc);\r\nend","test_suite":"assignin('caller','score',30);\r\n%%\r\nnc=8;\r\nc=[2 2;4 4;2 2;3 3;2 2;1 2;1 8;1 2;4 4;3 3;3 2];\r\nm=cards(c,nc)\r\n\r\nassert(size(m,2)==nc)\r\n\r\nfor i=1:size(c,1)\r\n mt=double(m==i);\r\n mtc=conv2(mt,ones(c(i,:)),'same');\r\n assert(nnz(mtc==c(i,1)*c(i,2))==1)\r\nend\r\n\r\n\r\nassignin('caller','score',size(m,1));\r\n\r\n\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":3,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-12-06T02:03:07.000Z","updated_at":"2014-01-29T00:17:00.000Z","published_at":"2013-12-06T02:19:08.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:r\u003e\u003cw:t\u003eThis Challenge is inspired by the\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.kaggle.com/c/packing-santas-sleigh\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ePacking Santa's Sleigh\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest at kaggle that runs until January 26, 2014. Will Elfonso win another kaggle contest? The kaggle contest is a 3-D fitting/optimization.\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\u003eThis Challenge is to place Santa Cards in a minimum area given a board width(columns) and a set of N cards of (rows,columns). Cards can not be rotated.\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: Card_Array, W ; Card_Array(N,2) and W=width of M 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: M ; An X by W array of values 0:N, 0 is unused space\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: Number of rows required to place all cards\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:\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\u003e[2 2;3 3;1 2], 5\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\u003eM\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 1 2 2 2\\n1 1 2 2 2\\n3 3 2 2 2]]\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\u003eScores a 3, number of rows\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\u003eContest Results:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Alfonso put in a tremendous 40,000 point reduction in the last days and appeared unsurpassable. However, a pair of Polish Professors in Mathematics and Computer Science, Marek and Cygan, submitted an astounding further 34,000 point improvement for the win. Alfonso won the Matlab category prize.\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":2072,"title":"Packing Santa's Sleigh: First Layer","description":"This Challenge is inspired by the \u003chttp://www.kaggle.com/c/packing-santas-sleigh Packing Santa's Sleigh\u003e contest at kaggle that runs until January 26, 2014.\r\n\r\nThe Bag has a 1000 x 1000 base with the contest having 1,000,000 packages.\r\n\r\nThis Challenge is to place as many of the first N Santa Presents onto the 1000 x 1000 grid. The packages have been presorted to have Z as max, not provided, thus minimizing the X*Y cross section. Only the first 240 packages are provided as package 241 busts the bag bottom making an area greater than 1,000,000. Packages out of sequence cause a severe penalty thus all packages less than the highest package used must fit on the board.\r\n\r\n*Input*: Presents ; Presents(240,2)\r\n\r\n*Output*: L, xyTL; L(1000,1000) of values 0:n\u003c=240, 0 is unused space\r\n\r\n*Scoring*: Unused Area\r\n\r\n*Example*:\r\n\r\n[2 2;3 3;1 2] is Presents\r\n\r\nL\r\n\r\n  1 1 2 2 2 0  thru column 1000\r\n  1 1 2 2 2\r\n  3 3 2 2 2\r\n  0 0 0 0 0 0 rows 4 thru 1000 are zeros\r\n\r\nxyTL\r\n[1 1;1 3;3 1]\r\n\r\nScores 1,000,000 - 15= 999985\r\n\r\nBoxes 1:236 are possible, 97.5719% efficient pack in \u003c 1sec.\r\n\r\n*TestSuite Sample Code:*\r\n\r\nIn the TestSuite at the end is wrapper code for entering the kaggle contest.\r\nUpdate your SantaPack routine and execute the wrapper to see your contest score. The official presents.mat file needs to be downloaded. The wrapper has further discussion on efficient methods and current scores. \r\n","description_html":"\u003cp\u003eThis Challenge is inspired by the \u003ca href = \"http://www.kaggle.com/c/packing-santas-sleigh\"\u003ePacking Santa's Sleigh\u003c/a\u003e contest at kaggle that runs until January 26, 2014.\u003c/p\u003e\u003cp\u003eThe Bag has a 1000 x 1000 base with the contest having 1,000,000 packages.\u003c/p\u003e\u003cp\u003eThis Challenge is to place as many of the first N Santa Presents onto the 1000 x 1000 grid. The packages have been presorted to have Z as max, not provided, thus minimizing the X*Y cross section. Only the first 240 packages are provided as package 241 busts the bag bottom making an area greater than 1,000,000. Packages out of sequence cause a severe penalty thus all packages less than the highest package used must fit on the board.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput\u003c/b\u003e: Presents ; Presents(240,2)\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput\u003c/b\u003e: L, xyTL; L(1000,1000) of values 0:n\u0026lt;=240, 0 is unused space\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring\u003c/b\u003e: Unused Area\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample\u003c/b\u003e:\u003c/p\u003e\u003cp\u003e[2 2;3 3;1 2] is Presents\u003c/p\u003e\u003cp\u003eL\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1 1 2 2 2 0  thru column 1000\r\n1 1 2 2 2\r\n3 3 2 2 2\r\n0 0 0 0 0 0 rows 4 thru 1000 are zeros\r\n\u003c/pre\u003e\u003cp\u003exyTL\r\n[1 1;1 3;3 1]\u003c/p\u003e\u003cp\u003eScores 1,000,000 - 15= 999985\u003c/p\u003e\u003cp\u003eBoxes 1:236 are possible, 97.5719% efficient pack in \u0026lt; 1sec.\u003c/p\u003e\u003cp\u003e\u003cb\u003eTestSuite Sample Code:\u003c/b\u003e\u003c/p\u003e\u003cp\u003eIn the TestSuite at the end is wrapper code for entering the kaggle contest.\r\nUpdate your SantaPack routine and execute the wrapper to see your contest score. The official presents.mat file needs to be downloaded. The wrapper has further discussion on efficient methods and current scores.\u003c/p\u003e","function_template":"function  [L,xyTL]=SantaPack(p)\r\n% p is an Nx2\r\n% xyTL is Top Left position of pieces 1:n.\r\n% xyTL created for Speed vs find in a 1Kx1K array\r\n% Place 1:n of p onto L, a 1000x1000 array\r\n% Put p row onto L array. \r\n% If p(1,:) is [2 3]\r\n%[2 3] may be placed as [1 1 1;1 1 1] or [1 1; 1 1;1 1] for box 1\r\n% Note: big boxes typically pack to 95% and small boxes to \u003e98%\r\n\r\n L=zeros(1000);\r\n xyTL=p*0;\r\n\r\n% Placing first 16 pieces\r\n% No piece exceeds 250x250\r\n pxy=[1 251 501 751];\r\n piece=1;\r\n for i=1:4\r\n  for j=1:4\r\n% putting piece on layer\r\n   L(pxy(i):pxy(i)+p(piece,1)-1,pxy(j):pxy(j)+p(piece,2)-1)=piece; \r\n% TL Location of piece\r\n   xyTL(piece,:)=[pxy(i) pxy(j)]; \r\n   piece=piece+1;\r\n  end\r\n end\r\n %figure(3);imagesc(L)\r\n \r\nend % SantaPack","test_suite":"assignin('caller','score',100000);\r\n%%\r\nSanta_L1=[3     2;207    73;160    78;8     3;\r\n     9     9;\r\n   170   120;116    91;\r\n   206   142;28     8;\r\n     3     2;41    22;\r\n    31    11;28    20;\r\n    29    13;98    96;\r\n    26     4;34     9;\r\n     4     3;84    78;\r\n   219   114;28    22;\r\n   195   185;3     2;\r\n    31     9;104   101;\r\n    32    31;188   142;\r\n    45    18;8     2;\r\n    13    10;49    22;\r\n   172    72;28    17;\r\n    90    87;33     5;\r\n    32    23;16    14;\r\n    42    18;32     8;\r\n     7     5;6     6;\r\n   201    69;20    11;\r\n    30    18;211   120;\r\n   206    97;3     2;\r\n   124    92;48    43;\r\n     2     2;173   103;\r\n    26    12;8     7;\r\n     8     8;57    33;\r\n    21    20;24    15;\r\n    26    12;44    24;\r\n    30     8;\r\n    43    26;\r\n    23    23;\r\n     9     4;\r\n    16    13;\r\n    58    29;\r\n   133   125;\r\n     5     2;\r\n   197   117;\r\n    39    10;\r\n    31    11;\r\n    41    18;\r\n     6     3;\r\n    31     8;\r\n    40    32;\r\n    41    39;\r\n    36    30;\r\n     2     2;\r\n    25    24;\r\n     6     2;\r\n     3     2;\r\n     2     2;\r\n    85    70;\r\n    37    25;\r\n    24    20;\r\n    60    26;\r\n    29    14;\r\n    49    30;\r\n   153    75;\r\n     6     3;\r\n     7     3;\r\n   185   162;\r\n     4     2;\r\n     6     5;\r\n   176    99;\r\n     4     2;\r\n   219   154;\r\n    24    22;\r\n   148    87;\r\n    32     7;\r\n   143    98;\r\n    23    13;\r\n   150    65;\r\n     5     2;\r\n    53    41;\r\n    25    12;\r\n    36     6;\r\n    21    10;\r\n   211    79;\r\n   183   130;\r\n     6     3;\r\n    36    28;\r\n    32    16;\r\n    21    15;\r\n    27    26;\r\n    39    14;\r\n    36     7;\r\n    57    17;\r\n   214    90;\r\n    36     5;\r\n    27    16;\r\n    52    15;\r\n     8     6;\r\n     5     4;\r\n    52    37;\r\n     7     2;\r\n    92    79;\r\n    37    35;\r\n    33     5;\r\n     5     2;\r\n    52    10;\r\n    29     5;\r\n    44    18;\r\n     8     5;\r\n    16     8;\r\n   137   105;\r\n    78    74;\r\n     9     5;\r\n    39    29;\r\n    43    31;\r\n     6     3;\r\n     8     4;\r\n    26    19;\r\n    22     7;\r\n    30    15;\r\n   199   195;\r\n     7     7;\r\n     7     5;\r\n   134    81;\r\n   206   108;\r\n    54    29;\r\n    16     7;\r\n   116    99;\r\n    35    23;\r\n    31    17;\r\n    56    11;\r\n     7     3;\r\n    52     5;\r\n   102    99;\r\n     5     5;\r\n    35    17;\r\n     8     6;\r\n    51     7;\r\n    28    16;\r\n   107    83;\r\n    26     8;\r\n     8     6;\r\n   149    83;\r\n    45    29;\r\n    55    52;\r\n    27     6;\r\n    82    81;\r\n     9     5;\r\n    27    21;\r\n    19    10;\r\n    56    26;\r\n    19    14;\r\n    11     8;\r\n    47     7;\r\n    26    13;\r\n    36    19;\r\n    87    73;\r\n    14    10;223   100;2     2;33     5;198   135;38    15;19     8;211    95;9     6;21     7;175   145;22    16;7     5;7     4;9     8;42     5;3     3;2     2;3     2;5     2;30    24;29    29;27     9;168    72;6     4;22     7;9     6;10     6;19    16;7     2;43    14;138   115;138   130;39    20;9     4;27     7;26    22;169   144;8     8;41     9;50    26;62    10;33    19;7     2;121   112;102    93;109    88;9     8;40    40;25    19;31     8;55    23;41    11;6     2;8     3;128   114;40    16;7     6;5     2];\r\n[L,xyTL]=SantaPack(Santa_L1);\r\nptrxy=find(xyTL(:,1)\u003e0,1,'last');\r\n\r\npresents=Santa_L1;\r\nfor k=1:ptrxy\r\n  ptrxmin=xyTL(k,1);\r\n  ptrymin=xyTL(k,2);\r\n  assert(isequal(L(ptrxmin,ptrymin),k)) % Verify TL corner\r\n\r\n  if ptrxmin+presents(k,1)-1\u003e1000 || ptrymin+presents(k,2)-1\u003e1000\r\n% BR Corner verify for rotated only fit case\r\n    assert(isequal(L(ptrxmin+presents(k,2)-1,ptrymin+presents(k,1)-1),k))\r\n  elseif ptrxmin+presents(k,2)-1\u003e1000 || ptrymin+presents(k,1)-1\u003e1000\r\n% BR corner verify for non-rotated only fit case\r\n    assert(isequal(L(ptrxmin+presents(k,1)-1,ptrymin+presents(k,2)-1),k))\r\n  else % rot or non-rot case\r\n   v1=L(ptrxmin+presents(k,2)-1,ptrymin+presents(k,1)-1)==k;\r\n   v2=L(ptrxmin+presents(k,1)-1,ptrymin+presents(k,2)-1)==k;\r\n   assert(v1 || v2); % simple corner check\r\n  end\r\n% More robust checks may be implemented if needed\r\nend\r\n   \r\n\r\nA=Santa_L1(:,1).*Santa_L1(:,2);\r\nAs=sum(A(1:ptrxy))\r\nassignin('caller','score',min(100000,1000000-As));\r\n%%\r\n%{\r\nfunction SantaPack_Cody\r\n% www.kaggle.com Santa Packing Contest \r\n% 11/2013 thru January 2014\r\n% Given 1 Million Rectangularoid packages\r\n% Fit Packages into a Minimum Heigth Box with a base of 1000 x 1000\r\n% Rules allow presents out of order but this is virtually non-optimiziable\r\n% Presents out of order incur a penalty\r\n% Packing Construction Here:\r\n% All boxes dimension sorted [Mid, Min, Max]\r\n% Boxes 1:236 all have their tops on the same plane (97.5719% efficient pack)\r\n% Boxes 237:423 have their tops 250 lower in Z. Max Z of 1:236 is 250.\r\n% The very bottom layer, with box 1000000 has bottom box at Z=1\r\n% Note: Max dimension after box 700,000 is 70\r\n% This construction has min cross area per present, max dimension is placed on Z\r\n% Input is presents that have cumulative area \u003c= 1000000\r\n% The optimal score with perfect layer packing is \r\n% Layers 4098  zsum 996483  Score 1,992,966\r\n% Layers 4210, Score of 2,047,696 is possible with sequence layer packing\r\n% Kaggle Lead as of 12/21/2013 is 1,999,256. Unknown method.\r\n% Pack routine returns a 1000x1000 array with values 1:n, n\u003c=N\r\n% N is the Nth  box that fits in the 1,000,000 area limit\r\n% Next call uses n+1:N\r\n\r\nload presents  % available at kaggle site as a Mat file\r\nnumPresents = size(presents,1);\r\n\r\npresents(:,2:4)=sort(presents(:,2:4),2);\r\npresents(:,2:3)=fliplr(sort(presents(:,2:3),2)); % x\u003ey, z\u003ex\r\npresents=[presents presents(:,2).*presents(:,3)]; % Area of box tops\r\npresents=[presents cumsum(presents(:,end))]; % [presID x y z A Asum]\r\n\r\npe=0;\r\nLayer=0;\r\nzsum=0;\r\nz=-1;\r\npresentCoords=zeros(1000000,25);\r\n\r\ntic\r\nwhile pe\u003c1000000\r\n ps=pe+1; \r\n Asum=presents(ps:min(ps+5000,1000000),end); % valid for layer 1\r\n if pe\u003e0, Asum=Asum-presents(pe,end); end% remove prior layers sum\r\n ptr1M=find(Asum\u003c=1000000,1,'last');\r\n pe=ps+ptr1M-1;\r\n \r\n [L,xyTL]=SantaPack(presents(ps:pe,2:3)); % L has values 1 thru n, being ps thru ps+n-1\r\n % xyTL is Top Left position of pieces 1:n\r\n %figure(3);imagesc(L);\r\n\r\n pe=ps-1+find(xyTL(:,1)\u003e0,1,'last'); % find number of boxes placed\r\n zmax=max(presents(ps:pe,4));\r\n \r\n % Convert Layers to coordinates\r\n % Locate pieces in Layer and assign coordinate values\r\n % z axis values fixed in post processing to positives\r\n % Valid placement and sizes assumed\r\n for k=1:pe-ps+1\r\n  idx=k+ps-1; \r\n  ptrxmin=xyTL(k,1);\r\n  ptrymin=xyTL(k,2);\r\n  if ptrxmin+presents(idx,2)-1\u003c=1000 \u0026\u0026 ptrymin+presents(idx,3)-1\u003c=1000\r\n   if L(ptrxmin+presents(idx,2)-1,ptrymin+presents(idx,3)-1)==k\r\n    ptrxmax=ptrxmin+presents(idx,2)-1;\r\n    ptrymax=ptrymin+presents(idx,3)-1;\r\n   else\r\n    ptrxmax=ptrxmin+presents(idx,3)-1;\r\n    ptrymax=ptrymin+presents(idx,2)-1;\r\n   end\r\n  else % assumed placement if xmax(1)\u003e1000\r\n   ptrxmax=ptrxmin+presents(idx,3)-1;\r\n   ptrymax=ptrymin+presents(idx,2)-1;\r\n  end % if\r\n  \r\n % place this section inside SantaPack and output presentCoords vs L\r\n    presentCoords(idx,1) = idx;\r\n    presentCoords(idx,[2 8 14 20]) = ptrxmin;\r\n    presentCoords(idx,[5 11 17 23]) = ptrxmax;\r\n    presentCoords(idx,[3 6 15 18]) = ptrymin;\r\n    presentCoords(idx,[9 12 21 24]) = ptrymax;\r\n    presentCoords(idx,[4 7 10 13]) = z;\r\n    presentCoords(idx,[16 19 22 25]) = z - presents(idx,4) + 1;\r\n end % k\r\n \r\n z=z-zmax;\r\n Layer=Layer+1;\r\n zsum=zsum+zmax;\r\n fprintf('Layer %i Start %i  Final %i Zsum %i  Time %.2f\\n',Layer,ps,pe,zsum,toc) % Processing Status\r\n % Deep routine to 2M takes 30 minutes\r\n % Fast Placement takes 187 sec\r\n \r\nend  % pe\r\n\r\n% Offset Z coordinates \r\n% Bottom is 1 and very top is Positive\r\nzCoords = presentCoords(:,4:3:end);\r\nminZ = min(zCoords(:));\r\npresentCoords(:,4:3:end) = zCoords - minZ + 1;\r\n\r\n% Scoring function\r\n% Ideal order is the original order\r\npresentIDs = presents(:,1); %z\r\nidealOrder = presentIDs; \r\n\r\n% Determine the max z-coordinate; this is the max height of the box\r\nmaxZ = max(max(presentCoords(:,4:3:end)));\r\n\r\n% Go down the layers from top to bottom, reorder presents in numeric order\r\n% for each layer\r\nmaxZCoord = zeros(numPresents,2);\r\nfor i = 1:numPresents\r\n    maxZCoord(i,1) = presentCoords(i);\r\n    maxZCoord(i,2) = max(presentCoords(i,4:3:end));\r\nend\r\nmaxzCoordSorted = sortrows(maxZCoord,[-2 1]); %sort max z-coord for each present\r\nreOrder = maxzCoordSorted(:,1);\r\n\r\n% Compare the new order to the ideal order\r\norder = sum(abs(idealOrder - reOrder));\r\n\r\n% Compute metric\r\nfprintf('Metric %i MaxZ %i  Order Penalty %i\\n',2*maxZ + order,maxZ,order);\r\n\r\n% Creating a Submission File\r\nsubfile = 'submissionfile_SantaPack_Cody.csv';\r\nfileID = fopen(subfile, 'w');\r\nheaders = {'PresentId','x1','y1','z1','x2','y2','z2','x3','y3','z3','x4','y4','z4','x5','y5','z5','x6','y6','z6','x7','y7','z7','x8','y8','z8'};\r\nfprintf(fileID,'%s,',headers{1,1:end-1});\r\nfprintf(fileID,'%s\\n',headers{1,end});\r\nfprintf(fileID,'%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\\n',presentCoords');\r\nfclose(fileID);\r\n\r\nend % SantaPack_Cody\r\n\r\nfunction  [L,xyTL]=SantaPack(p)\r\n% p is an Nx2\r\n% xyTL is Top Left position of pieces 1:n\r\n% Place 1:n of p onto L, a 1000x1000 array\r\n% Put p row onto L array. [2 3] may be placed [1 1 1;1 1 1] or [1 1; 1 1;1 1] for box 1\r\n% Note: big boxes typically pack to 95% and small boxes to \u003e98%\r\n\r\n L=zeros(1000);\r\n xyTL=p*0;\r\n% L(1:p(1,1),1:p(1,2))=1; % putting one piece per layer\r\n% return\r\n\r\n% Placing first 16 pieces\r\n% No piece exceeds 250x250\r\n pxy=[1 251 501 751];\r\n piece=1;\r\n for i=1:4\r\n  for j=1:4\r\n   L(pxy(i):pxy(i)+p(piece,1)-1,pxy(j):pxy(j)+p(piece,2)-1)=piece; % putting piece on layer\r\n   xyTL(piece,:)=[pxy(i) pxy(j)]; % Location of piece\r\n   piece=piece+1;\r\n  end\r\n end\r\n %figure(3);imagesc(L)\r\n \r\nend % SantaPack\r\n%}\r\n\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":4,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-12-22T04:12:10.000Z","updated_at":"2013-12-22T05:37:27.000Z","published_at":"2013-12-22T05:37:27.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:r\u003e\u003cw:t\u003eThis Challenge is inspired by the\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.kaggle.com/c/packing-santas-sleigh\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ePacking Santa's Sleigh\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest at kaggle that runs until January 26, 2014.\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\u003eThe Bag has a 1000 x 1000 base with the contest having 1,000,000 packages.\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\u003eThis Challenge is to place as many of the first N Santa Presents onto the 1000 x 1000 grid. The packages have been presorted to have Z as max, not provided, thus minimizing the X*Y cross section. Only the first 240 packages are provided as package 241 busts the bag bottom making an area greater than 1,000,000. Packages out of sequence cause a severe penalty thus all packages less than the highest package used must fit on the 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\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: Presents ; Presents(240,2)\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: L, xyTL; L(1000,1000) of values 0:n\u0026lt;=240, 0 is unused space\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: Unused Area\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:\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\u003e[2 2;3 3;1 2] is Presents\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\u003eL\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 1 2 2 2 0  thru column 1000\\n1 1 2 2 2\\n3 3 2 2 2\\n0 0 0 0 0 0 rows 4 thru 1000 are zeros]]\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\u003exyTL [1 1;1 3;3 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:t\u003eScores 1,000,000 - 15= 999985\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\u003eBoxes 1:236 are possible, 97.5719% efficient pack in \u0026lt; 1sec.\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\u003eTestSuite Sample Code:\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\u003eIn the TestSuite at the end is wrapper code for entering the kaggle contest. Update your SantaPack routine and execute the wrapper to see your contest score. The official presents.mat file needs to be downloaded. The wrapper has further discussion on efficient methods and current scores.\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":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":46618,"title":"Kaggle 2020 Drone Delivery Contest","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: 941.917px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 470.967px; transform-origin: 407px 470.967px; 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\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: 31.5167px 7.91667px; transform-origin: 31.5167px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe 2020 \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/hashcode-drone-delivery\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle Drone\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: 309.217px 7.91667px; transform-origin: 309.217px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e contest is an optimization task to maximize net customer satisfaction by using 30 drones across 10 warehouses to fulfill 1250 customer multi-item, 400 distinct items(products), orders. Satisfaction is (1-delivery_time/max_time)*100 and 0 if delivery not completed by max_time. The max time of 112993 is easily beaten with typical worse time of 40K. \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: 331.8px 7.91667px; transform-origin: 331.8px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis contest subset has disabled moving items from warehouse to warehouse thus wait times are not used.\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: 373.283px 7.91667px; transform-origin: 373.283px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe maximum score is 125000. To succeed as a DroneManager requires a score of 110K, 5th at Kaggle contest 9/26/20.\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: 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: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e [rows,cols,numdrones,maxturns,maxDronewt,numproducts,numOrders,delivery_xy_qty,delivery_list,distance_delivery\u0026amp;warehouse_to_delivery\u0026amp;warehouse, distance_warehouse_to_delivery,permutation_cell_array_for1to9]\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: 304.15px 7.91667px; transform-origin: 304.15px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e Commands matrix [number of commands,5]  The number of commands is likely to be 18K to 20K.\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: 380.167px 7.91667px; transform-origin: 380.167px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eLoading from a warehouse: [drone# 1 warehouse# item# quantity]. Drone1:30, Warehouse1:10, Item1:400. The 1 is LOAD.\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: 341.9px 7.91667px; transform-origin: 341.9px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eOnly one item type can be loaded on to drone at a time. Each Load/Deliver command consumes 1 unit of time.\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: 352.417px 7.91667px; transform-origin: 352.417px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eDelivery for an order:  [drone# 3 delivery# item# quantity]. Drone1:30, Delivery1:1250, Item1:400. The 3 is Deliver.\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: 286.283px 7.91667px; transform-origin: 286.283px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe final delivery time for an order is the latest drone time inclusive of final delivery time unit.\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: 117.867px 7.91667px; transform-origin: 117.867px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAdditional approach comments are at \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/hashcode-drone-delivery/discussion/186050\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle Drone 111401\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: 181.283px 7.91667px; transform-origin: 181.283px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e and in the template along with using a provided routine to create a Kaggle python submission file.\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: 84.5333px 7.91667px; transform-origin: 84.5333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eDelivery/Warehouse Map.\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: 275.333px 7.91667px; transform-origin: 275.333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e Warehouses red*, Single item delivery redO, Two item delivery blackO, \u0026gt;2 items greenO\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: 425.917px; 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 212.967px; text-align: left; transform-origin: 384px 212.967px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline;width: 560px;height: 420px\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH5AkaEw0DQXIUYAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyNi1TZXAtMjAyMCAxMjoxMzowMiU9ljMAACAASURBVHic7L1/zGdHVT9+ugXBiKYiP6QqnJWmpZV0fVgQu9n0M4/SaEJD1H8qySe7U0xMa1MjsSq1lr1NiUFisDSBIGBnN7UlWlLN1rjhU+w829K6yBcjik3ZovdpEVJodreSCLXs0/n+ce4973Nn5t73ff+8837vvLLZPM993u97Z+bee15zznnNmfOcc5CRkZGRkTE0dg3dgIyMjIyMDIBMSBkZGRkZiSATUkZGRkZGEsiElJGRkZGRBDIhZWRkZGQkgUxIGRkZGRlJIBNSRkZGRkYSyISUkZGRkZEEMiFlZGRkZCSBTEgZGRkZGUkgE1JGRkZGRhLIhJSRkZGRkQTOL4pi6DbMH1//+te/+MUvfv/733/Vq141dFtmwiOPPPKGN7yBf432a+U6+7Wvfe2f//mfn3vuude97nV8cA269tWvfvVf/uVfdu3adcEFF/DBNegX4ctf/vL555//Qz/0Q/TrGvTr9OnT//7v//7NGq94xSte9rKXwbp07R//8R+//e1v/+RP/iQfXIl+rSEhPfDAA7/zO7/zwgsvfPKTn3zuued+/ud/fugWTYmPfexjH/nIR97znvfQr9F+rVxnP/CBD9x5553f/e5377///gceeODqq69+yUtesgZd+7M/+7M777zz+eef//jHP/69733vrW99K6zLLQOAr33ta9dcc83P/uzP/vRP/zSsS7/uvffeP/iDPzh27NgDDzzwwAMPvOUtb3n961+/Bl07fvz4b/zGbzz//PPHjh07evTor/zKr5x33nkr0y+3Xjh79uzGxsaTTz7pnDt16tSePXvKshy6URPjzJkz73vf+zY2Nvbv309Hov1auc4+/vjjb37zm8+cOUO/Xn311ffdd98adO3kyZPcr29/+9uXXnrpqVOn1qBfhBdeeOFd73qXUurBBx906/IoOufe+9733nPPPfLIGnTt7NmzV1xxxRe+8AX69Z3vfOexY8dWqF/rlkN6+OGHL7jggosuuggAXvnKV1555ZWf//znh27UxLjjjjte+cpX/vEf/zEfifZr5Tp7wQUX/Pmf/zlHtHbv3v3Nb35zDbr2xje+8W/+5m+oXy996Ut3dna+//3vr0G/CB/+8Id/8Rd/8eKLL6Zf16Zfjz/++Bvf+MbTp09///vfpyNr0LXjx4//xE/8xM/93M/Rr3/3d3/3y7/8yyvUr3UjpOeee+5Nb3oT//qKV7zi5MmTA7ZnOrz//e//vd/7vR/8wR/kI9F+rVxnX/e61+3bt49+fuqpp6y1V1111Rp0bdeuXRdddNHOzs5f/dVfHTx48IYbbnjta1+7Bv0CgH/6p3/6whe+8Nu//dt8ZD36tbOz8/TTT99+++1XX331nj17/uiP/gjWomtnzpz5qZ/6qfe///179ux5y1ve8hd/8RewUv1aN0La2dnZtWvUqV27dr344osDtmc6yC4Qov1a3c5+61vf0lr/1m/91qWXXro2XTt9+vT//u//vuY1r3n00Uefe+65NejXd77znfe///0f/vCH5cE16BcAfOtb33rHO97xiU984rHHHrPWPvLII5/+9KfXoGtf+9rXPvvZz/7Mz/zMl7/85U9/+tMf//jHP//5z69Qv9aNkF72spft7Ozwry+++OJLXvKSAdszL0T7taKd/bd/+7df/dVfPXDgwPXXXw9r1LVXv/rVBw4c+OQnP/nyl7/8yJEja9CvD33oQ5dddtlTTz11/Phx0qR99atfXYN+AcCFF1545513XnjhhQDw2te+9qqrrvrSl760Bl17/etf/4Y3vOGaa64BgEsuueSqq676+7//+xXq17oR0mte85qvfOUr/OuZM2f27t07YHvmhWi/VrGzjz322Hve856iKK699lo6sgZd+8///M+//Mu/5F9//Md//JlnnlmDfr361a/+n//5n3vvvffee+/9xje+cfz48ccee2wN+gUATz311Gc+8xn+9YUXXjj//PPXoGs/9mM/Jn/dtWvXrl27VqlfQ6sq5oydnZ39+/dvbW05506ePHn55Zc/++yzQzdqSmxtbbHKLtqvlevs008/vbGx8dBDD71Q4+zZs2vQtZMnT1522WX/8R//4Zx79tln9+3b9w//8A9r0C+J3/zN3ySV3Xr064knnrjssstIY/bMM8/s27fvkUceWYOuvfDC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NTLimUlNKoyQRva3R5822t+Mzl4qsE9dH+PURoMBZ1NBfyO+AIWb441y4z6mKeIXibxBH8MUlD31mpm9BbbcCDc6L8Ft6Mr2qetjqPRSiLUmK14who37mEaIXySyy45Z6dTiwgoHimp0MC7AQmGKhO8VLIOzaZhoYYXErHRqyYLrKuWHuvdPT/kRnE3DRAsrJGalU0sW3MikvN0yw79RdSXH2TRMtLBCYlY6tbiwRiblZ2F2ARacG83DfE+aL8IcRYYB7mXHMLMw6zfB68O4Gc3WShKkAjUP83ijJViSIHvVfLzpBhMhbCExE8rSEqxeDdPTMD0N8/OBEwcxbpwC1aEGihBb6lT2K8OML2whMZPIrl0wPw9ag5QAANPTAABKlZ3en3HT4O4hbN8wEwkrJGbimJ+HhQVIibxOkq46qVcRz7uHMEztsMuOmTgWF2HWTeOGuTnYW2cz0zhbpjLMWMMKiZk4FhYyTx1FSlhaqvMmvHsIw9QNKyRm4pASFhbcg/PzBVpqkJtwvwOGqRtWSMwoGOnuO7OzBd65xUUQos6bcL8DhqkbVkjM0Bn17jtSghBZFgMALC3B9DQsLcFcnTWq3O+AYWqHs+yY4dJMNprWsLAAq7M0bpibC+TX9X+TkVTCMszKgRUSM1zKstH85gg1I2VH5veQbsL1QAxTHzG67F599dWTJ0/ir++9996f//xnfxuPsuMTz9VXX930EHqgejbaeD1XT0zqo/FzMfUSnUJ66623vv/977/66qv216effvr2229/9tlnt23btmfPHjyt7DgTG5yNxjBMReJy2X366af33nvvF7/4Rfvr8vLy3Nzcn/70pzVr1pw+ffqrX/3qt7/9bSFE2fFGx84UU1frUoZhJp64FNJDDz100003vfHGG/bXF15ThwNyAAACsElEQVR44aKLLlqzZg0AXHzxxTfccMOLL74ohCg77l9wUk3v8XquEz898V///V9f/p8vA8Cn//3pBz/9AAC+/D9f3g/7nTPH67l6YlIfjZ+LqZGIFNLf/va3v/71r08++eRdd91lj3z00UfXXHMNnnDBBRccPXo0cNxhBYaXomUBFra8ucX+/L/wvwoU8JvDMEwnsSikf/3rXz/60Y8eeeQRenB5eXnVqnaUa9WqVefOnQscZ6KFs9EYhulKLArp5z//+bp16959991333339OnTb7zxxhVXXHH++ecvLy/jOefOnfv85z8PAGXHGYZhmPElFoV0ySWXHD58eP/+/QDw/vvvLy4uXnjhhevWrXv99dfxnDNnznz9618HgEsvvbTwOMMwDDO+xKKQfvCDH+DPd91113e/+92bb77ZOuIWFxdvvPHGY8eOvfzyy7t37waA6667rvA4wzAMM77EopAKWbVq1S9+8Ysf/vCHa9aseeONN372s5/ZjPCy4wzDMMz4cp4xpukxMAzDMEx8nRoYhmGYlQkrJIZhGCYKWCExDMMwUcAKiWEYhokCVkgMwzBMFLBCYhiGYaKAFRLDMAwTBayQGIZhmChghcQwDMNEASskhmEYJgpYITEMwzBRwAqJYRiGiQJWSAzDMEwUsEJiGIZhooAVEsMwDBMFrJAYhmGYKGCFxDAMw0QBKySGYRgmClghMQzDMFHAColhGIaJAlZIDMMwTBSwQmIYhmGigBUSwzAMEwWskBiGYZgoYIXEMAzDRAErJIZhGCYKWCExDMMwUcAKiWEYhokCVkgMwzBMFLBCYhiGYaKAFRLDMAwTBayQGIZhmChghcQwDMNEASskhmEYJgpYITEMwzBRwAqJYRiGiQJWSAzDMEwUsEJiGIZhooAVEsMwDBMF/x8hDtwxE+e4oQAAAABJRU5ErkJggg==\" data-image-state=\"image-loaded\" width=\"560\" height=\"420\"\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\u003c/div\u003e\u003c/div\u003e","function_template":"function cmds=drone(nr,nc,ndr,nturns,max_wt,nprod,vpwt,nw,wxy,wprodq,norders,dxyq,dlist,dw2dw,w2d,pmapc)\r\n% Discussion of an approach can be read at \r\n%https://www.kaggle.com/c/hashcode-drone-delivery/discussion/186050\r\n%\r\n%Short approach description is: \r\n% 1) Create baskets for every order by unique warehouse and wt\r\n% 2)Fix warehouse usage for over-use of items\r\n% 3)Create matrix of baskets that will be reduced for each delivery, add an idx at far right and\r\n% also create a master reference copy for creation of cmds\r\n% 4) Select warehouse that is normalized closest to drone.  dist/f(number signle order baskets, tot baskets)\r\n% 5) Augment drone basket set by baskets along line segment. Function distP2S_tim provided, Point to Segment\r\n% 6) Optimize Loading/Delivery steps\r\n% 7) Optimal path of multi-baskets easily done by brute force as \u003c10 baskets in any drone flt,pmapc\r\n%\r\ncmds=zeros(20000,5); %early est number of commands, max=nd*nturns\r\ncptr=0; %cmd ptr\r\n% Initialize drones/delivery_timer\r\n%All drones start at first warehouse, drIdx(:)=1251\r\ndrIdx=ones(ndr,1)*(norders+1); % drone location index, quantized, range  [1:norders norders+wh]\r\ndrT=zeros(ndr,1); % Drone Time, includes loads and flight legs\r\ndt=zeros(norders,1); %delivery time of last item deposited\r\ndidb=zeros(norders,1); % Remaining baskets to complete a delivery id\r\n\r\n%[packc]=pack_init(nw,norders,nprod,dlist,dxyq,w2d,vpwt,wprodq,max_wt);\r\n% packc cell {wh,norders} vector of items from each wh for each order, \r\n%  baskets are item sequences wt sum to \u003c=200\r\n%  packc has single and multiple baskets\r\n\r\n% Create mb array \r\n%[mb,Rmb,didb]=create_baskets(nw,norders,packc,vpwt,max_wt,w2d,didb);\r\n%mb [whid,did,dist,totwt,itemlist,mbidx]\r\n%\r\n%Initial 4684 baskets\r\n\r\n%Start of Main Processing Loop Creating Packs from baskets\r\nzflt=0; % flt counting variable for debug\r\nwhile min(drT)\u003cnturns %112993   3357 cycles if no dist limit, 4684 baskets\r\n zflt=zflt+1;\r\n% if max(didb)==0\r\n%  break;\r\n% end % all package baskets delivered\r\n \r\n \r\n %drptr=find(drT==min(drT),1,'first');  %Next drone should be the one that reaches its preferred warehouse the soonest, not lowest time used\r\n \r\n %dr_wh=pick_wh(drIdx,drptr,norders,didb,mb,w2d,nw); \r\n %Critical is selecting warehouse for drone to reach based on single baskets remaining, qty baskets\r\n \r\nend % min(drT)  Drones alive to make orders\r\n\r\n\r\n% [drone_id,Action,WH/DE id,Item_id,Q]\r\n% Wait0 [drid 0 Nturns 0 0]\r\n% Load1 [drid 1 whid itid q]\r\n% UnLoad2 [drid 2 whid itid q]\r\n% Deliv3 [drid 3 Did itid q]\r\n \r\n %calc/print score\r\n %dt is tracked as max of drone delivery time\r\n %dt(???)=nturns; % Delivery not fulfilled set to nturns\r\n %scr= sum( ceil(100*(nturns-dt(:))/nturns) );\r\n %fprintf('scr: %i\\n',scr)\r\n \r\n %create python file to create submission.txt file from cmds array\r\n %writefile(cmds,cptr); %0.55s\r\nend % cmds=drone()\r\n\r\nfunction ans=distP2S_tim(x0,y0,x1,y1,x2,y2)\r\n% Distance from a Point to a segment\r\nz=complex(x0-x1,y0-y1);\r\ncomplex(x2-x1,y2-y1);\r\nabs(z-ans*min(1,max(0,real(z/ans))));\r\nend\r\n\r\nfunction writefile(cmds,cptr)\r\n% To create python.txt file for entry into a kaggle notebook\r\n%\r\n% [drone_id,Action,WH/DE id,Item_id,Q]\r\n% Wait0 [drid 0 Nturns 0 0]\r\n% Load1 [drid 1 whid itid q]\r\n% UnLoad2 [drid 2 whid itid q]\r\n% Deliv3 [drid 3 Did itid q]\r\n% sub = '8\\n'\r\n% sub+= '0 L 0 163 1\\n'\r\n% sub+= '0 D 1 163 1\\n'\r\n% \r\n%cmds [drone action wh/deliv Item q \r\n%cmds(cptr+1,:)=[drid 1 1 item 1];\r\n%cmds(cptr+2,:)=[drid 3 didx item 1];\r\n fname=['drone' datestr(now,'ddmmyyyy_hhMM') '.txt'];\r\n fid =fopen(fname,'w');\r\n \r\n %fprintf(fid,'sub = ''%i\\n''',cptr)\r\n fprintf(fid,'sub = ''%i\\\\n''\\n',cptr); % specials\r\n for i=1:cptr\r\n  if cmds(i,2)==0 % Wait\r\n   fprintf(fid,'sub+= ''%i W %i\\\\n''\\n',cmds(i,[1 3])-1); % specials\r\n  elseif cmds(i,2)==1 %Load\r\n   fprintf(fid,'sub+= ''%i L %i %i %i\\\\n''\\n',cmds(i,[1 3 4])-1,cmds(i,5)); % specials\r\n  elseif cmds(i,2)==2 %Unload\r\n   fprintf(fid,'sub+= ''%i U %i %i %i\\\\n''\\n',cmds(i,[1 3 4])-1,cmds(i,5)); % specials\r\n  elseif cmds(i,2)==3 %Delivery\r\n   fprintf(fid,'sub+= ''%i D %i %i %i\\\\n''\\n',cmds(i,[1 3 4])-1,cmds(i,5)); % specials\r\n  else % error in cmds action value\r\n   fprintf('Error Occurred: Invalid command: Line %i\\n',i);\r\n  end\r\n end\r\n \r\n %final section of code to write the python file that writes submission.csv\r\n fprintf(fid,'text_file = open(\"submission.csv\", \"w\")\\n');\r\n fprintf(fid,'text_file.write(sub)\\n');\r\n fprintf(fid,'text_file.close()\\n');\r\n \r\n fclose(fid);\r\n %https://www.mathworks.com/help/matlab/matlab_prog/formatting-strings.html\r\n % ' use ''\r\n % \\ use \\\\\r\nend\r\n","test_suite":"%%\r\ntic\r\nfname='https://sites.google.com/site/razapor/matlab_cody/busy_day.in?attredirects=0\u0026d=1';\r\nout_fn='busy_day_cody.in';\r\nurlwrite(fname,out_fn); %Load url file to local space 0.74s\r\nm=dlmread(out_fn); % 3775, 400  1.1s  Read in complete Kaggle Drone Test file\r\nnr=m(1,1);nc=m(1,2);ndr=m(1,3);nturns=m(1,4);max_wt=m(1,5);\r\n%nr400, nc600, ndr30 drones, nturns112993, max_wt200\r\n%All drones start at first warehouse  drones(1:30), warehouses(1:10)\r\nnprod=m(2,1); %400\r\nvpwt=m(3,1:nprod); %\r\nnw=m(4,1); %10 warehouses\r\nwxy=zeros(nw,2); % warehouses x,y\r\nwprodq=zeros(nw,nprod); % Quantity of each product in each warehouse\r\nLptr=5;\r\nfor i=1:nw\r\n wxy(i,:)=m(Lptr,1:2)+1; %locations moved off (0,0) to (1,1)\r\n wprodq(i,1:nprod)=m(Lptr+1,1:nprod); %qty of items(1:400) at each warehouse\r\n Lptr=Lptr+2;\r\nend\r\nnorders=m(Lptr,1); %1250 orders [1:1250]\r\n% Delivery dxyq locx,locy,qty_items\r\n% Delivery_list dlisth (repeat items possible)[dataset starts at 0, add 1) hist\r\ndxyq=zeros(norders,3);\r\ndlist=zeros(norders,nprod); % do not know current max of items in an order\r\n\r\nLptr=Lptr+1;\r\nfor i=1:norders %deliveries(1:1250)\r\n dxyq(i,1:2)=m(Lptr,1:2)+1; %locations moved off (0,0) to (1,1)\r\n dxyq(i,3)=m(Lptr+1,1); %qty of items for a delivery\r\n dlist(i,1:dxyq(i,3))=sort(m(Lptr+2,1:dxyq(i,3))+1); % items 0:399 become 1:400\r\n Lptr=Lptr+3;\r\nend\r\ndlist=dlist(:,1:max(dxyq(:,3))); %dlist width reduces from 400 to 19\r\n%read complete\r\n%Create three useful arrays required for scoring\r\n% delivery to delivery location and warehouse to delivery location\r\n dw2dw=zeros(norders+nw);\r\n vx=[dxyq(:,1);wxy(:,1)];\r\n vy=[dxyq(:,2);wxy(:,2)];\r\n for j=1:norders+nw\r\n  dw2dw(:,j)=ceil(((vx-vx(j)).^2+(vy-vy(j)).^2).^.5);\r\n end\r\n %warehouse to delivery distance [nw,norders]\r\n w2d=dw2dw(norders+1:end,1:norders);\r\n \r\n %Initialize permutation maps for Brute Force path calculation\r\n for i=9:-1:1\r\n  pmapc{i}=perms(1:i);\r\n end\r\n %1.3s Cody setup\r\n\r\ntoc\r\nfprintf('%i ',nr,nc,ndr,nturns,max_wt,nprod);fprintf('\\n')\r\n\r\ncmds=drone(nr,nc,ndr,nturns,max_wt,nprod,vpwt,nw,wxy,wprodq,norders,dxyq,dlist,dw2dw,w2d,pmapc);\r\ntoc\r\n\r\n%Evaluate cmds provided for accuracy and drone time to deliver packages\r\n drIdx=ones(ndr,1)*(norders+1); % drone location index, quantized, range  [1:norders norders+wh]\r\n drT=zeros(ndr,1); % Drone Time, includes loads and flight legs\r\n drW=zeros(ndr,1); % Drone Weight\r\n drL=zeros(ndr,nprod); %Histogram of drone loads\r\n dt=zeros(norders,1); %delivery time of last item deposited\r\n \r\n %Reduce cmds for illegal content and give warning \r\n csize=size(cmds,1);\r\n cmds=abs(cmds); %remove any negatives\r\n cmds(prod(cmds,2)==0,:)=[]; % No zeros allowed\r\n cmds(cmds(:,2)==1 \u0026 cmds(:,3)\u003enw,:)=[]; %For Load cmds(3)\u003c=1nw\r\n cmds(cmds(:,3)\u003enorders,:)=[];\r\n cmds(cmds(:,4)\u003enprod,:)=[];\r\n cmds(cmds(:,1)\u003c1,:)=[];\r\n cmds(cmds(:,1)\u003endr,:)=[];\r\n cmds(cmds(:,2)\u003c1,:)=[]; % invalid cmd type only 1/3 allowed\r\n cmds(cmds(:,2)==2,:)=[]; % invalid cmd type only 1/3 allowed\r\n cmds(cmds(:,2)\u003e3,:)=[]; % invalid cmd type only 1/3 allowed\r\n if size(cmds,1)\u003ccsize\r\n  fprintf('Warning: Invalid cmds purged\\n')\r\n end\r\n \r\n flag=0; % No issues 0\r\n for i=1:size(cmds,1)\r\n  vcmd=cmds(i,:); %[drone 1/3 warehouse/delivery item qty]\r\n  if vcmd(2)==1 %Load  vcmd(3) warehouse  (allow warehouse to warehouse,deliv to wh)\r\n   wptr=vcmd(3);\r\n   drT(vcmd(1))=drT(vcmd(1))+dw2dw(drIdx(vcmd(1)),norders+wptr)+1; %dist+load\r\n   drIdx(vcmd(1))=norders+wptr;\r\n   wprodq(wptr,vcmd(4))=wprodq(wptr,vcmd(4))-vcmd(5);\r\n   drL(vcmd(1),vcmd(4))=drL(vcmd(1),vcmd(4))+vcmd(5);\r\n   drW(vcmd(1))=drW(vcmd(1))+vcmd(5)*vpwt(vcmd(4)); %Add item(s) wt\r\n   if wprodq(wptr,vcmd(4))\u003c0 % Check for excess usage at warehouse\r\n    flag=1;\r\n    fprintf('Not enough of item %i at warehouse %i at cmds %i\\n',vcmd([4 3]),i);\r\n    break;\r\n   end\r\n   if drW(vcmd(1))\u003emax_wt % check for excess wt loaded\r\n    flag=1;\r\n    fprintf('Max wt exceeded: %i  drone %i at cmds %i\\n',drW(vcmd(1)),vcmd(1),i);\r\n    break;\r\n   end\r\n  else %Deliver:  vcmd(3) delivery location (wh2deliv, deliv2deliv)\r\n   % [drone 3 did item q]\r\n   dptr=vcmd(3);\r\n   drT(vcmd(1))=drT(vcmd(1))+dw2dw(drIdx(vcmd(1)),dptr)+1; % dist+drop\r\n   drIdx(vcmd(1))=dptr;\r\n   for j=1:vcmd(5)\r\n    iptr=find(dlist(dptr,:)==vcmd(4),1,'first');\r\n    if ~isempty(iptr)\r\n     dlist(dptr,iptr)=0;\r\n    else %Excess item being delivered\r\n     flag=1;\r\n     fprintf('Excess delivery of item %i at cmds %i\\n',vcmd(4),i)\r\n     break\r\n    end\r\n   end\r\n   if flag==1,break;end %Excess delivery break\r\n   drL(vcmd(1),vcmd(4))=drL(vcmd(1),vcmd(4))-vcmd(5);\r\n   drW(vcmd(1))=drW(vcmd(1))-vcmd(5)*vpwt(vcmd(4)); % Unload item(s) wt delivered\r\n   if drL(vcmd(1),vcmd(4))\u003c0\r\n    flag=1;\r\n    fprintf('Non-existent itme delivery attempt. Item %i cmds %i\\n',vcmd(4),i)\r\n    break;\r\n   end\r\n   dt(dptr)=max(dt(dptr),drT(vcmd(1)));\r\n  end % Load/Delivery \r\n end % cmds\r\n \r\n if flag\r\n  scr=0;\r\n else\r\n  dt(sum(dlist,2)\u003e0)=nturns; %Non-completed delivery scores Zero\r\n  dt(dt\u003enturns)=nturns; %Completed beyond time limit scores 0\r\n  scr= sum( ceil(100*(nturns-dt(:))/nturns) ); \r\n end\r\n fprintf('scr: %i\\n',scr)\r\n \r\n\r\nassert(scr\u003e110000)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1,"test_suite_updated_at":"2020-09-27T22:00:47.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-09-26T18:26:41.000Z","updated_at":"2025-12-08T15:43:28.000Z","published_at":"2020-09-27T00:08: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:r\u003e\u003cw:t\u003eThe 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/hashcode-drone-delivery\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle Drone\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest is an optimization task to maximize net customer satisfaction by using 30 drones across 10 warehouses to fulfill 1250 customer multi-item, 400 distinct items(products), orders. Satisfaction is (1-delivery_time/max_time)*100 and 0 if delivery not completed by max_time. The max time of 112993 is easily beaten with typical worse time of 40K. \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 contest subset has disabled moving items from warehouse to warehouse thus wait times are not used.\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 maximum score is 125000. To succeed as a DroneManager requires a score of 110K, 5th at Kaggle contest 9/26/20.\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 [rows,cols,numdrones,maxturns,maxDronewt,numproducts,numOrders,delivery_xy_qty,delivery_list,distance_delivery\u0026amp;warehouse_to_delivery\u0026amp;warehouse, distance_warehouse_to_delivery,permutation_cell_array_for1to9]\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 Commands matrix [number of commands,5]  The number of commands is likely to be 18K to 20K.\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\u003eLoading from a warehouse: [drone# 1 warehouse# item# quantity]. Drone1:30, Warehouse1:10, Item1:400. The 1 is LOAD.\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\u003eOnly one item type can be loaded on to drone at a time. Each Load/Deliver command consumes 1 unit of time.\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\u003eDelivery for an order:  [drone# 3 delivery# item# quantity]. Drone1:30, Delivery1:1250, Item1:400. The 3 is Deliver.\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 final delivery time for an order is the latest drone time inclusive of final delivery time unit.\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\u003eAdditional approach comments are at \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/hashcode-drone-delivery/discussion/186050\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle Drone 111401\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and in the template along with using a provided routine to create a Kaggle python submission file.\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\u003eDelivery/Warehouse Map.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Warehouses red*, Single item delivery redO, Two item delivery blackO, \u0026gt;2 items greenO\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:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"420\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"560\\\"/\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\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\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,iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH5AkaEw0DQXIUYAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyNi1TZXAtMjAyMCAxMjoxMzowMiU9ljMAACAASURBVHic7L1/zGdHVT9+ugXBiKYiP6QqnJWmpZV0fVgQu9n0M4/SaEJD1H8qySe7U0xMa1MjsSq1lr1NiUFisDSBIGBnN7UlWlLN1rjhU+w829K6yBcjik3ZovdpEVJodreSCLXs0/n+ce4973Nn5t73ff+8837vvLLZPM993u97Z+bee15zznnNmfOcc5CRkZGRkTE0dg3dgIyMjIyMDIBMSBkZGRkZiSATUkZGRkZGEsiElJGRkZGRBDIhZWRkZGQkgUxIGRkZGRlJIBNSRkZGRkYSyISUkZGRkZEEMiFlZGRkZCSBTEgZGRkZGUkgE1JGRkZGRhLIhJSRkZGRkQTOL4pi6DbMH1//+te/+MUvfv/733/Vq141dFtmwiOPPPKGN7yBf432a+U6+7Wvfe2f//mfn3vuude97nV8cA269tWvfvVf/uVfdu3adcEFF/DBNegX4ctf/vL555//Qz/0Q/TrGvTr9OnT//7v//7NGq94xSte9rKXwbp07R//8R+//e1v/+RP/iQfXIl+rSEhPfDAA7/zO7/zwgsvfPKTn3zuued+/ud/fugWTYmPfexjH/nIR97znvfQr9F+rVxnP/CBD9x5553f/e5377///gceeODqq69+yUtesgZd+7M/+7M777zz+eef//jHP/69733vrW99K6zLLQOAr33ta9dcc83P/uzP/vRP/zSsS7/uvffeP/iDPzh27NgDDzzwwAMPvOUtb3n961+/Bl07fvz4b/zGbzz//PPHjh07evTor/zKr5x33nkr0y+3Xjh79uzGxsaTTz7pnDt16tSePXvKshy6URPjzJkz73vf+zY2Nvbv309Hov1auc4+/vjjb37zm8+cOUO/Xn311ffdd98adO3kyZPcr29/+9uXXnrpqVOn1qBfhBdeeOFd73qXUurBBx906/IoOufe+9733nPPPfLIGnTt7NmzV1xxxRe+8AX69Z3vfOexY8dWqF/rlkN6+OGHL7jggosuuggAXvnKV1555ZWf//znh27UxLjjjjte+cpX/vEf/zEfifZr5Tp7wQUX/Pmf/zlHtHbv3v3Nb35zDbr2xje+8W/+5m+oXy996Ut3dna+//3vr0G/CB/+8Id/8Rd/8eKLL6Zf16Zfjz/++Bvf+MbTp09///vfpyNr0LXjx4//xE/8xM/93M/Rr3/3d3/3y7/8yyvUr3UjpOeee+5Nb3oT//qKV7zi5MmTA7ZnOrz//e//vd/7vR/8wR/kI9F+rVxnX/e61+3bt49+fuqpp6y1V1111Rp0bdeuXRdddNHOzs5f/dVfHTx48IYbbnjta1+7Bv0CgH/6p3/6whe+8Nu//dt8ZD36tbOz8/TTT99+++1XX331nj17/uiP/gjWomtnzpz5qZ/6qfe///179ux5y1ve8hd/8RewUv1aN0La2dnZtWvUqV27dr344osDtmc6yC4Qov1a3c5+61vf0lr/1m/91qWXXro2XTt9+vT//u//vuY1r3n00Uefe+65NejXd77znfe///0f/vCH5cE16BcAfOtb33rHO97xiU984rHHHrPWPvLII5/+9KfXoGtf+9rXPvvZz/7Mz/zMl7/85U9/+tMf//jHP//5z69Qv9aNkF72spft7Ozwry+++OJLXvKSAdszL0T7taKd/bd/+7df/dVfPXDgwPXXXw9r1LVXv/rVBw4c+OQnP/nyl7/8yJEja9CvD33oQ5dddtlTTz11/Phx0qR99atfXYN+AcCFF1545513XnjhhQDw2te+9qqrrvrSl760Bl17/etf/4Y3vOGaa64BgEsuueSqq676+7//+xXq17oR0mte85qvfOUr/OuZM2f27t07YHvmhWi/VrGzjz322Hve856iKK699lo6sgZd+8///M+//Mu/5F9//Md//JlnnlmDfr361a/+n//5n3vvvffee+/9xje+cfz48ccee2wN+gUATz311Gc+8xn+9YUXXjj//PPXoGs/9mM/Jn/dtWvXrl27VqlfQ6sq5oydnZ39+/dvbW05506ePHn55Zc/++yzQzdqSmxtbbHKLtqvlevs008/vbGx8dBDD71Q4+zZs2vQtZMnT1522WX/8R//4Zx79tln9+3b9w//8A9r0C+J3/zN3ySV3Xr064knnrjssstIY/bMM8/s27fvkUceWYOuvfDC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NTLimUlNKoyQRva3R5822t+Mzl4qsE9dH+PURoMBZ1NBfyO+AIWb441y4z6mKeIXibxBH8MUlD31mpm9BbbcCDc6L8Ft6Mr2qetjqPRSiLUmK14who37mEaIXySyy45Z6dTiwgoHimp0MC7AQmGKhO8VLIOzaZhoYYXErHRqyYLrKuWHuvdPT/kRnE3DRAsrJGalU0sW3MikvN0yw79RdSXH2TRMtLBCYlY6tbiwRiblZ2F2ARacG83DfE+aL8IcRYYB7mXHMLMw6zfB68O4Gc3WShKkAjUP83ijJViSIHvVfLzpBhMhbCExE8rSEqxeDdPTMD0N8/OBEwcxbpwC1aEGihBb6lT2K8OML2whMZPIrl0wPw9ag5QAANPTAABKlZ3en3HT4O4hbN8wEwkrJGbimJ+HhQVIibxOkq46qVcRz7uHMEztsMuOmTgWF2HWTeOGuTnYW2cz0zhbpjLMWMMKiZk4FhYyTx1FSlhaqvMmvHsIw9QNKyRm4pASFhbcg/PzBVpqkJtwvwOGqRtWSMwoGOnuO7OzBd65xUUQos6bcL8DhqkbVkjM0Bn17jtSghBZFgMALC3B9DQsLcFcnTWq3O+AYWqHs+yY4dJMNprWsLAAq7M0bpibC+TX9X+TkVTCMszKgRUSM1zKstH85gg1I2VH5veQbsL1QAxTHzG67F599dWTJ0/ir++9996f//xnfxuPsuMTz9VXX930EHqgejbaeD1XT0zqo/FzMfUSnUJ66623vv/977/66qv216effvr2229/9tlnt23btmfPHjyt7DgTG5yNxjBMReJy2X366af33nvvF7/4Rfvr8vLy3Nzcn/70pzVr1pw+ffqrX/3qt7/9bSFE2fFGx84UU1frUoZhJp64FNJDDz100003vfHGG/bXF15ThwNyAAACsElEQVR44aKLLlqzZg0AXHzxxTfccMOLL74ohCg77l9wUk3v8XquEz898V///V9f/p8vA8Cn//3pBz/9AAC+/D9f3g/7nTPH67l6YlIfjZ+LqZGIFNLf/va3v/71r08++eRdd91lj3z00UfXXHMNnnDBBRccPXo0cNxhBYaXomUBFra8ucX+/L/wvwoU8JvDMEwnsSikf/3rXz/60Y8eeeQRenB5eXnVqnaUa9WqVefOnQscZ6KFs9EYhulKLArp5z//+bp16959991333339OnTb7zxxhVXXHH++ecvLy/jOefOnfv85z8PAGXHGYZhmPElFoV0ySWXHD58eP/+/QDw/vvvLy4uXnjhhevWrXv99dfxnDNnznz9618HgEsvvbTwOMMwDDO+xKKQfvCDH+DPd91113e/+92bb77ZOuIWFxdvvPHGY8eOvfzyy7t37waA6667rvA4wzAMM77EopAKWbVq1S9+8Ysf/vCHa9aseeONN372s5/ZjPCy4wzDMMz4cp4xpukxMAzDMEx8nRoYhmGYlQkrJIZhGCYKWCExDMMwUcAKiWEYhokCVkgMwzBMFLBCYhiGYaKAFRLDMAwTBayQGIZhmChghcQwDMNEASskhmEYJgpYITEMwzBRwAqJYRiGiQJWSAzDMEwUsEJiGIZhooAVEsMwDBMFrJAYhmGYKGCFxDAMw0QBKySGYRgmClghMQzDMFHAColhGIaJAlZIDMMwTBSwQmIYhmGigBUSwzAMEwWskBiGYZgoYIXEMAzDRAErJIZhGCYKWCExDMMwUcAKiWEYhokCVkgMwzBMFLBCYhiGYaKAFRLDMAwTBayQGIZhmChghcQwDMNEASskhmEYJgpYITEMwzBRwAqJYRiGiQJWSAzDMEwUsEJiGIZhooAVEsMwDBMF/x8hDtwxE+e4oQAAAABJRU5ErkJggg==\",\"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":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":2036,"title":"Santa's Cards","description":"This Challenge is inspired by the \u003chttp://www.kaggle.com/c/packing-santas-sleigh Packing Santa's Sleigh\u003e contest at kaggle that runs until January 26, 2014. Will Elfonso win another kaggle contest? The kaggle contest is a 3-D fitting/optimization.\r\n\r\nThis Challenge is to place Santa Cards in a minimum area given a board width(columns) and a set of N cards of (rows,columns). Cards can not be rotated.\r\n\r\n*Input*: Card_Array, W ; Card_Array(N,2) and W=width of M array\r\n\r\n*Output*: M ; An X by W array of values 0:N, 0 is unused space\r\n\r\n*Scoring*: Number of rows required to place all cards\r\n\r\n*Example*:\r\n\r\n[2 2;3 3;1 2], 5\r\n\r\nM\r\n\r\n  1 1 2 2 2\r\n  1 1 2 2 2\r\n  3 3 2 2 2\r\n\r\nScores a 3, number of rows\r\n\r\n*Contest Results:*\r\nAlfonso put in a tremendous 40,000 point reduction in the last days and appeared unsurpassable. However, a pair of Polish Professors in Mathematics and Computer Science, Marek and Cygan, submitted an astounding further 34,000 point improvement for the win. Alfonso won the Matlab category prize.","description_html":"\u003cp\u003eThis Challenge is inspired by the \u003ca href = \"http://www.kaggle.com/c/packing-santas-sleigh\"\u003ePacking Santa's Sleigh\u003c/a\u003e contest at kaggle that runs until January 26, 2014. Will Elfonso win another kaggle contest? The kaggle contest is a 3-D fitting/optimization.\u003c/p\u003e\u003cp\u003eThis Challenge is to place Santa Cards in a minimum area given a board width(columns) and a set of N cards of (rows,columns). Cards can not be rotated.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput\u003c/b\u003e: Card_Array, W ; Card_Array(N,2) and W=width of M array\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput\u003c/b\u003e: M ; An X by W array of values 0:N, 0 is unused space\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring\u003c/b\u003e: Number of rows required to place all cards\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample\u003c/b\u003e:\u003c/p\u003e\u003cp\u003e[2 2;3 3;1 2], 5\u003c/p\u003e\u003cp\u003eM\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1 1 2 2 2\r\n1 1 2 2 2\r\n3 3 2 2 2\r\n\u003c/pre\u003e\u003cp\u003eScores a 3, number of rows\u003c/p\u003e\u003cp\u003e\u003cb\u003eContest Results:\u003c/b\u003e\r\nAlfonso put in a tremendous 40,000 point reduction in the last days and appeared unsurpassable. However, a pair of Polish Professors in Mathematics and Computer Science, Marek and Cygan, submitted an astounding further 34,000 point improvement for the win. Alfonso won the Matlab category prize.\u003c/p\u003e","function_template":"function m=cards(c,nc)\r\n % cards array row=card; [h,w]\r\n % fill array with values 1:size(c,1)\r\n % m is nc wide\r\n m=zeros(sum(c(:,1)),nc);\r\nend","test_suite":"assignin('caller','score',30);\r\n%%\r\nnc=8;\r\nc=[2 2;4 4;2 2;3 3;2 2;1 2;1 8;1 2;4 4;3 3;3 2];\r\nm=cards(c,nc)\r\n\r\nassert(size(m,2)==nc)\r\n\r\nfor i=1:size(c,1)\r\n mt=double(m==i);\r\n mtc=conv2(mt,ones(c(i,:)),'same');\r\n assert(nnz(mtc==c(i,1)*c(i,2))==1)\r\nend\r\n\r\n\r\nassignin('caller','score',size(m,1));\r\n\r\n\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":3,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-12-06T02:03:07.000Z","updated_at":"2014-01-29T00:17:00.000Z","published_at":"2013-12-06T02:19:08.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:r\u003e\u003cw:t\u003eThis Challenge is inspired by the\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.kaggle.com/c/packing-santas-sleigh\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ePacking Santa's Sleigh\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest at kaggle that runs until January 26, 2014. Will Elfonso win another kaggle contest? The kaggle contest is a 3-D fitting/optimization.\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\u003eThis Challenge is to place Santa Cards in a minimum area given a board width(columns) and a set of N cards of (rows,columns). Cards can not be rotated.\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: Card_Array, W ; Card_Array(N,2) and W=width of M 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: M ; An X by W array of values 0:N, 0 is unused space\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: Number of rows required to place all cards\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:\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\u003e[2 2;3 3;1 2], 5\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\u003eM\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 1 2 2 2\\n1 1 2 2 2\\n3 3 2 2 2]]\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\u003eScores a 3, number of rows\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\u003eContest Results:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Alfonso put in a tremendous 40,000 point reduction in the last days and appeared unsurpassable. However, a pair of Polish Professors in Mathematics and Computer Science, Marek and Cygan, submitted an astounding further 34,000 point improvement for the win. Alfonso won the Matlab category prize.\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":2072,"title":"Packing Santa's Sleigh: First Layer","description":"This Challenge is inspired by the \u003chttp://www.kaggle.com/c/packing-santas-sleigh Packing Santa's Sleigh\u003e contest at kaggle that runs until January 26, 2014.\r\n\r\nThe Bag has a 1000 x 1000 base with the contest having 1,000,000 packages.\r\n\r\nThis Challenge is to place as many of the first N Santa Presents onto the 1000 x 1000 grid. The packages have been presorted to have Z as max, not provided, thus minimizing the X*Y cross section. Only the first 240 packages are provided as package 241 busts the bag bottom making an area greater than 1,000,000. Packages out of sequence cause a severe penalty thus all packages less than the highest package used must fit on the board.\r\n\r\n*Input*: Presents ; Presents(240,2)\r\n\r\n*Output*: L, xyTL; L(1000,1000) of values 0:n\u003c=240, 0 is unused space\r\n\r\n*Scoring*: Unused Area\r\n\r\n*Example*:\r\n\r\n[2 2;3 3;1 2] is Presents\r\n\r\nL\r\n\r\n  1 1 2 2 2 0  thru column 1000\r\n  1 1 2 2 2\r\n  3 3 2 2 2\r\n  0 0 0 0 0 0 rows 4 thru 1000 are zeros\r\n\r\nxyTL\r\n[1 1;1 3;3 1]\r\n\r\nScores 1,000,000 - 15= 999985\r\n\r\nBoxes 1:236 are possible, 97.5719% efficient pack in \u003c 1sec.\r\n\r\n*TestSuite Sample Code:*\r\n\r\nIn the TestSuite at the end is wrapper code for entering the kaggle contest.\r\nUpdate your SantaPack routine and execute the wrapper to see your contest score. The official presents.mat file needs to be downloaded. The wrapper has further discussion on efficient methods and current scores. \r\n","description_html":"\u003cp\u003eThis Challenge is inspired by the \u003ca href = \"http://www.kaggle.com/c/packing-santas-sleigh\"\u003ePacking Santa's Sleigh\u003c/a\u003e contest at kaggle that runs until January 26, 2014.\u003c/p\u003e\u003cp\u003eThe Bag has a 1000 x 1000 base with the contest having 1,000,000 packages.\u003c/p\u003e\u003cp\u003eThis Challenge is to place as many of the first N Santa Presents onto the 1000 x 1000 grid. The packages have been presorted to have Z as max, not provided, thus minimizing the X*Y cross section. Only the first 240 packages are provided as package 241 busts the bag bottom making an area greater than 1,000,000. Packages out of sequence cause a severe penalty thus all packages less than the highest package used must fit on the board.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput\u003c/b\u003e: Presents ; Presents(240,2)\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput\u003c/b\u003e: L, xyTL; L(1000,1000) of values 0:n\u0026lt;=240, 0 is unused space\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring\u003c/b\u003e: Unused Area\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample\u003c/b\u003e:\u003c/p\u003e\u003cp\u003e[2 2;3 3;1 2] is Presents\u003c/p\u003e\u003cp\u003eL\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e1 1 2 2 2 0  thru column 1000\r\n1 1 2 2 2\r\n3 3 2 2 2\r\n0 0 0 0 0 0 rows 4 thru 1000 are zeros\r\n\u003c/pre\u003e\u003cp\u003exyTL\r\n[1 1;1 3;3 1]\u003c/p\u003e\u003cp\u003eScores 1,000,000 - 15= 999985\u003c/p\u003e\u003cp\u003eBoxes 1:236 are possible, 97.5719% efficient pack in \u0026lt; 1sec.\u003c/p\u003e\u003cp\u003e\u003cb\u003eTestSuite Sample Code:\u003c/b\u003e\u003c/p\u003e\u003cp\u003eIn the TestSuite at the end is wrapper code for entering the kaggle contest.\r\nUpdate your SantaPack routine and execute the wrapper to see your contest score. The official presents.mat file needs to be downloaded. The wrapper has further discussion on efficient methods and current scores.\u003c/p\u003e","function_template":"function  [L,xyTL]=SantaPack(p)\r\n% p is an Nx2\r\n% xyTL is Top Left position of pieces 1:n.\r\n% xyTL created for Speed vs find in a 1Kx1K array\r\n% Place 1:n of p onto L, a 1000x1000 array\r\n% Put p row onto L array. \r\n% If p(1,:) is [2 3]\r\n%[2 3] may be placed as [1 1 1;1 1 1] or [1 1; 1 1;1 1] for box 1\r\n% Note: big boxes typically pack to 95% and small boxes to \u003e98%\r\n\r\n L=zeros(1000);\r\n xyTL=p*0;\r\n\r\n% Placing first 16 pieces\r\n% No piece exceeds 250x250\r\n pxy=[1 251 501 751];\r\n piece=1;\r\n for i=1:4\r\n  for j=1:4\r\n% putting piece on layer\r\n   L(pxy(i):pxy(i)+p(piece,1)-1,pxy(j):pxy(j)+p(piece,2)-1)=piece; \r\n% TL Location of piece\r\n   xyTL(piece,:)=[pxy(i) pxy(j)]; \r\n   piece=piece+1;\r\n  end\r\n end\r\n %figure(3);imagesc(L)\r\n \r\nend % SantaPack","test_suite":"assignin('caller','score',100000);\r\n%%\r\nSanta_L1=[3     2;207    73;160    78;8     3;\r\n     9     9;\r\n   170   120;116    91;\r\n   206   142;28     8;\r\n     3     2;41    22;\r\n    31    11;28    20;\r\n    29    13;98    96;\r\n    26     4;34     9;\r\n     4     3;84    78;\r\n   219   114;28    22;\r\n   195   185;3     2;\r\n    31     9;104   101;\r\n    32    31;188   142;\r\n    45    18;8     2;\r\n    13    10;49    22;\r\n   172    72;28    17;\r\n    90    87;33     5;\r\n    32    23;16    14;\r\n    42    18;32     8;\r\n     7     5;6     6;\r\n   201    69;20    11;\r\n    30    18;211   120;\r\n   206    97;3     2;\r\n   124    92;48    43;\r\n     2     2;173   103;\r\n    26    12;8     7;\r\n     8     8;57    33;\r\n    21    20;24    15;\r\n    26    12;44    24;\r\n    30     8;\r\n    43    26;\r\n    23    23;\r\n     9     4;\r\n    16    13;\r\n    58    29;\r\n   133   125;\r\n     5     2;\r\n   197   117;\r\n    39    10;\r\n    31    11;\r\n    41    18;\r\n     6     3;\r\n    31     8;\r\n    40    32;\r\n    41    39;\r\n    36    30;\r\n     2     2;\r\n    25    24;\r\n     6     2;\r\n     3     2;\r\n     2     2;\r\n    85    70;\r\n    37    25;\r\n    24    20;\r\n    60    26;\r\n    29    14;\r\n    49    30;\r\n   153    75;\r\n     6     3;\r\n     7     3;\r\n   185   162;\r\n     4     2;\r\n     6     5;\r\n   176    99;\r\n     4     2;\r\n   219   154;\r\n    24    22;\r\n   148    87;\r\n    32     7;\r\n   143    98;\r\n    23    13;\r\n   150    65;\r\n     5     2;\r\n    53    41;\r\n    25    12;\r\n    36     6;\r\n    21    10;\r\n   211    79;\r\n   183   130;\r\n     6     3;\r\n    36    28;\r\n    32    16;\r\n    21    15;\r\n    27    26;\r\n    39    14;\r\n    36     7;\r\n    57    17;\r\n   214    90;\r\n    36     5;\r\n    27    16;\r\n    52    15;\r\n     8     6;\r\n     5     4;\r\n    52    37;\r\n     7     2;\r\n    92    79;\r\n    37    35;\r\n    33     5;\r\n     5     2;\r\n    52    10;\r\n    29     5;\r\n    44    18;\r\n     8     5;\r\n    16     8;\r\n   137   105;\r\n    78    74;\r\n     9     5;\r\n    39    29;\r\n    43    31;\r\n     6     3;\r\n     8     4;\r\n    26    19;\r\n    22     7;\r\n    30    15;\r\n   199   195;\r\n     7     7;\r\n     7     5;\r\n   134    81;\r\n   206   108;\r\n    54    29;\r\n    16     7;\r\n   116    99;\r\n    35    23;\r\n    31    17;\r\n    56    11;\r\n     7     3;\r\n    52     5;\r\n   102    99;\r\n     5     5;\r\n    35    17;\r\n     8     6;\r\n    51     7;\r\n    28    16;\r\n   107    83;\r\n    26     8;\r\n     8     6;\r\n   149    83;\r\n    45    29;\r\n    55    52;\r\n    27     6;\r\n    82    81;\r\n     9     5;\r\n    27    21;\r\n    19    10;\r\n    56    26;\r\n    19    14;\r\n    11     8;\r\n    47     7;\r\n    26    13;\r\n    36    19;\r\n    87    73;\r\n    14    10;223   100;2     2;33     5;198   135;38    15;19     8;211    95;9     6;21     7;175   145;22    16;7     5;7     4;9     8;42     5;3     3;2     2;3     2;5     2;30    24;29    29;27     9;168    72;6     4;22     7;9     6;10     6;19    16;7     2;43    14;138   115;138   130;39    20;9     4;27     7;26    22;169   144;8     8;41     9;50    26;62    10;33    19;7     2;121   112;102    93;109    88;9     8;40    40;25    19;31     8;55    23;41    11;6     2;8     3;128   114;40    16;7     6;5     2];\r\n[L,xyTL]=SantaPack(Santa_L1);\r\nptrxy=find(xyTL(:,1)\u003e0,1,'last');\r\n\r\npresents=Santa_L1;\r\nfor k=1:ptrxy\r\n  ptrxmin=xyTL(k,1);\r\n  ptrymin=xyTL(k,2);\r\n  assert(isequal(L(ptrxmin,ptrymin),k)) % Verify TL corner\r\n\r\n  if ptrxmin+presents(k,1)-1\u003e1000 || ptrymin+presents(k,2)-1\u003e1000\r\n% BR Corner verify for rotated only fit case\r\n    assert(isequal(L(ptrxmin+presents(k,2)-1,ptrymin+presents(k,1)-1),k))\r\n  elseif ptrxmin+presents(k,2)-1\u003e1000 || ptrymin+presents(k,1)-1\u003e1000\r\n% BR corner verify for non-rotated only fit case\r\n    assert(isequal(L(ptrxmin+presents(k,1)-1,ptrymin+presents(k,2)-1),k))\r\n  else % rot or non-rot case\r\n   v1=L(ptrxmin+presents(k,2)-1,ptrymin+presents(k,1)-1)==k;\r\n   v2=L(ptrxmin+presents(k,1)-1,ptrymin+presents(k,2)-1)==k;\r\n   assert(v1 || v2); % simple corner check\r\n  end\r\n% More robust checks may be implemented if needed\r\nend\r\n   \r\n\r\nA=Santa_L1(:,1).*Santa_L1(:,2);\r\nAs=sum(A(1:ptrxy))\r\nassignin('caller','score',min(100000,1000000-As));\r\n%%\r\n%{\r\nfunction SantaPack_Cody\r\n% www.kaggle.com Santa Packing Contest \r\n% 11/2013 thru January 2014\r\n% Given 1 Million Rectangularoid packages\r\n% Fit Packages into a Minimum Heigth Box with a base of 1000 x 1000\r\n% Rules allow presents out of order but this is virtually non-optimiziable\r\n% Presents out of order incur a penalty\r\n% Packing Construction Here:\r\n% All boxes dimension sorted [Mid, Min, Max]\r\n% Boxes 1:236 all have their tops on the same plane (97.5719% efficient pack)\r\n% Boxes 237:423 have their tops 250 lower in Z. Max Z of 1:236 is 250.\r\n% The very bottom layer, with box 1000000 has bottom box at Z=1\r\n% Note: Max dimension after box 700,000 is 70\r\n% This construction has min cross area per present, max dimension is placed on Z\r\n% Input is presents that have cumulative area \u003c= 1000000\r\n% The optimal score with perfect layer packing is \r\n% Layers 4098  zsum 996483  Score 1,992,966\r\n% Layers 4210, Score of 2,047,696 is possible with sequence layer packing\r\n% Kaggle Lead as of 12/21/2013 is 1,999,256. Unknown method.\r\n% Pack routine returns a 1000x1000 array with values 1:n, n\u003c=N\r\n% N is the Nth  box that fits in the 1,000,000 area limit\r\n% Next call uses n+1:N\r\n\r\nload presents  % available at kaggle site as a Mat file\r\nnumPresents = size(presents,1);\r\n\r\npresents(:,2:4)=sort(presents(:,2:4),2);\r\npresents(:,2:3)=fliplr(sort(presents(:,2:3),2)); % x\u003ey, z\u003ex\r\npresents=[presents presents(:,2).*presents(:,3)]; % Area of box tops\r\npresents=[presents cumsum(presents(:,end))]; % [presID x y z A Asum]\r\n\r\npe=0;\r\nLayer=0;\r\nzsum=0;\r\nz=-1;\r\npresentCoords=zeros(1000000,25);\r\n\r\ntic\r\nwhile pe\u003c1000000\r\n ps=pe+1; \r\n Asum=presents(ps:min(ps+5000,1000000),end); % valid for layer 1\r\n if pe\u003e0, Asum=Asum-presents(pe,end); end% remove prior layers sum\r\n ptr1M=find(Asum\u003c=1000000,1,'last');\r\n pe=ps+ptr1M-1;\r\n \r\n [L,xyTL]=SantaPack(presents(ps:pe,2:3)); % L has values 1 thru n, being ps thru ps+n-1\r\n % xyTL is Top Left position of pieces 1:n\r\n %figure(3);imagesc(L);\r\n\r\n pe=ps-1+find(xyTL(:,1)\u003e0,1,'last'); % find number of boxes placed\r\n zmax=max(presents(ps:pe,4));\r\n \r\n % Convert Layers to coordinates\r\n % Locate pieces in Layer and assign coordinate values\r\n % z axis values fixed in post processing to positives\r\n % Valid placement and sizes assumed\r\n for k=1:pe-ps+1\r\n  idx=k+ps-1; \r\n  ptrxmin=xyTL(k,1);\r\n  ptrymin=xyTL(k,2);\r\n  if ptrxmin+presents(idx,2)-1\u003c=1000 \u0026\u0026 ptrymin+presents(idx,3)-1\u003c=1000\r\n   if L(ptrxmin+presents(idx,2)-1,ptrymin+presents(idx,3)-1)==k\r\n    ptrxmax=ptrxmin+presents(idx,2)-1;\r\n    ptrymax=ptrymin+presents(idx,3)-1;\r\n   else\r\n    ptrxmax=ptrxmin+presents(idx,3)-1;\r\n    ptrymax=ptrymin+presents(idx,2)-1;\r\n   end\r\n  else % assumed placement if xmax(1)\u003e1000\r\n   ptrxmax=ptrxmin+presents(idx,3)-1;\r\n   ptrymax=ptrymin+presents(idx,2)-1;\r\n  end % if\r\n  \r\n % place this section inside SantaPack and output presentCoords vs L\r\n    presentCoords(idx,1) = idx;\r\n    presentCoords(idx,[2 8 14 20]) = ptrxmin;\r\n    presentCoords(idx,[5 11 17 23]) = ptrxmax;\r\n    presentCoords(idx,[3 6 15 18]) = ptrymin;\r\n    presentCoords(idx,[9 12 21 24]) = ptrymax;\r\n    presentCoords(idx,[4 7 10 13]) = z;\r\n    presentCoords(idx,[16 19 22 25]) = z - presents(idx,4) + 1;\r\n end % k\r\n \r\n z=z-zmax;\r\n Layer=Layer+1;\r\n zsum=zsum+zmax;\r\n fprintf('Layer %i Start %i  Final %i Zsum %i  Time %.2f\\n',Layer,ps,pe,zsum,toc) % Processing Status\r\n % Deep routine to 2M takes 30 minutes\r\n % Fast Placement takes 187 sec\r\n \r\nend  % pe\r\n\r\n% Offset Z coordinates \r\n% Bottom is 1 and very top is Positive\r\nzCoords = presentCoords(:,4:3:end);\r\nminZ = min(zCoords(:));\r\npresentCoords(:,4:3:end) = zCoords - minZ + 1;\r\n\r\n% Scoring function\r\n% Ideal order is the original order\r\npresentIDs = presents(:,1); %z\r\nidealOrder = presentIDs; \r\n\r\n% Determine the max z-coordinate; this is the max height of the box\r\nmaxZ = max(max(presentCoords(:,4:3:end)));\r\n\r\n% Go down the layers from top to bottom, reorder presents in numeric order\r\n% for each layer\r\nmaxZCoord = zeros(numPresents,2);\r\nfor i = 1:numPresents\r\n    maxZCoord(i,1) = presentCoords(i);\r\n    maxZCoord(i,2) = max(presentCoords(i,4:3:end));\r\nend\r\nmaxzCoordSorted = sortrows(maxZCoord,[-2 1]); %sort max z-coord for each present\r\nreOrder = maxzCoordSorted(:,1);\r\n\r\n% Compare the new order to the ideal order\r\norder = sum(abs(idealOrder - reOrder));\r\n\r\n% Compute metric\r\nfprintf('Metric %i MaxZ %i  Order Penalty %i\\n',2*maxZ + order,maxZ,order);\r\n\r\n% Creating a Submission File\r\nsubfile = 'submissionfile_SantaPack_Cody.csv';\r\nfileID = fopen(subfile, 'w');\r\nheaders = {'PresentId','x1','y1','z1','x2','y2','z2','x3','y3','z3','x4','y4','z4','x5','y5','z5','x6','y6','z6','x7','y7','z7','x8','y8','z8'};\r\nfprintf(fileID,'%s,',headers{1,1:end-1});\r\nfprintf(fileID,'%s\\n',headers{1,end});\r\nfprintf(fileID,'%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\\n',presentCoords');\r\nfclose(fileID);\r\n\r\nend % SantaPack_Cody\r\n\r\nfunction  [L,xyTL]=SantaPack(p)\r\n% p is an Nx2\r\n% xyTL is Top Left position of pieces 1:n\r\n% Place 1:n of p onto L, a 1000x1000 array\r\n% Put p row onto L array. [2 3] may be placed [1 1 1;1 1 1] or [1 1; 1 1;1 1] for box 1\r\n% Note: big boxes typically pack to 95% and small boxes to \u003e98%\r\n\r\n L=zeros(1000);\r\n xyTL=p*0;\r\n% L(1:p(1,1),1:p(1,2))=1; % putting one piece per layer\r\n% return\r\n\r\n% Placing first 16 pieces\r\n% No piece exceeds 250x250\r\n pxy=[1 251 501 751];\r\n piece=1;\r\n for i=1:4\r\n  for j=1:4\r\n   L(pxy(i):pxy(i)+p(piece,1)-1,pxy(j):pxy(j)+p(piece,2)-1)=piece; % putting piece on layer\r\n   xyTL(piece,:)=[pxy(i) pxy(j)]; % Location of piece\r\n   piece=piece+1;\r\n  end\r\n end\r\n %figure(3);imagesc(L)\r\n \r\nend % SantaPack\r\n%}\r\n\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":4,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-12-22T04:12:10.000Z","updated_at":"2013-12-22T05:37:27.000Z","published_at":"2013-12-22T05:37:27.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:r\u003e\u003cw:t\u003eThis Challenge is inspired by the\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.kaggle.com/c/packing-santas-sleigh\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ePacking Santa's Sleigh\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest at kaggle that runs until January 26, 2014.\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\u003eThe Bag has a 1000 x 1000 base with the contest having 1,000,000 packages.\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\u003eThis Challenge is to place as many of the first N Santa Presents onto the 1000 x 1000 grid. The packages have been presorted to have Z as max, not provided, thus minimizing the X*Y cross section. Only the first 240 packages are provided as package 241 busts the bag bottom making an area greater than 1,000,000. Packages out of sequence cause a severe penalty thus all packages less than the highest package used must fit on the 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\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: Presents ; Presents(240,2)\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: L, xyTL; L(1000,1000) of values 0:n\u0026lt;=240, 0 is unused space\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: Unused Area\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:\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\u003e[2 2;3 3;1 2] is Presents\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\u003eL\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 1 2 2 2 0  thru column 1000\\n1 1 2 2 2\\n3 3 2 2 2\\n0 0 0 0 0 0 rows 4 thru 1000 are zeros]]\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\u003exyTL [1 1;1 3;3 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:t\u003eScores 1,000,000 - 15= 999985\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\u003eBoxes 1:236 are possible, 97.5719% efficient pack in \u0026lt; 1sec.\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\u003eTestSuite Sample Code:\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\u003eIn the TestSuite at the end is wrapper code for entering the kaggle contest. Update your SantaPack routine and execute the wrapper to see your contest score. The official presents.mat file needs to be downloaded. The wrapper has further discussion on efficient methods and current scores.\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":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":46618,"title":"Kaggle 2020 Drone Delivery Contest","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: 941.917px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 470.967px; transform-origin: 407px 470.967px; 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\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: 31.5167px 7.91667px; transform-origin: 31.5167px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe 2020 \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/hashcode-drone-delivery\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle Drone\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: 309.217px 7.91667px; transform-origin: 309.217px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e contest is an optimization task to maximize net customer satisfaction by using 30 drones across 10 warehouses to fulfill 1250 customer multi-item, 400 distinct items(products), orders. Satisfaction is (1-delivery_time/max_time)*100 and 0 if delivery not completed by max_time. The max time of 112993 is easily beaten with typical worse time of 40K. \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: 331.8px 7.91667px; transform-origin: 331.8px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis contest subset has disabled moving items from warehouse to warehouse thus wait times are not used.\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: 373.283px 7.91667px; transform-origin: 373.283px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe maximum score is 125000. To succeed as a DroneManager requires a score of 110K, 5th at Kaggle contest 9/26/20.\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: 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: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e [rows,cols,numdrones,maxturns,maxDronewt,numproducts,numOrders,delivery_xy_qty,delivery_list,distance_delivery\u0026amp;warehouse_to_delivery\u0026amp;warehouse, distance_warehouse_to_delivery,permutation_cell_array_for1to9]\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: 304.15px 7.91667px; transform-origin: 304.15px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e Commands matrix [number of commands,5]  The number of commands is likely to be 18K to 20K.\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: 380.167px 7.91667px; transform-origin: 380.167px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eLoading from a warehouse: [drone# 1 warehouse# item# quantity]. Drone1:30, Warehouse1:10, Item1:400. The 1 is LOAD.\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: 341.9px 7.91667px; transform-origin: 341.9px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eOnly one item type can be loaded on to drone at a time. Each Load/Deliver command consumes 1 unit of time.\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: 352.417px 7.91667px; transform-origin: 352.417px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eDelivery for an order:  [drone# 3 delivery# item# quantity]. Drone1:30, Delivery1:1250, Item1:400. The 3 is Deliver.\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: 286.283px 7.91667px; transform-origin: 286.283px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe final delivery time for an order is the latest drone time inclusive of final delivery time unit.\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: 117.867px 7.91667px; transform-origin: 117.867px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAdditional approach comments are at \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.kaggle.com/c/hashcode-drone-delivery/discussion/186050\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eKaggle Drone 111401\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: 181.283px 7.91667px; transform-origin: 181.283px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e and in the template along with using a provided routine to create a Kaggle python submission file.\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: 84.5333px 7.91667px; transform-origin: 84.5333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eDelivery/Warehouse Map.\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: 275.333px 7.91667px; transform-origin: 275.333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e Warehouses red*, Single item delivery redO, Two item delivery blackO, \u0026gt;2 items greenO\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: 425.917px; 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 212.967px; text-align: left; transform-origin: 384px 212.967px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline;width: 560px;height: 420px\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH5AkaEw0DQXIUYAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyNi1TZXAtMjAyMCAxMjoxMzowMiU9ljMAACAASURBVHic7L1/zGdHVT9+ugXBiKYiP6QqnJWmpZV0fVgQu9n0M4/SaEJD1H8qySe7U0xMa1MjsSq1lr1NiUFisDSBIGBnN7UlWlLN1rjhU+w829K6yBcjik3ZovdpEVJodreSCLXs0/n+ce4973Nn5t73ff+8837vvLLZPM993u97Z+bee15zznnNmfOcc5CRkZGRkTE0dg3dgIyMjIyMDIBMSBkZGRkZiSATUkZGRkZGEsiElJGRkZGRBDIhZWRkZGQkgUxIGRkZGRlJIBNSRkZGRkYSyISUkZGRkZEEMiFlZGRkZCSBTEgZGRkZGUkgE1JGRkZGRhLIhJSRkZGRkQTOL4pi6DbMH1//+te/+MUvfv/733/Vq141dFtmwiOPPPKGN7yBf432a+U6+7Wvfe2f//mfn3vuude97nV8cA269tWvfvVf/uVfdu3adcEFF/DBNegX4ctf/vL555//Qz/0Q/TrGvTr9OnT//7v//7NGq94xSte9rKXwbp07R//8R+//e1v/+RP/iQfXIl+rSEhPfDAA7/zO7/zwgsvfPKTn3zuued+/ud/fugWTYmPfexjH/nIR97znvfQr9F+rVxnP/CBD9x5553f/e5377///gceeODqq69+yUtesgZd+7M/+7M777zz+eef//jHP/69733vrW99K6zLLQOAr33ta9dcc83P/uzP/vRP/zSsS7/uvffeP/iDPzh27NgDDzzwwAMPvOUtb3n961+/Bl07fvz4b/zGbzz//PPHjh07evTor/zKr5x33nkr0y+3Xjh79uzGxsaTTz7pnDt16tSePXvKshy6URPjzJkz73vf+zY2Nvbv309Hov1auc4+/vjjb37zm8+cOUO/Xn311ffdd98adO3kyZPcr29/+9uXXnrpqVOn1qBfhBdeeOFd73qXUurBBx906/IoOufe+9733nPPPfLIGnTt7NmzV1xxxRe+8AX69Z3vfOexY8dWqF/rlkN6+OGHL7jggosuuggAXvnKV1555ZWf//znh27UxLjjjjte+cpX/vEf/zEfifZr5Tp7wQUX/Pmf/zlHtHbv3v3Nb35zDbr2xje+8W/+5m+oXy996Ut3dna+//3vr0G/CB/+8Id/8Rd/8eKLL6Zf16Zfjz/++Bvf+MbTp09///vfpyNr0LXjx4//xE/8xM/93M/Rr3/3d3/3y7/8yyvUr3UjpOeee+5Nb3oT//qKV7zi5MmTA7ZnOrz//e//vd/7vR/8wR/kI9F+rVxnX/e61+3bt49+fuqpp6y1V1111Rp0bdeuXRdddNHOzs5f/dVfHTx48IYbbnjta1+7Bv0CgH/6p3/6whe+8Nu//dt8ZD36tbOz8/TTT99+++1XX331nj17/uiP/gjWomtnzpz5qZ/6qfe///179ux5y1ve8hd/8RewUv1aN0La2dnZtWvUqV27dr344osDtmc6yC4Qov1a3c5+61vf0lr/1m/91qWXXro2XTt9+vT//u//vuY1r3n00Uefe+65NejXd77znfe///0f/vCH5cE16BcAfOtb33rHO97xiU984rHHHrPWPvLII5/+9KfXoGtf+9rXPvvZz/7Mz/zMl7/85U9/+tMf//jHP//5z69Qv9aNkF72spft7Ozwry+++OJLXvKSAdszL0T7taKd/bd/+7df/dVfPXDgwPXXXw9r1LVXv/rVBw4c+OQnP/nyl7/8yJEja9CvD33oQ5dddtlTTz11/Phx0qR99atfXYN+AcCFF1545513XnjhhQDw2te+9qqrrvrSl760Bl17/etf/4Y3vOGaa64BgEsuueSqq676+7//+xXq17oR0mte85qvfOUr/OuZM2f27t07YHvmhWi/VrGzjz322Hve856iKK699lo6sgZd+8///M+//Mu/5F9//Md//JlnnlmDfr361a/+n//5n3vvvffee+/9xje+cfz48ccee2wN+gUATz311Gc+8xn+9YUXXjj//PPXoGs/9mM/Jn/dtWvXrl27VqlfQ6sq5oydnZ39+/dvbW05506ePHn55Zc/++yzQzdqSmxtbbHKLtqvlevs008/vbGx8dBDD71Q4+zZs2vQtZMnT1522WX/8R//4Zx79tln9+3b9w//8A9r0C+J3/zN3ySV3Xr064knnrjssstIY/bMM8/s27fvkUceWYOuvfDC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NTLimUlNKoyQRva3R5822t+Mzl4qsE9dH+PURoMBZ1NBfyO+AIWb441y4z6mKeIXibxBH8MUlD31mpm9BbbcCDc6L8Ft6Mr2qetjqPRSiLUmK14who37mEaIXySyy45Z6dTiwgoHimp0MC7AQmGKhO8VLIOzaZhoYYXErHRqyYLrKuWHuvdPT/kRnE3DRAsrJGalU0sW3MikvN0yw79RdSXH2TRMtLBCYlY6tbiwRiblZ2F2ARacG83DfE+aL8IcRYYB7mXHMLMw6zfB68O4Gc3WShKkAjUP83ijJViSIHvVfLzpBhMhbCExE8rSEqxeDdPTMD0N8/OBEwcxbpwC1aEGihBb6lT2K8OML2whMZPIrl0wPw9ag5QAANPTAABKlZ3en3HT4O4hbN8wEwkrJGbimJ+HhQVIibxOkq46qVcRz7uHMEztsMuOmTgWF2HWTeOGuTnYW2cz0zhbpjLMWMMKiZk4FhYyTx1FSlhaqvMmvHsIw9QNKyRm4pASFhbcg/PzBVpqkJtwvwOGqRtWSMwoGOnuO7OzBd65xUUQos6bcL8DhqkbVkjM0Bn17jtSghBZFgMALC3B9DQsLcFcnTWq3O+AYWqHs+yY4dJMNprWsLAAq7M0bpibC+TX9X+TkVTCMszKgRUSM1zKstH85gg1I2VH5veQbsL1QAxTHzG67F599dWTJ0/ir++9996f//xnfxuPsuMTz9VXX930EHqgejbaeD1XT0zqo/FzMfUSnUJ66623vv/977/66qv216effvr2229/9tlnt23btmfPHjyt7DgTG5yNxjBMReJy2X366af33nvvF7/4Rfvr8vLy3Nzcn/70pzVr1pw+ffqrX/3qt7/9bSFE2fFGx84UU1frUoZhJp64FNJDDz100003vfHGG/bXF15ThwNyAAACsElEQVR44aKLLlqzZg0AXHzxxTfccMOLL74ohCg77l9wUk3v8XquEz898V///V9f/p8vA8Cn//3pBz/9AAC+/D9f3g/7nTPH67l6YlIfjZ+LqZGIFNLf/va3v/71r08++eRdd91lj3z00UfXXHMNnnDBBRccPXo0cNxhBYaXomUBFra8ucX+/L/wvwoU8JvDMEwnsSikf/3rXz/60Y8eeeQRenB5eXnVqnaUa9WqVefOnQscZ6KFs9EYhulKLArp5z//+bp16959991333339OnTb7zxxhVXXHH++ecvLy/jOefOnfv85z8PAGXHGYZhmPElFoV0ySWXHD58eP/+/QDw/vvvLy4uXnjhhevWrXv99dfxnDNnznz9618HgEsvvbTwOMMwDDO+xKKQfvCDH+DPd91113e/+92bb77ZOuIWFxdvvPHGY8eOvfzyy7t37waA6667rvA4wzAMM77EopAKWbVq1S9+8Ysf/vCHa9aseeONN372s5/ZjPCy4wzDMMz4cp4xpukxMAzDMEx8nRoYhmGYlQkrJIZhGCYKWCExDMMwUcAKiWEYhokCVkgMwzBMFLBCYhiGYaKAFRLDMAwTBayQGIZhmChghcQwDMNEASskhmEYJgpYITEMwzBRwAqJYRiGiQJWSAzDMEwUsEJiGIZhooAVEsMwDBMFrJAYhmGYKGCFxDAMw0QBKySGYRgmClghMQzDMFHAColhGIaJAlZIDMMwTBSwQmIYhmGigBUSwzAMEwWskBiGYZgoYIXEMAzDRAErJIZhGCYKWCExDMMwUcAKiWEYhokCVkgMwzBMFLBCYhiGYaKAFRLDMAwTBayQGIZhmChghcQwDMNEASskhmEYJgpYITEMwzBRwAqJYRiGiQJWSAzDMEwUsEJiGIZhooAVEsMwDBMF/x8hDtwxE+e4oQAAAABJRU5ErkJggg==\" data-image-state=\"image-loaded\" width=\"560\" height=\"420\"\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\u003c/div\u003e\u003c/div\u003e","function_template":"function cmds=drone(nr,nc,ndr,nturns,max_wt,nprod,vpwt,nw,wxy,wprodq,norders,dxyq,dlist,dw2dw,w2d,pmapc)\r\n% Discussion of an approach can be read at \r\n%https://www.kaggle.com/c/hashcode-drone-delivery/discussion/186050\r\n%\r\n%Short approach description is: \r\n% 1) Create baskets for every order by unique warehouse and wt\r\n% 2)Fix warehouse usage for over-use of items\r\n% 3)Create matrix of baskets that will be reduced for each delivery, add an idx at far right and\r\n% also create a master reference copy for creation of cmds\r\n% 4) Select warehouse that is normalized closest to drone.  dist/f(number signle order baskets, tot baskets)\r\n% 5) Augment drone basket set by baskets along line segment. Function distP2S_tim provided, Point to Segment\r\n% 6) Optimize Loading/Delivery steps\r\n% 7) Optimal path of multi-baskets easily done by brute force as \u003c10 baskets in any drone flt,pmapc\r\n%\r\ncmds=zeros(20000,5); %early est number of commands, max=nd*nturns\r\ncptr=0; %cmd ptr\r\n% Initialize drones/delivery_timer\r\n%All drones start at first warehouse, drIdx(:)=1251\r\ndrIdx=ones(ndr,1)*(norders+1); % drone location index, quantized, range  [1:norders norders+wh]\r\ndrT=zeros(ndr,1); % Drone Time, includes loads and flight legs\r\ndt=zeros(norders,1); %delivery time of last item deposited\r\ndidb=zeros(norders,1); % Remaining baskets to complete a delivery id\r\n\r\n%[packc]=pack_init(nw,norders,nprod,dlist,dxyq,w2d,vpwt,wprodq,max_wt);\r\n% packc cell {wh,norders} vector of items from each wh for each order, \r\n%  baskets are item sequences wt sum to \u003c=200\r\n%  packc has single and multiple baskets\r\n\r\n% Create mb array \r\n%[mb,Rmb,didb]=create_baskets(nw,norders,packc,vpwt,max_wt,w2d,didb);\r\n%mb [whid,did,dist,totwt,itemlist,mbidx]\r\n%\r\n%Initial 4684 baskets\r\n\r\n%Start of Main Processing Loop Creating Packs from baskets\r\nzflt=0; % flt counting variable for debug\r\nwhile min(drT)\u003cnturns %112993   3357 cycles if no dist limit, 4684 baskets\r\n zflt=zflt+1;\r\n% if max(didb)==0\r\n%  break;\r\n% end % all package baskets delivered\r\n \r\n \r\n %drptr=find(drT==min(drT),1,'first');  %Next drone should be the one that reaches its preferred warehouse the soonest, not lowest time used\r\n \r\n %dr_wh=pick_wh(drIdx,drptr,norders,didb,mb,w2d,nw); \r\n %Critical is selecting warehouse for drone to reach based on single baskets remaining, qty baskets\r\n \r\nend % min(drT)  Drones alive to make orders\r\n\r\n\r\n% [drone_id,Action,WH/DE id,Item_id,Q]\r\n% Wait0 [drid 0 Nturns 0 0]\r\n% Load1 [drid 1 whid itid q]\r\n% UnLoad2 [drid 2 whid itid q]\r\n% Deliv3 [drid 3 Did itid q]\r\n \r\n %calc/print score\r\n %dt is tracked as max of drone delivery time\r\n %dt(???)=nturns; % Delivery not fulfilled set to nturns\r\n %scr= sum( ceil(100*(nturns-dt(:))/nturns) );\r\n %fprintf('scr: %i\\n',scr)\r\n \r\n %create python file to create submission.txt file from cmds array\r\n %writefile(cmds,cptr); %0.55s\r\nend % cmds=drone()\r\n\r\nfunction ans=distP2S_tim(x0,y0,x1,y1,x2,y2)\r\n% Distance from a Point to a segment\r\nz=complex(x0-x1,y0-y1);\r\ncomplex(x2-x1,y2-y1);\r\nabs(z-ans*min(1,max(0,real(z/ans))));\r\nend\r\n\r\nfunction writefile(cmds,cptr)\r\n% To create python.txt file for entry into a kaggle notebook\r\n%\r\n% [drone_id,Action,WH/DE id,Item_id,Q]\r\n% Wait0 [drid 0 Nturns 0 0]\r\n% Load1 [drid 1 whid itid q]\r\n% UnLoad2 [drid 2 whid itid q]\r\n% Deliv3 [drid 3 Did itid q]\r\n% sub = '8\\n'\r\n% sub+= '0 L 0 163 1\\n'\r\n% sub+= '0 D 1 163 1\\n'\r\n% \r\n%cmds [drone action wh/deliv Item q \r\n%cmds(cptr+1,:)=[drid 1 1 item 1];\r\n%cmds(cptr+2,:)=[drid 3 didx item 1];\r\n fname=['drone' datestr(now,'ddmmyyyy_hhMM') '.txt'];\r\n fid =fopen(fname,'w');\r\n \r\n %fprintf(fid,'sub = ''%i\\n''',cptr)\r\n fprintf(fid,'sub = ''%i\\\\n''\\n',cptr); % specials\r\n for i=1:cptr\r\n  if cmds(i,2)==0 % Wait\r\n   fprintf(fid,'sub+= ''%i W %i\\\\n''\\n',cmds(i,[1 3])-1); % specials\r\n  elseif cmds(i,2)==1 %Load\r\n   fprintf(fid,'sub+= ''%i L %i %i %i\\\\n''\\n',cmds(i,[1 3 4])-1,cmds(i,5)); % specials\r\n  elseif cmds(i,2)==2 %Unload\r\n   fprintf(fid,'sub+= ''%i U %i %i %i\\\\n''\\n',cmds(i,[1 3 4])-1,cmds(i,5)); % specials\r\n  elseif cmds(i,2)==3 %Delivery\r\n   fprintf(fid,'sub+= ''%i D %i %i %i\\\\n''\\n',cmds(i,[1 3 4])-1,cmds(i,5)); % specials\r\n  else % error in cmds action value\r\n   fprintf('Error Occurred: Invalid command: Line %i\\n',i);\r\n  end\r\n end\r\n \r\n %final section of code to write the python file that writes submission.csv\r\n fprintf(fid,'text_file = open(\"submission.csv\", \"w\")\\n');\r\n fprintf(fid,'text_file.write(sub)\\n');\r\n fprintf(fid,'text_file.close()\\n');\r\n \r\n fclose(fid);\r\n %https://www.mathworks.com/help/matlab/matlab_prog/formatting-strings.html\r\n % ' use ''\r\n % \\ use \\\\\r\nend\r\n","test_suite":"%%\r\ntic\r\nfname='https://sites.google.com/site/razapor/matlab_cody/busy_day.in?attredirects=0\u0026d=1';\r\nout_fn='busy_day_cody.in';\r\nurlwrite(fname,out_fn); %Load url file to local space 0.74s\r\nm=dlmread(out_fn); % 3775, 400  1.1s  Read in complete Kaggle Drone Test file\r\nnr=m(1,1);nc=m(1,2);ndr=m(1,3);nturns=m(1,4);max_wt=m(1,5);\r\n%nr400, nc600, ndr30 drones, nturns112993, max_wt200\r\n%All drones start at first warehouse  drones(1:30), warehouses(1:10)\r\nnprod=m(2,1); %400\r\nvpwt=m(3,1:nprod); %\r\nnw=m(4,1); %10 warehouses\r\nwxy=zeros(nw,2); % warehouses x,y\r\nwprodq=zeros(nw,nprod); % Quantity of each product in each warehouse\r\nLptr=5;\r\nfor i=1:nw\r\n wxy(i,:)=m(Lptr,1:2)+1; %locations moved off (0,0) to (1,1)\r\n wprodq(i,1:nprod)=m(Lptr+1,1:nprod); %qty of items(1:400) at each warehouse\r\n Lptr=Lptr+2;\r\nend\r\nnorders=m(Lptr,1); %1250 orders [1:1250]\r\n% Delivery dxyq locx,locy,qty_items\r\n% Delivery_list dlisth (repeat items possible)[dataset starts at 0, add 1) hist\r\ndxyq=zeros(norders,3);\r\ndlist=zeros(norders,nprod); % do not know current max of items in an order\r\n\r\nLptr=Lptr+1;\r\nfor i=1:norders %deliveries(1:1250)\r\n dxyq(i,1:2)=m(Lptr,1:2)+1; %locations moved off (0,0) to (1,1)\r\n dxyq(i,3)=m(Lptr+1,1); %qty of items for a delivery\r\n dlist(i,1:dxyq(i,3))=sort(m(Lptr+2,1:dxyq(i,3))+1); % items 0:399 become 1:400\r\n Lptr=Lptr+3;\r\nend\r\ndlist=dlist(:,1:max(dxyq(:,3))); %dlist width reduces from 400 to 19\r\n%read complete\r\n%Create three useful arrays required for scoring\r\n% delivery to delivery location and warehouse to delivery location\r\n dw2dw=zeros(norders+nw);\r\n vx=[dxyq(:,1);wxy(:,1)];\r\n vy=[dxyq(:,2);wxy(:,2)];\r\n for j=1:norders+nw\r\n  dw2dw(:,j)=ceil(((vx-vx(j)).^2+(vy-vy(j)).^2).^.5);\r\n end\r\n %warehouse to delivery distance [nw,norders]\r\n w2d=dw2dw(norders+1:end,1:norders);\r\n \r\n %Initialize permutation maps for Brute Force path calculation\r\n for i=9:-1:1\r\n  pmapc{i}=perms(1:i);\r\n end\r\n %1.3s Cody setup\r\n\r\ntoc\r\nfprintf('%i ',nr,nc,ndr,nturns,max_wt,nprod);fprintf('\\n')\r\n\r\ncmds=drone(nr,nc,ndr,nturns,max_wt,nprod,vpwt,nw,wxy,wprodq,norders,dxyq,dlist,dw2dw,w2d,pmapc);\r\ntoc\r\n\r\n%Evaluate cmds provided for accuracy and drone time to deliver packages\r\n drIdx=ones(ndr,1)*(norders+1); % drone location index, quantized, range  [1:norders norders+wh]\r\n drT=zeros(ndr,1); % Drone Time, includes loads and flight legs\r\n drW=zeros(ndr,1); % Drone Weight\r\n drL=zeros(ndr,nprod); %Histogram of drone loads\r\n dt=zeros(norders,1); %delivery time of last item deposited\r\n \r\n %Reduce cmds for illegal content and give warning \r\n csize=size(cmds,1);\r\n cmds=abs(cmds); %remove any negatives\r\n cmds(prod(cmds,2)==0,:)=[]; % No zeros allowed\r\n cmds(cmds(:,2)==1 \u0026 cmds(:,3)\u003enw,:)=[]; %For Load cmds(3)\u003c=1nw\r\n cmds(cmds(:,3)\u003enorders,:)=[];\r\n cmds(cmds(:,4)\u003enprod,:)=[];\r\n cmds(cmds(:,1)\u003c1,:)=[];\r\n cmds(cmds(:,1)\u003endr,:)=[];\r\n cmds(cmds(:,2)\u003c1,:)=[]; % invalid cmd type only 1/3 allowed\r\n cmds(cmds(:,2)==2,:)=[]; % invalid cmd type only 1/3 allowed\r\n cmds(cmds(:,2)\u003e3,:)=[]; % invalid cmd type only 1/3 allowed\r\n if size(cmds,1)\u003ccsize\r\n  fprintf('Warning: Invalid cmds purged\\n')\r\n end\r\n \r\n flag=0; % No issues 0\r\n for i=1:size(cmds,1)\r\n  vcmd=cmds(i,:); %[drone 1/3 warehouse/delivery item qty]\r\n  if vcmd(2)==1 %Load  vcmd(3) warehouse  (allow warehouse to warehouse,deliv to wh)\r\n   wptr=vcmd(3);\r\n   drT(vcmd(1))=drT(vcmd(1))+dw2dw(drIdx(vcmd(1)),norders+wptr)+1; %dist+load\r\n   drIdx(vcmd(1))=norders+wptr;\r\n   wprodq(wptr,vcmd(4))=wprodq(wptr,vcmd(4))-vcmd(5);\r\n   drL(vcmd(1),vcmd(4))=drL(vcmd(1),vcmd(4))+vcmd(5);\r\n   drW(vcmd(1))=drW(vcmd(1))+vcmd(5)*vpwt(vcmd(4)); %Add item(s) wt\r\n   if wprodq(wptr,vcmd(4))\u003c0 % Check for excess usage at warehouse\r\n    flag=1;\r\n    fprintf('Not enough of item %i at warehouse %i at cmds %i\\n',vcmd([4 3]),i);\r\n    break;\r\n   end\r\n   if drW(vcmd(1))\u003emax_wt % check for excess wt loaded\r\n    flag=1;\r\n    fprintf('Max wt exceeded: %i  drone %i at cmds %i\\n',drW(vcmd(1)),vcmd(1),i);\r\n    break;\r\n   end\r\n  else %Deliver:  vcmd(3) delivery location (wh2deliv, deliv2deliv)\r\n   % [drone 3 did item q]\r\n   dptr=vcmd(3);\r\n   drT(vcmd(1))=drT(vcmd(1))+dw2dw(drIdx(vcmd(1)),dptr)+1; % dist+drop\r\n   drIdx(vcmd(1))=dptr;\r\n   for j=1:vcmd(5)\r\n    iptr=find(dlist(dptr,:)==vcmd(4),1,'first');\r\n    if ~isempty(iptr)\r\n     dlist(dptr,iptr)=0;\r\n    else %Excess item being delivered\r\n     flag=1;\r\n     fprintf('Excess delivery of item %i at cmds %i\\n',vcmd(4),i)\r\n     break\r\n    end\r\n   end\r\n   if flag==1,break;end %Excess delivery break\r\n   drL(vcmd(1),vcmd(4))=drL(vcmd(1),vcmd(4))-vcmd(5);\r\n   drW(vcmd(1))=drW(vcmd(1))-vcmd(5)*vpwt(vcmd(4)); % Unload item(s) wt delivered\r\n   if drL(vcmd(1),vcmd(4))\u003c0\r\n    flag=1;\r\n    fprintf('Non-existent itme delivery attempt. Item %i cmds %i\\n',vcmd(4),i)\r\n    break;\r\n   end\r\n   dt(dptr)=max(dt(dptr),drT(vcmd(1)));\r\n  end % Load/Delivery \r\n end % cmds\r\n \r\n if flag\r\n  scr=0;\r\n else\r\n  dt(sum(dlist,2)\u003e0)=nturns; %Non-completed delivery scores Zero\r\n  dt(dt\u003enturns)=nturns; %Completed beyond time limit scores 0\r\n  scr= sum( ceil(100*(nturns-dt(:))/nturns) ); \r\n end\r\n fprintf('scr: %i\\n',scr)\r\n \r\n\r\nassert(scr\u003e110000)\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1,"test_suite_updated_at":"2020-09-27T22:00:47.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-09-26T18:26:41.000Z","updated_at":"2025-12-08T15:43:28.000Z","published_at":"2020-09-27T00:08: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:r\u003e\u003cw:t\u003eThe 2020 \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/hashcode-drone-delivery\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle Drone\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contest is an optimization task to maximize net customer satisfaction by using 30 drones across 10 warehouses to fulfill 1250 customer multi-item, 400 distinct items(products), orders. Satisfaction is (1-delivery_time/max_time)*100 and 0 if delivery not completed by max_time. The max time of 112993 is easily beaten with typical worse time of 40K. \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 contest subset has disabled moving items from warehouse to warehouse thus wait times are not used.\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 maximum score is 125000. To succeed as a DroneManager requires a score of 110K, 5th at Kaggle contest 9/26/20.\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 [rows,cols,numdrones,maxturns,maxDronewt,numproducts,numOrders,delivery_xy_qty,delivery_list,distance_delivery\u0026amp;warehouse_to_delivery\u0026amp;warehouse, distance_warehouse_to_delivery,permutation_cell_array_for1to9]\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 Commands matrix [number of commands,5]  The number of commands is likely to be 18K to 20K.\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\u003eLoading from a warehouse: [drone# 1 warehouse# item# quantity]. Drone1:30, Warehouse1:10, Item1:400. The 1 is LOAD.\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\u003eOnly one item type can be loaded on to drone at a time. Each Load/Deliver command consumes 1 unit of time.\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\u003eDelivery for an order:  [drone# 3 delivery# item# quantity]. Drone1:30, Delivery1:1250, Item1:400. The 3 is Deliver.\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 final delivery time for an order is the latest drone time inclusive of final delivery time unit.\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\u003eAdditional approach comments are at \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.kaggle.com/c/hashcode-drone-delivery/discussion/186050\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eKaggle Drone 111401\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and in the template along with using a provided routine to create a Kaggle python submission file.\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\u003eDelivery/Warehouse Map.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Warehouses red*, Single item delivery redO, Two item delivery blackO, \u0026gt;2 items greenO\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:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"420\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"560\\\"/\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\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\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,iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH5AkaEw0DQXIUYAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyNi1TZXAtMjAyMCAxMjoxMzowMiU9ljMAACAASURBVHic7L1/zGdHVT9+ugXBiKYiP6QqnJWmpZV0fVgQu9n0M4/SaEJD1H8qySe7U0xMa1MjsSq1lr1NiUFisDSBIGBnN7UlWlLN1rjhU+w829K6yBcjik3ZovdpEVJodreSCLXs0/n+ce4973Nn5t73ff+8837vvLLZPM993u97Z+bee15zznnNmfOcc5CRkZGRkTE0dg3dgIyMjIyMDIBMSBkZGRkZiSATUkZGRkZGEsiElJGRkZGRBDIhZWRkZGQkgUxIGRkZGRlJIBNSRkZGRkYSyISUkZGRkZEEMiFlZGRkZCSBTEgZGRkZGUkgE1JGRkZGRhLIhJSRkZGRkQTOL4pi6DbMH1//+te/+MUvfv/733/Vq141dFtmwiOPPPKGN7yBf432a+U6+7Wvfe2f//mfn3vuude97nV8cA269tWvfvVf/uVfdu3adcEFF/DBNegX4ctf/vL555//Qz/0Q/TrGvTr9OnT//7v//7NGq94xSte9rKXwbp07R//8R+//e1v/+RP/iQfXIl+rSEhPfDAA7/zO7/zwgsvfPKTn3zuued+/ud/fugWTYmPfexjH/nIR97znvfQr9F+rVxnP/CBD9x5553f/e5377///gceeODqq69+yUtesgZd+7M/+7M777zz+eef//jHP/69733vrW99K6zLLQOAr33ta9dcc83P/uzP/vRP/zSsS7/uvffeP/iDPzh27NgDDzzwwAMPvOUtb3n961+/Bl07fvz4b/zGbzz//PPHjh07evTor/zKr5x33nkr0y+3Xjh79uzGxsaTTz7pnDt16tSePXvKshy6URPjzJkz73vf+zY2Nvbv309Hov1auc4+/vjjb37zm8+cOUO/Xn311ffdd98adO3kyZPcr29/+9uXXnrpqVOn1qBfhBdeeOFd73qXUurBBx906/IoOufe+9733nPPPfLIGnTt7NmzV1xxxRe+8AX69Z3vfOexY8dWqF/rlkN6+OGHL7jggosuuggAXvnKV1555ZWf//znh27UxLjjjjte+cpX/vEf/zEfifZr5Tp7wQUX/Pmf/zlHtHbv3v3Nb35zDbr2xje+8W/+5m+oXy996Ut3dna+//3vr0G/CB/+8Id/8Rd/8eKLL6Zf16Zfjz/++Bvf+MbTp09///vfpyNr0LXjx4//xE/8xM/93M/Rr3/3d3/3y7/8yyvUr3UjpOeee+5Nb3oT//qKV7zi5MmTA7ZnOrz//e//vd/7vR/8wR/kI9F+rVxnX/e61+3bt49+fuqpp6y1V1111Rp0bdeuXRdddNHOzs5f/dVfHTx48IYbbnjta1+7Bv0CgH/6p3/6whe+8Nu//dt8ZD36tbOz8/TTT99+++1XX331nj17/uiP/gjWomtnzpz5qZ/6qfe///179ux5y1ve8hd/8RewUv1aN0La2dnZtWvUqV27dr344osDtmc6yC4Qov1a3c5+61vf0lr/1m/91qWXXro2XTt9+vT//u//vuY1r3n00Uefe+65NejXd77znfe///0f/vCH5cE16BcAfOtb33rHO97xiU984rHHHrPWPvLII5/+9KfXoGtf+9rXPvvZz/7Mz/zMl7/85U9/+tMf//jHP//5z69Qv9aNkF72spft7Ozwry+++OJLXvKSAdszL0T7taKd/bd/+7df/dVfPXDgwPXXXw9r1LVXv/rVBw4c+OQnP/nyl7/8yJEja9CvD33oQ5dddtlTTz11/Phx0qR99atfXYN+AcCFF1545513XnjhhQDw2te+9qqrrvrSl760Bl17/etf/4Y3vOGaa64BgEsuueSqq676+7//+xXq17oR0mte85qvfOUr/OuZM2f27t07YHvmhWi/VrGzjz322Hve856iKK699lo6sgZd+8///M+//Mu/5F9//Md//JlnnlmDfr361a/+n//5n3vvvffee+/9xje+cfz48ccee2wN+gUATz311Gc+8xn+9YUXXjj//PPXoGs/9mM/Jn/dtWvXrl27VqlfQ6sq5oydnZ39+/dvbW05506ePHn55Zc/++yzQzdqSmxtbbHKLtqvlevs008/vbGx8dBDD71Q4+zZs2vQtZMnT1522WX/8R//4Zx79tln9+3b9w//8A9r0C+J3/zN3ySV3Xr064knnrjssstIY/bMM8/s27fvkUceWYOuvfDC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NTLimUlNKoyQRva3R5822t+Mzl4qsE9dH+PURoMBZ1NBfyO+AIWb441y4z6mKeIXibxBH8MUlD31mpm9BbbcCDc6L8Ft6Mr2qetjqPRSiLUmK14who37mEaIXySyy45Z6dTiwgoHimp0MC7AQmGKhO8VLIOzaZhoYYXErHRqyYLrKuWHuvdPT/kRnE3DRAsrJGalU0sW3MikvN0yw79RdSXH2TRMtLBCYlY6tbiwRiblZ2F2ARacG83DfE+aL8IcRYYB7mXHMLMw6zfB68O4Gc3WShKkAjUP83ijJViSIHvVfLzpBhMhbCExE8rSEqxeDdPTMD0N8/OBEwcxbpwC1aEGihBb6lT2K8OML2whMZPIrl0wPw9ag5QAANPTAABKlZ3en3HT4O4hbN8wEwkrJGbimJ+HhQVIibxOkq46qVcRz7uHMEztsMuOmTgWF2HWTeOGuTnYW2cz0zhbpjLMWMMKiZk4FhYyTx1FSlhaqvMmvHsIw9QNKyRm4pASFhbcg/PzBVpqkJtwvwOGqRtWSMwoGOnuO7OzBd65xUUQos6bcL8DhqkbVkjM0Bn17jtSghBZFgMALC3B9DQsLcFcnTWq3O+AYWqHs+yY4dJMNprWsLAAq7M0bpibC+TX9X+TkVTCMszKgRUSM1zKstH85gg1I2VH5veQbsL1QAxTHzG67F599dWTJ0/ir++9996f//xnfxuPsuMTz9VXX930EHqgejbaeD1XT0zqo/FzMfUSnUJ66623vv/977/66qv216effvr2229/9tlnt23btmfPHjyt7DgTG5yNxjBMReJy2X366af33nvvF7/4Rfvr8vLy3Nzcn/70pzVr1pw+ffqrX/3qt7/9bSFE2fFGx84UU1frUoZhJp64FNJDDz100003vfHGG/bXF15ThwNyAAACsElEQVR44aKLLlqzZg0AXHzxxTfccMOLL74ohCg77l9wUk3v8XquEz898V///V9f/p8vA8Cn//3pBz/9AAC+/D9f3g/7nTPH67l6YlIfjZ+LqZGIFNLf/va3v/71r08++eRdd91lj3z00UfXXHMNnnDBBRccPXo0cNxhBYaXomUBFra8ucX+/L/wvwoU8JvDMEwnsSikf/3rXz/60Y8eeeQRenB5eXnVqnaUa9WqVefOnQscZ6KFs9EYhulKLArp5z//+bp16959991333339OnTb7zxxhVXXHH++ecvLy/jOefOnfv85z8PAGXHGYZhmPElFoV0ySWXHD58eP/+/QDw/vvvLy4uXnjhhevWrXv99dfxnDNnznz9618HgEsvvbTwOMMwDDO+xKKQfvCDH+DPd91113e/+92bb77ZOuIWFxdvvPHGY8eOvfzyy7t37waA6667rvA4wzAMM77EopAKWbVq1S9+8Ysf/vCHa9aseeONN372s5/ZjPCy4wzDMMz4cp4xpukxMAzDMEx8nRoYhmGYlQkrJIZhGCYKWCExDMMwUcAKiWEYhokCVkgMwzBMFLBCYhiGYaKAFRLDMAwTBayQGIZhmChghcQwDMNEASskhmEYJgpYITEMwzBRwAqJYRiGiQJWSAzDMEwUsEJiGIZhooAVEsMwDBMFrJAYhmGYKGCFxDAMw0QBKySGYRgmClghMQzDMFHAColhGIaJAlZIDMMwTBSwQmIYhmGigBUSwzAMEwWskBiGYZgoYIXEMAzDRAErJIZhGCYKWCExDMMwUcAKiWEYhokCVkgMwzBMFLBCYhiGYaKAFRLDMAwTBayQGIZhmChghcQwDMNEASskhmEYJgpYITEMwzBRwAqJYRiGiQJWSAzDMEwUsEJiGIZhooAVEsMwDBMF/x8hDtwxE+e4oQAAAABJRU5ErkJggg==\",\"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:\"kaggle\"","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:\"kaggle\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"kaggle\"","","\"","kaggle","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007effa60feec8\u003e":null,"#\u003cMathWorks::Search::Field:0x00007effa60fee28\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007effa60fe568\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007effa60ff148\u003e":1,"#\u003cMathWorks::Search::Field:0x00007effa60ff0a8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007effa60ff008\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007effa60fef68\u003e":"tag:\"kaggle\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007effa60fef68\u003e":"tag:\"kaggle\""},"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:\"kaggle\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"kaggle\"","","\"","kaggle","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007effa60feec8\u003e":null,"#\u003cMathWorks::Search::Field:0x00007effa60fee28\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007effa60fe568\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007effa60ff148\u003e":1,"#\u003cMathWorks::Search::Field:0x00007effa60ff0a8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007effa60ff008\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007effa60fef68\u003e":"tag:\"kaggle\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007effa60fef68\u003e":"tag:\"kaggle\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"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":2036,"difficulty_rating":"medium"},{"id":2072,"difficulty_rating":"medium"},{"id":46686,"difficulty_rating":"medium"},{"id":46691,"difficulty_rating":"medium"},{"id":46618,"difficulty_rating":"hard"},{"id":46706,"difficulty_rating":"hard"}]}}