{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2025-12-14T01:33:56.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":"2025-12-14T00: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":1836,"title":"Negation and new variables","description":"Inspired by Problem 1827 by Andrew Newell.\r\n\r\nWrite a function that has the following property: \r\n\r\n(x~=y)\r\n\r\nneg3(x)=x;\r\n\r\nneg3(y)=y;\r\n\r\nneg3(x)=-x;\r\n\r\nneg3(y)=-y;\r\n\r\n...\r\n\r\nThe test suite is simple. The goal is just to obtain a general method.","description_html":"\u003cp\u003eInspired by Problem 1827 by Andrew Newell.\u003c/p\u003e\u003cp\u003eWrite a function that has the following property:\u003c/p\u003e\u003cp\u003e(x~=y)\u003c/p\u003e\u003cp\u003eneg3(x)=x;\u003c/p\u003e\u003cp\u003eneg3(y)=y;\u003c/p\u003e\u003cp\u003eneg3(x)=-x;\u003c/p\u003e\u003cp\u003eneg3(y)=-y;\u003c/p\u003e\u003cp\u003e...\u003c/p\u003e\u003cp\u003eThe test suite is simple. The goal is just to obtain a general method.\u003c/p\u003e","function_template":"function y = neg3(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nx = 1;\r\ny1=-1;\r\nneg3(neg3(x));\r\nassert(isequal(ans,y1))\r\n\r\n%%\r\nx=2;\r\ny=3;\r\nz=4;\r\nneg3(x);\r\nassert(isequal(ans,2))\r\nneg3(y);\r\nassert(isequal(ans,3))\r\nneg3(x);\r\nassert(isequal(ans,-2))\r\nneg3(z);\r\nassert(isequal(ans,4))\r\nneg3(x);\r\nassert(isequal(ans,2))\r\nneg3(z);\r\nassert(isequal(ans,-4))\r\n\r\n%%\r\nx=0;\r\ny=10;\r\nneg3(x);\r\nassert(isequal(ans,0))\r\nneg3(x);\r\nassert(isequal(ans,0))\r\nneg3(y);\r\nassert(isequal(ans,10))\r\nneg3(y);\r\nassert(isequal(ans,-10))","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":5390,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":21,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-08-19T17:05:10.000Z","updated_at":"2013-08-19T17:18:06.000Z","published_at":"2013-08-19T17:09:04.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\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"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\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\u003eInspired by Problem 1827 by Andrew Newell.\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\u003eWrite a function that has the following property:\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(x~=y)\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\u003eneg3(x)=x;\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\u003eneg3(y)=y;\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\u003eneg3(x)=-x;\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\u003eneg3(y)=-y;\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:t\u003eThe test suite is simple. The goal is just to obtain a general method.\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":815,"title":"Persistent Usage","description":"This Challenge is to implement the Matlab Persistent variable capability.\r\nGiven a sequence of Calls to a function return the current input summed with the prior function call input.\r\nOn the first call return the current input.\r\nInput: a (value)\r\nOutput: b where b=a+\"previous a\"\r\nExample:\r\n    Input  Sequence: 1 2 -3 3 5\r\n    Output Sequence: 1 3 -1 0 8\r\nRelated Challenge is Global.","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: 252.867px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 126.433px; transform-origin: 407px 126.433px; vertical-align: baseline; \"\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: 225px 8px; transform-origin: 225px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to implement the Matlab Persistent variable capability.\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: 329px 8px; transform-origin: 329px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eGiven a sequence of Calls to a function return the current input summed with the prior function call input.\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: 124.5px 8px; transform-origin: 124.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eOn the first call return the current input.\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: 20px 8px; transform-origin: 20px 8px; 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: 30px 8px; transform-origin: 30px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e a (value)\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: 26px 8px; transform-origin: 26px 8px; 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: 83px 8px; transform-origin: 83px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e b where b=a+\"previous a\"\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: 31.5px 8px; transform-origin: 31.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eExample:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 40.8667px; 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 20.4333px; transform-origin: 404px 20.4333px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 124px 8.5px; tab-size: 4; transform-origin: 124px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 44px 8.5px; transform-origin: 44px 8.5px; \"\u003e    Input  \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 80px 8.5px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 80px 8.5px; \"\u003eSequence: 1 2 -3 3 5\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 124px 8.5px; tab-size: 4; transform-origin: 124px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 44px 8.5px; transform-origin: 44px 8.5px; \"\u003e    Output \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 80px 8.5px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 80px 8.5px; \"\u003eSequence: 1 3 -1 0 8\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: 65.5px 8px; transform-origin: 65.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eRelated Challenge is\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"/#null\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGlobal\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: 2px 8px; transform-origin: 2px 8px; 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 [b] = Running_2pt_sum(a)\r\n% Return sum of \"a\" and prior \"a\" value.\r\n b=a;\r\nend","test_suite":"%%\r\na=1;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,1))\r\n%%\r\na=3;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,4))\r\n%%\r\na=-4;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,-1))\r\n%%\r\na=12;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,8))\r\n%%\r\na=-4;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,8))\r\n\r\n","published":true,"deleted":false,"likes_count":4,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":47,"test_suite_updated_at":"2021-09-06T18:20:28.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-07-05T04:55:05.000Z","updated_at":"2025-11-10T02:41:09.000Z","published_at":"2012-10-27T16:37:24.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to implement the Matlab Persistent variable capability.\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\u003eGiven a sequence of Calls to a function return the current input summed with the prior function call input.\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\u003eOn the first call return the current input.\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 (value)\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 where b=a+\\\"previous a\\\"\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\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[    Input  Sequence: 1 2 -3 3 5\\n    Output Sequence: 1 3 -1 0 8]]\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\u003eRelated Challenge is\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=\\\"\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGlobal\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\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":2443,"title":"Clear functions with the same name in different packages independently","description":"See the test suite.\r\n\r\nN.B.: Overwriting files or functions a.k.a. cheating is not necessary.","description_html":"\u003cp\u003eSee the test suite.\u003c/p\u003e\u003cp\u003eN.B.: Overwriting files or functions a.k.a. cheating is not necessary.\u003c/p\u003e","function_template":"function y=your_code(x)\r\ny=1;","test_suite":"%%\r\n% Create necessary files\r\nmkdir +counter1\r\nmkdir +counter2\r\nfid = fopen('+counter1/count.m', 'w');fprintf(fid, 'function y=count,persistent x;if isempty(x), x=0; end,x=x+1;y=x;');fclose(fid);\r\nfid = fopen('+counter2/count.m', 'w');fprintf(fid, 'function y=count,persistent x;if isempty(x), x=0; end,x=x+1;y=x;');fclose(fid);\r\nrehash;\r\n\r\n% Start counting with Counter 1\r\ncounter1.count; %1\r\ncounter1.count; %2\r\ncounter1.count; %3\r\ncounter1.count; %4\r\ncounter1.count; %5\r\ncounter1.count; %6\r\ncounter1.count; %7\r\n\r\n% Start counting with Counter 2\r\ncounter2.count; %1\r\ncounter2.count; %2\r\ncounter2.count; %3\r\ncounter2.count; %4\r\n\r\n% Your code goes here\r\nyour_code;\r\n\r\n% Check if your solution is correct\r\n%{  \r\n\r\n \"I would prefer even to fail with honor than win by cheating.\"\r\n\r\n                                                                Sophocles\r\n\r\n%}\r\n\r\n% Restart counting with Counter 1\r\nassert(isequal(counter1.count,1))\r\nassert(isequal(counter1.count,2))\r\nassert(isequal(counter1.count,3))\r\nassert(isequal(counter1.count,4))\r\nassert(isequal(counter1.count,5))\r\nassert(isequal(counter1.count,6))\r\nassert(isequal(counter1.count,7))\r\n\r\n% Keep counting with Counter 2\r\nassert(isequal(counter2.count,5))\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":7,"created_by":5925,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":10,"test_suite_updated_at":"2014-07-18T16:28:02.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2014-07-16T18:16:51.000Z","updated_at":"2014-07-18T16:28:02.000Z","published_at":"2014-07-16T18:29:54.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\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"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\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\u003eSee the test suite.\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\u003eN.B.: Overwriting files or functions a.k.a. cheating is not necessary.\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":42805,"title":"GJam 2016 Rd1A: Rank and File (small)","description":"This Challenge is derived from \u003chttp://code.google.com/codejam/contest/4304486/dashboard#s=p1 GJam Rd1A 2016 Rank and File\u003e. This is the small case with max N=10\r\n\r\nThe GJam story is a matrix H(NxN) which has every row and column increasing. Each row and column is recorded on strips. The strips get scrambled and one gets incinerated. The goal is to reconstruct the missing increasing vector strip. \r\n\r\n*Input:* [M], matrix of size [2*N-1,N] of all rows and columns of H except one\r\n\r\n*Output:* [V], the missing vector of H not included in M\r\n\r\n*Examples:* [M] [V] \r\n\r\n  [1 2 3;2 3 5;3 5 6;2 3 4;1 2 3] [3 4 6] \r\n  [22 222;2 22;2 22][22 222] \r\n \r\nGJam 2016 Rd1A Matlab results show three qualifiers for Rd2.\r\n\r\n*Theory:* With max N=10 it is possible to brute force the 50 puzzles. Persistent may be useful with the usage of nchoosek which may be the critical path. \u003chttps://www.go-hero.net/jam/16/solutions/1/2/MATLAB GJam Rank_file solutions\u003e. Writing the general solution for N=50 is better for the contest. The min corner or the max corner will always be available. Evolving solution, no guessing, is possible. OR one can observe an inherent mathematical result to create a 1-line solution.","description_html":"\u003cp\u003eThis Challenge is derived from \u003ca href = \"http://code.google.com/codejam/contest/4304486/dashboard#s=p1\"\u003eGJam Rd1A 2016 Rank and File\u003c/a\u003e. This is the small case with max N=10\u003c/p\u003e\u003cp\u003eThe GJam story is a matrix H(NxN) which has every row and column increasing. Each row and column is recorded on strips. The strips get scrambled and one gets incinerated. The goal is to reconstruct the missing increasing vector strip.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e [M], matrix of size [2*N-1,N] of all rows and columns of H except one\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e [V], the missing vector of H not included in M\u003c/p\u003e\u003cp\u003e\u003cb\u003eExamples:\u003c/b\u003e [M] [V]\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e[1 2 3;2 3 5;3 5 6;2 3 4;1 2 3] [3 4 6] \r\n[22 222;2 22;2 22][22 222] \r\n\u003c/pre\u003e\u003cp\u003eGJam 2016 Rd1A Matlab results show three qualifiers for Rd2.\u003c/p\u003e\u003cp\u003e\u003cb\u003eTheory:\u003c/b\u003e With max N=10 it is possible to brute force the 50 puzzles. Persistent may be useful with the usage of nchoosek which may be the critical path. \u003ca href = \"https://www.go-hero.net/jam/16/solutions/1/2/MATLAB\"\u003eGJam Rank_file solutions\u003c/a\u003e. Writing the general solution for N=50 is better for the contest. The min corner or the max corner will always be available. Evolving solution, no guessing, is possible. OR one can observe an inherent mathematical result to create a 1-line solution.\u003c/p\u003e","function_template":"function v = rank_file(m)\r\n% H a rank/file array that has all columns and rows increasing\r\n% m  matrix [2*N-1,N] of scrambled rows/columns original H [NxN] array\r\n% v  missing vector of H\r\n v=0;\r\nend","test_suite":"%%\r\ntic\r\nm=[1 2 3 2 1 2 3 5 3 2 3 5 6 4 3 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[3 4 6 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[22 2 2 222 22 22 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[22 222 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[11 3 6 9 10 6 3 14 6 7 11 11 7 6 16 9 11 15 19 10 8 22 11 14 19 22 11 10 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[8 10 15 16 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[4 1 23 6 3 1 6 2 5 5 2 22 4 9 2 25 11 8 2 11 7 10 10 7 24 9 13 3 26 15 12 3 15 8 14 14 8 27 13 16 4 29 18 13 4 18 9 17 17 9 28 16 17 5 30 20 14 5 20 10 19 19 10 31 17 18 6 32 21 15 6 21 11 20 20 11 33 18 28 23 34 33 27 22 32 24 31 30 25 34 29 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[3 8 12 13 14 15 26 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 5 3 8 6 9 46 1 2 7 8 2 3 4 1 9 47 6 5 15 13 11 16 14 17 49 2 10 15 16 10 11 12 2 17 48 14 13 22 20 18 23 21 24 50 3 11 22 23 11 18 19 3 24 51 21 20 28 26 19 29 27 30 52 4 12 28 29 12 19 25 4 30 53 27 26 33 31 20 34 32 35 54 5 13 33 34 13 20 26 5 35 55 32 31 37 32 21 38 36 39 57 6 14 37 38 14 21 27 6 39 56 36 32 40 33 22 41 37 42 59 7 15 40 41 15 22 28 7 42 58 37 33 41 34 23 43 38 44 60 8 16 41 43 16 23 29 8 44 61 38 34 42 35 24 44 39 45 62 9 17 42 44 17 24 30 9 45 63 39 35 58 55 50 61 57 62 64 47 48 59 60 49 51 52 46 63 64 56 54 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[4 12 19 25 26 27 28 29 30 53 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[22 2 22 222 22 222 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[2 22 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 2 6 6 4 8 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[4 8 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 3 10 9 4 8 9 6 2 6 8 4 13 11 11 4 6 14 11 6 10 13 10 3 7 12 8 15 12 15 6 7 17 12 8 11 15 11 4 9 14 9 16 14 18 8 10 18 14 10 12 17 12 6 11 15 11 17 15 20 9 11 20 16 12 15 19 14 8 14 16 12 19 18 21 11 12 22 19 13 17 20 15 9 15 18 14 21 20 24 13 15 24 20 14 18 21 17 10 17 19 16 24 22 26 14 17 25 21 15 20 23 20 11 18 22 19 26 24 28 ];\r\nm=reshape(m,[],8);\r\nv=rank_file(m);\r\nvexp=[14 17 19 20 22 23 25 28 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 6 4 6 8 8 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[2 4 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 6 1 1 4 3 2 4 8 2 2 6 5 4 5 9 3 4 8 8 6 6 12 5 6 10 9 8 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[5 6 10 12 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[8 4 10 9 1 8 3 2 2 4 1 6 6 9 3 5 10 7 7 9 5 11 10 2 9 4 3 3 5 2 7 7 10 4 6 11 8 8 10 6 12 11 3 10 5 4 4 6 3 8 8 11 5 7 12 9 9 11 7 13 12 4 11 6 5 5 7 4 9 9 12 6 8 13 10 10 12 8 14 13 5 12 7 6 6 8 5 10 10 13 7 9 14 11 11 13 9 15 14 6 13 8 7 7 9 6 11 11 14 8 10 15 12 12 14 10 16 15 7 14 9 8 8 10 7 12 12 15 9 11 16 13 13 15 11 17 16 8 15 10 9 9 11 8 13 13 16 10 12 17 14 14 16 12 18 17 9 16 11 10 10 12 9 14 14 17 11 13 18 15 15 17 13 19 18 10 17 12 11 11 13 10 15 15 18 12 14 19 16 16 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[5 6 7 8 9 10 11 12 13 14 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 5 7 2 9 7 8 4 4 4 7 9 4 11 8 9 6 6 5 8 10 5 12 9 11 7 7 7 10 12 7 13 12 14 9 8 8 12 14 9 16 13 16 11 9 ];\r\nm=reshape(m,[],5);\r\nv=rank_file(m);\r\nvexp=[5 7 8 9 11 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 29 22 3 15 36 43 4 2 6 1 8 1 14 30 23 10 16 37 44 11 9 13 8 9 2 21 31 24 17 17 38 45 18 16 20 15 10 3 28 32 25 24 18 39 46 25 23 27 22 11 4 35 33 26 31 19 40 47 32 30 34 29 12 5 42 34 27 38 20 41 48 39 37 41 36 13 6 49 35 28 45 21 42 49 46 44 48 43 14 7 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[5 12 19 26 33 40 47 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[3 1 1 3 2 2 4 4 2 2 4 3 3 5 5 3 3 5 4 4 6 6 4 4 6 5 5 7 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[4 5 6 7 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[6 6 7 2 1 4 5 3 2 7 3 1 5 7 7 8 3 2 5 6 4 3 8 4 2 6 8 8 9 4 3 6 7 5 4 9 5 3 7 9 9 10 5 4 7 8 6 5 10 6 4 8 10 10 11 6 5 8 9 7 6 11 7 5 9 11 11 12 7 6 9 10 8 7 12 8 6 10 12 12 13 8 7 10 11 9 8 13 9 7 11 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[4 5 6 7 8 9 10 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[3 5 71 8 81 9 1 91 11 7 1 21 41 10 6 51 31 61 4 13 15 72 18 82 19 2 92 12 17 11 22 42 20 16 52 32 62 14 23 25 73 28 83 29 3 93 13 27 21 23 43 30 26 53 33 63 24 33 35 74 38 84 39 4 94 14 37 31 24 44 40 36 54 34 64 34 43 45 75 48 85 49 5 95 15 47 41 25 45 50 46 55 35 65 44 53 55 76 58 86 59 6 96 16 57 51 26 46 60 56 56 36 66 54 63 65 77 68 87 69 7 97 17 67 61 27 47 70 66 57 37 67 64 73 75 78 78 88 79 8 98 18 77 71 28 48 80 76 58 38 68 74 83 85 79 88 89 89 9 99 19 87 81 29 49 90 86 59 39 69 84 93 95 80 98 90 99 10 100 20 97 91 30 50 100 96 60 40 70 94 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[2 12 22 32 42 52 62 72 82 92 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 7 3 8 1 1 2 4 10 5 9 2 2 4 5 12 6 11 3 3 5 9 13 12 13 8 7 10 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[3 5 6 11 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[1 2 3 3 1 2 3 4 4 2 3 4 5 5 3 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[2 3 4 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 7 6 3 1 1 3 10 9 7 6 3 3 6 13 12 9 7 6 6 8 14 14 12 10 7 7 9 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[6 8 9 13 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[13 3 1 1 9 2 4 14 7 5 2 10 6 8 15 11 9 3 11 10 12 16 15 13 4 12 14 16 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[5 6 7 8 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[9 15 14 4 8 13 12 10 2 3 6 4 2 5 10 11 6 9 8 12 19 18 6 10 18 16 14 4 5 7 5 3 7 14 16 9 12 11 13 21 19 9 12 20 18 16 6 7 9 6 4 10 16 17 11 13 12 17 24 21 12 13 22 20 19 8 10 10 7 5 13 18 20 14 14 16 18 25 22 13 14 23 21 20 9 12 11 9 6 14 19 22 15 15 17 22 26 26 16 16 25 25 23 10 14 12 11 8 18 20 23 19 17 20 25 27 29 17 17 26 28 26 11 16 13 12 9 20 22 25 22 18 23 26 28 32 20 19 27 30 27 13 18 16 14 10 22 23 26 23 20 25 27 32 33 21 20 30 32 28 15 19 18 16 12 24 25 28 25 21 26 31 33 36 22 21 32 34 32 16 21 19 18 14 26 26 29 28 22 29 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[16 21 22 26 28 29 31 32 34 36 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 2 6 3 4 4 3 7 5 5 6 5 8 7 6 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[5 6 8 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[5 3 11 7 2 9 9 5 12 3 7 8 6 8 4 4 1 8 5 15 9 5 13 14 9 16 6 12 13 10 11 6 7 2 9 6 17 10 6 15 18 11 18 8 14 16 12 13 8 10 3 11 7 18 12 8 16 19 13 20 9 16 17 15 14 10 11 4 13 9 19 14 9 17 20 14 21 10 18 19 17 16 11 12 5 15 10 21 17 11 19 22 16 22 13 19 20 18 18 12 14 6 16 12 23 18 13 21 24 17 25 15 21 23 19 19 14 16 7 17 13 25 19 15 23 26 19 26 17 23 25 21 20 16 18 8 19 14 26 20 16 24 28 21 28 18 25 26 22 22 18 20 9 ];\r\nm=reshape(m,[],9);\r\nv=rank_file(m);\r\nvexp=[1 3 4 5 7 8 9 11 12 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[9 11 5 14 1 13 8 2 3 11 1 7 10 8 13 5 6 11 15 7 17 3 17 13 5 5 13 2 8 14 10 15 9 11 12 19 8 19 5 20 15 7 7 14 3 10 17 11 16 11 13 16 21 11 21 7 23 16 8 9 17 5 13 19 14 18 13 15 17 23 13 22 8 25 18 10 11 18 6 15 21 16 19 14 16 19 24 15 25 9 26 19 11 13 21 8 16 23 18 23 16 17 23 25 17 28 11 28 21 13 14 24 10 19 24 21 26 17 18 24 27 19 30 13 29 23 15 15 25 11 21 26 23 27 18 19 26 30 20 32 14 32 25 17 17 28 13 23 28 25 29 21 22 ];\r\nm=reshape(m,[],9);\r\nv=rank_file(m);\r\nvexp=[3 7 8 10 11 12 14 16 19 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[111 125 48 41 86 24 61 24 35 119 70 63 49 131 136 102 60 93 49 86 35 51 133 128 115 51 156 162 111 94 119 61 94 41 86 157 139 118 60 166 191 129 119 125 86 105 46 93 176 153 131 82 189 212 189 156 129 111 111 48 131 204 203 192 102 192 237 204 157 131 119 118 63 133 209 224 209 115 203 244 212 162 153 125 139 70 136 224 244 237 128 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[46 82 105 125 166 176 191 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[4 2 6 8 4 8 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[2 6 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[9 5 12 8 5 11 8 17 11 9 17 12 20 14 13 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[13 14 20 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[1 3 1 2 2 2 4 2 3 3 3 5 3 4 4 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[3 4 5 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[3 10 13 7 6 12 11 6 12 18 10 10 16 14 10 18 19 12 14 19 18 12 19 22 16 18 22 19 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[3 7 11 13 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[16 18 23 12 1 19 4 13 11 8 11 15 17 10 1 3 19 22 23 26 15 3 26 5 18 12 11 15 19 21 13 4 5 23 23 24 28 17 7 29 9 20 15 13 19 20 22 14 8 11 25 25 29 30 21 10 31 13 23 19 14 20 21 25 19 11 12 28 30 35 35 23 11 36 15 27 20 19 23 26 31 21 12 15 34 33 36 40 26 15 38 19 29 21 20 27 29 32 23 13 18 37 37 38 41 30 16 42 22 33 25 23 31 32 37 25 17 21 39 38 41 44 34 19 46 23 37 28 25 35 36 39 29 18 23 41 42 44 49 35 23 49 26 40 30 28 36 38 41 31 19 26 46 ];\r\nm=reshape(m,[],9);\r\nv=rank_file(m);\r\nvexp=[7 9 13 15 17 20 22 24 29 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[4 2 2 8 4 6 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[6 8 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[8 22 22 11 20 3 9 8 18 16 10 14 13 13 29 33 17 28 8 15 13 28 23 20 21 24 17 34 34 22 32 9 22 15 31 29 24 27 26 21 39 42 24 35 10 27 20 38 31 29 29 34 23 45 45 26 44 13 29 24 43 39 31 34 39 28 52 53 31 48 18 32 28 48 43 35 38 44 29 56 56 34 53 22 34 33 52 45 39 42 45 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[3 8 11 14 16 20 22 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[65 76 101 87 2 90 117 2 65 35 36 10 44 103 81 45 40 86 22 84 98 144 134 10 120 168 22 98 43 40 24 61 137 102 79 52 127 24 99 108 147 144 35 136 179 36 121 54 54 40 74 161 132 96 74 137 43 119 141 157 186 44 142 188 40 144 74 74 52 92 208 169 113 92 184 61 151 159 191 216 45 168 213 53 168 88 96 73 97 230 174 137 113 199 79 190 201 222 217 65 211 236 65 190 121 99 98 144 236 205 168 119 206 84 205 208 260 229 76 235 267 81 201 132 108 102 169 246 208 174 141 224 98 206 224 268 265 90 259 274 86 211 137 136 127 184 267 235 199 142 259 120 217 229 272 272 101 265 281 87 222 144 147 134 186 294 260 216 157 268 144 236 246 294 281 117 267 302 103 236 161 179 137 208 302 267 230 188 274 168 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[53 73 88 97 137 151 159 168 191 213 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[18 9 15 18 3 13 21 7 6 9 5 11 12 15 10 19 12 18 20 5 15 22 8 7 11 7 14 14 17 12 27 17 21 24 7 22 27 14 8 14 11 19 18 24 17 30 20 23 25 9 24 29 17 12 17 12 21 21 27 20 33 21 25 26 12 27 31 19 14 18 14 22 22 28 21 34 24 29 31 15 29 32 22 18 21 15 25 27 32 23 35 27 32 34 18 31 36 24 20 24 17 26 28 34 25 38 30 34 35 21 32 38 27 22 27 19 31 33 36 29 ];\r\nm=reshape(m,[],8);\r\nv=rank_file(m);\r\nvexp=[3 6 9 10 11 13 15 18 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 2 4 4 4 5 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[4 5 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 14 4 13 10 8 5 10 7 14 15 5 14 20 18 11 12 11 15 22 7 18 24 20 12 15 14 18 25 8 24 28 24 14 20 18 22 30 10 28 30 25 15 24 20 ];\r\nm=reshape(m,[],5);\r\nv=rank_file(m);\r\nvexp=[4 7 10 13 14 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 3 10 7 9 14 3 9 7 15 14 11 19 6 14 9 19 17 17 20 7 15 14 24 20 19 24 10 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[6 9 11 19 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[14 7 33 34 30 19 29 23 15 30 9 3 18 3 16 7 25 25 21 18 9 39 35 37 22 32 24 19 33 11 7 21 7 17 9 27 30 23 23 11 45 43 40 27 36 27 24 38 16 12 25 9 20 15 35 35 32 24 18 48 44 43 28 38 31 27 39 20 16 28 14 24 17 37 36 36 28 19 54 46 50 34 46 34 29 41 25 18 29 15 27 21 38 41 37 31 22 57 50 51 37 50 37 34 45 27 23 34 19 28 24 43 46 41 36 23 60 57 56 46 54 41 41 56 35 25 37 21 36 30 53 49 49 38 27 64 66 58 50 55 43 46 61 36 29 38 25 37 32 55 53 54 43 33 67 71 66 51 61 45 50 66 40 30 41 30 39 37 58 56 56 48 35 73 73 71 57 66 50 54 67 45 33 46 34 44 39 64 57 60 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[12 15 16 23 24 27 32 35 38 43 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[11 8 12 6 3 3 11 13 7 8 4 14 12 17 8 4 4 14 16 9 10 5 16 15 19 11 6 7 17 18 11 14 9 21 18 22 15 8 8 19 22 14 18 12 22 19 24 16 11 11 22 23 17 21 14 23 22 26 19 13 12 24 26 18 22 17 ];\r\nm=reshape(m,[],6);\r\nv=rank_file(m);\r\nvexp=[4 5 8 10 14 16 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[1 5 3 1 4 3 6 4 3 5 5 8 6 4 8 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[3 4 5 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[40 3 25 39 38 3 5 63 16 49 73 52 5 22 72 38 53 80 53 25 52 81 40 72 81 80 39 63 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[16 22 49 73 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[3 2 2 1 3 4 3 3 2 4 5 4 4 3 5 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[1 2 3 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[9 10 2 8 8 1 9 1 6 4 11 2 4 11 13 3 9 10 2 11 2 8 5 13 3 5 14 14 5 12 11 4 13 4 10 6 16 5 6 15 16 8 13 13 6 15 6 12 10 17 8 10 17 18 9 14 14 8 17 8 13 11 19 10 12 18 20 11 17 17 9 18 9 15 13 21 11 14 20 22 13 18 19 10 21 11 16 14 22 13 16 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[6 8 10 12 13 15 17 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[11 5 9 2 7 13 2 8 6 7 6 4 9 14 8 16 4 10 16 4 14 8 12 10 6 12 16 10 18 5 11 17 6 15 10 13 11 8 13 17 11 19 6 13 19 7 17 11 15 13 10 14 19 13 21 7 15 20 9 19 13 17 14 12 17 20 16 23 8 17 22 11 20 15 19 17 14 19 23 17 24 9 19 24 13 22 18 20 19 16 21 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[4 6 8 10 12 14 16 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[11 6 11 10 14 16 13 8 12 9 3 3 7 13 16 17 7 6 5 20 12 18 15 25 26 21 18 20 13 6 5 15 23 27 29 11 9 9 22 14 21 20 28 29 24 21 23 17 7 6 16 24 29 32 14 12 11 26 17 26 23 31 37 32 24 29 19 9 7 19 27 34 37 16 15 13 27 20 29 26 33 40 35 26 30 24 10 8 23 29 37 40 21 18 15 31 21 31 27 35 41 36 29 33 26 11 11 26 33 38 43 22 20 18 33 23 33 29 37 44 38 30 34 27 12 13 29 34 40 46 24 23 20 36 24 35 33 40 47 40 35 37 31 13 14 32 38 42 47 28 25 21 40 25 38 37 44 49 42 38 40 34 15 16 35 41 46 48 29 27 23 41 29 43 40 47 52 47 40 46 37 16 17 37 44 49 52 32 29 26 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[15 23 25 35 38 40 41 44 46 48 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[14 11 6 9 7 14 2 13 9 17 12 2 3 19 14 10 13 10 17 5 17 11 19 14 3 7 22 19 11 16 11 18 7 21 13 21 16 6 10 23 21 13 18 16 22 9 22 18 25 21 9 11 28 23 16 21 19 26 12 26 21 28 23 11 14 31 26 18 22 21 29 14 29 22 30 26 13 17 32 28 21 25 22 31 17 30 23 32 28 14 19 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[5 7 10 13 14 17 19 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[15 15 21 3 7 11 25 22 5 18 9 11 3 16 19 29 12 25 18 18 20 26 7 10 12 28 23 10 20 11 15 5 21 22 34 19 28 22 21 24 30 11 11 14 33 28 12 23 14 16 9 26 24 39 22 30 27 23 28 33 15 15 16 34 34 18 25 21 23 11 29 29 40 24 35 30 24 31 34 18 19 22 37 39 20 26 23 25 12 34 33 41 26 43 38 28 37 39 19 20 24 43 45 22 31 24 29 15 41 37 47 33 49 43 29 39 43 21 21 26 45 50 26 34 30 33 16 43 41 49 34 51 47 30 43 47 25 22 27 50 52 28 38 33 34 18 45 43 58 37 55 50 34 44 50 26 23 28 52 55 31 39 35 37 22 47 45 59 39 58 54 35 47 51 29 28 30 55 59 34 43 39 40 25 49 49 63 41 63 58 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[26 31 35 37 39 44 47 54 55 58 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[1 9 5 2 11 15 6 3 15 1 8 17 3 2 18 11 8 12 7 2 13 8 5 14 17 10 6 16 2 12 19 8 5 20 12 11 15 10 3 18 13 6 20 25 13 11 23 3 15 24 11 8 26 20 18 21 15 5 21 16 8 23 29 16 13 28 6 17 29 13 10 30 25 22 26 19 7 23 17 10 24 30 19 15 30 8 22 32 15 12 31 26 24 28 22 8 26 21 11 27 35 22 18 33 9 24 34 18 13 37 29 26 31 23 11 29 23 12 31 38 25 20 37 11 26 40 20 14 39 31 27 34 24 13 32 26 15 33 39 26 21 38 12 28 42 23 15 42 34 31 37 28 15 35 28 17 38 40 29 23 40 15 30 43 25 16 45 37 33 39 30 18 37 29 20 39 43 30 24 45 17 31 48 26 19 48 40 34 42 32 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[13 15 23 26 28 32 33 37 38 42 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[5 9 9 5 3 7 13 12 7 5 13 17 17 12 9 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[3 5 9 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[13 6 8 11 8 4 2 1 10 3 10 5 7 18 7 11 15 11 5 4 2 14 4 12 8 9 21 11 15 19 12 10 5 5 17 8 18 10 13 25 15 19 22 15 12 7 8 20 11 20 11 17 28 20 25 25 17 17 9 10 23 14 27 13 23 30 22 28 28 19 19 11 11 25 15 29 15 25 32 25 30 29 20 21 12 13 27 18 32 18 28 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[1 3 4 6 7 8 10 ];\r\nassert(isequal(vexp,v))\r\ntoc\r\n\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":11,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2016-04-18T02:50:28.000Z","updated_at":"2016-04-18T04:20:27.000Z","published_at":"2016-04-18T03:42: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:r\u003e\u003cw:t\u003eThis Challenge is derived from\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://code.google.com/codejam/contest/4304486/dashboard#s=p1\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGJam Rd1A 2016 Rank and File\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. This is the small case with max N=10\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 GJam story is a matrix H(NxN) which has every row and column increasing. Each row and column is recorded on strips. The strips get scrambled and one gets incinerated. The goal is to reconstruct the missing increasing vector strip.\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], matrix of size [2*N-1,N] of all rows and columns of H except one\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 [V], the missing vector of H not included in M\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 [M] [V]\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 2 3;2 3 5;3 5 6;2 3 4;1 2 3] [3 4 6] \\n[22 222;2 22;2 22][22 222]]]\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\u003eGJam 2016 Rd1A Matlab results show three qualifiers for Rd2.\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\u003eTheory:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e With max N=10 it is possible to brute force the 50 puzzles. Persistent may be useful with the usage of nchoosek which may be the critical path.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.go-hero.net/jam/16/solutions/1/2/MATLAB\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGJam Rank_file solutions\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Writing the general solution for N=50 is better for the contest. The min corner or the max corner will always be available. Evolving solution, no guessing, is possible. OR one can observe an inherent mathematical result to create a 1-line solution.\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":42291,"title":"GJam 2015 Rd1B: Counter Culture","description":"This Challenge is derived from \u003chttps://code.google.com/codejam/contest/8224486/dashboard#s=p0 GJam 2015 Rd 1B: Counter Culture\u003e. Fastest completion - 5 minutes.\r\n\r\nDetermine minimum sequence length to reach a number. Sequence starts at 1 and the next is either +1 or the number's reverse with trailing zeros removed. (eg 2300 is followed by 2301 or 32)\r\n\r\nInput: N, a value from 1 to 1,000,000\r\n\r\nOutput: L, minimum length of sequence to reach N\r\n\r\nExamples: Small Case 1\u003c=N\u003c=1000000\r\n\r\n  N=5,  L=5  [1 2 3 4 5] L=N is true thru 19\r\n  N=23, L=15 [1:12 21 22 23]\r\n\r\n\r\nTheory: The small case can be solved with brute force or semi-brute force using storage of past calculations. All values are processed at each depth level. Duplicates from [N+1 and flip] are purged. A fast reversal function is essential. Direct summation works well. The large case N limit is 1E14 making even semi-brute force with storage unlikely.\r\n\r\n\r\nAdditional GJam solutions can be found at \u003chttp://www.go-hero.net/jam/15 Example GJam Matlab solutions\u003e. Select Find Solutions, change Language to Matlab. The Test Suite, at the bottom, contains a full GJam Matlab solution.","description_html":"\u003cp\u003eThis Challenge is derived from \u003ca href = \"https://code.google.com/codejam/contest/8224486/dashboard#s=p0\"\u003eGJam 2015 Rd 1B: Counter Culture\u003c/a\u003e. Fastest completion - 5 minutes.\u003c/p\u003e\u003cp\u003eDetermine minimum sequence length to reach a number. Sequence starts at 1 and the next is either +1 or the number's reverse with trailing zeros removed. (eg 2300 is followed by 2301 or 32)\u003c/p\u003e\u003cp\u003eInput: N, a value from 1 to 1,000,000\u003c/p\u003e\u003cp\u003eOutput: L, minimum length of sequence to reach N\u003c/p\u003e\u003cp\u003eExamples: Small Case 1\u0026lt;=N\u0026lt;=1000000\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eN=5,  L=5  [1 2 3 4 5] L=N is true thru 19\r\nN=23, L=15 [1:12 21 22 23]\r\n\u003c/pre\u003e\u003cp\u003eTheory: The small case can be solved with brute force or semi-brute force using storage of past calculations. All values are processed at each depth level. Duplicates from [N+1 and flip] are purged. A fast reversal function is essential. Direct summation works well. The large case N limit is 1E14 making even semi-brute force with storage unlikely.\u003c/p\u003e\u003cp\u003eAdditional GJam solutions can be found at \u003ca href = \"http://www.go-hero.net/jam/15\"\u003eExample GJam Matlab solutions\u003c/a\u003e. Select Find Solutions, change Language to Matlab. The Test Suite, at the bottom, contains a full GJam Matlab solution.\u003c/p\u003e","function_template":"function L = Counter_Culture(N)\r\n% N is value to be reached \r\n% L is minimum length of sequence to reach N\r\n% N=23  L=15  the sequence [1:12 21 22 23]\r\n% N=19 L=19 [1:19]\r\n  L=1;\r\nend","test_suite":"tic\r\n%%\r\nN=1;\r\nL=Counter_Culture(N);\r\nLexp=1;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=19;\r\nL=Counter_Culture(N);\r\nLexp=19;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=23;\r\nL=Counter_Culture(N);\r\nLexp=15;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1101;\r\nL=Counter_Culture(N);\r\nLexp=150;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=998999;\r\nL=Counter_Culture(N);\r\nLexp=3334;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=990000;\r\nL=Counter_Culture(N);\r\nLexp=3425;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10110;\r\nL=Counter_Culture(N);\r\nLexp=447;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11111;\r\nL=Counter_Culture(N);\r\nLexp=459;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999991;\r\nL=Counter_Culture(N);\r\nLexp=3426;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=512;\r\nL=Counter_Culture(N);\r\nLexp=46;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999899;\r\nL=Counter_Culture(N);\r\nLexp=3334;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1999;\r\nL=Counter_Culture(N);\r\nLexp=328;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11101;\r\nL=Counter_Culture(N);\r\nLexp=449;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=876543;\r\nL=Counter_Culture(N);\r\nLexp=2657;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=4;\r\nL=Counter_Culture(N);\r\nLexp=4;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=102;\r\nL=Counter_Culture(N);\r\nLexp=31;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11000;\r\nL=Counter_Culture(N);\r\nLexp=1337;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1998;\r\nL=Counter_Culture(N);\r\nLexp=327;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=900000;\r\nL=Counter_Culture(N);\r\nLexp=3434;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=131072;\r\nL=Counter_Culture(N);\r\nLexp=1639;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=524288;\r\nL=Counter_Culture(N);\r\nLexp=2149;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=20;\r\nL=Counter_Culture(N);\r\nLexp=20;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=789012;\r\nL=Counter_Culture(N);\r\nLexp=2435;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=200;\r\nL=Counter_Culture(N);\r\nLexp=129;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=109876;\r\nL=Counter_Culture(N);\r\nLexp=3213;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11100;\r\nL=Counter_Culture(N);\r\nLexp=448;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=262144;\r\nL=Counter_Culture(N);\r\nLexp=1842;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11;\r\nL=Counter_Culture(N);\r\nLexp=11;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1001;\r\nL=Counter_Culture(N);\r\nLexp=139;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=987654;\r\nL=Counter_Culture(N);\r\nLexp=2879;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999989;\r\nL=Counter_Culture(N);\r\nLexp=3424;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11011;\r\nL=Counter_Culture(N);\r\nLexp=359;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=4096;\r\nL=Counter_Culture(N);\r\nLexp=238;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=900001;\r\nL=Counter_Culture(N);\r\nLexp=1446;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=201;\r\nL=Counter_Culture(N);\r\nLexp=32;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=99001;\r\nL=Counter_Culture(N);\r\nLexp=437;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999999;\r\nL=Counter_Culture(N);\r\nLexp=3434;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999900;\r\nL=Counter_Culture(N);\r\nLexp=3335;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=901;\r\nL=Counter_Culture(N);\r\nLexp=39;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2201;\r\nL=Counter_Culture(N);\r\nLexp=161;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=90;\r\nL=Counter_Culture(N);\r\nLexp=28;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=101;\r\nL=Counter_Culture(N);\r\nLexp=30;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10111;\r\nL=Counter_Culture(N);\r\nLexp=448;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=31;\r\nL=Counter_Culture(N);\r\nLexp=14;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10;\r\nL=Counter_Culture(N);\r\nLexp=10;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10100;\r\nL=Counter_Culture(N);\r\nLexp=437;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999998;\r\nL=Counter_Culture(N);\r\nLexp=3433;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999000;\r\nL=Counter_Culture(N);\r\nLexp=3335;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=990001;\r\nL=Counter_Culture(N);\r\nLexp=1536;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=30;\r\nL=Counter_Culture(N);\r\nLexp=22;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=900;\r\nL=Counter_Culture(N);\r\nLexp=137;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=101001;\r\nL=Counter_Culture(N);\r\nLexp=1538;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999990;\r\nL=Counter_Culture(N);\r\nLexp=3425;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=989999;\r\nL=Counter_Culture(N);\r\nLexp=3424;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=21;\r\nL=Counter_Culture(N);\r\nLexp=13;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=9999;\r\nL=Counter_Culture(N);\r\nLexp=336;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=100001;\r\nL=Counter_Culture(N);\r\nLexp=1437;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10999;\r\nL=Counter_Culture(N);\r\nLexp=1336;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=100;\r\nL=Counter_Culture(N);\r\nLexp=29;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=91;\r\nL=Counter_Culture(N);\r\nLexp=20;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11010;\r\nL=Counter_Culture(N);\r\nLexp=358;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=29;\r\nL=Counter_Culture(N);\r\nLexp=21;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2001;\r\nL=Counter_Culture(N);\r\nLexp=141;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11110;\r\nL=Counter_Culture(N);\r\nLexp=458;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10001;\r\nL=Counter_Culture(N);\r\nLexp=338;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=9;\r\nL=Counter_Culture(N);\r\nLexp=9;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=101000;\r\nL=Counter_Culture(N);\r\nLexp=2436;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1000;\r\nL=Counter_Culture(N);\r\nLexp=138;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=19;\r\nL=Counter_Culture(N);\r\nLexp=19;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=12000;\r\nL=Counter_Culture(N);\r\nLexp=1348;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999;\r\nL=Counter_Culture(N);\r\nLexp=137;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=22;\r\nL=Counter_Culture(N);\r\nLexp=14;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1111;\r\nL=Counter_Culture(N);\r\nLexp=160;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=12001;\r\nL=Counter_Culture(N);\r\nLexp=359;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=12;\r\nL=Counter_Culture(N);\r\nLexp=12;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=99000;\r\nL=Counter_Culture(N);\r\nLexp=1426;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999001;\r\nL=Counter_Culture(N);\r\nLexp=2436;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=899999;\r\nL=Counter_Culture(N);\r\nLexp=3433;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10010;\r\nL=Counter_Culture(N);\r\nLexp=347;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10000;\r\nL=Counter_Culture(N);\r\nLexp=337;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10101;\r\nL=Counter_Culture(N);\r\nLexp=438;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2000;\r\nL=Counter_Culture(N);\r\nLexp=329;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=111;\r\nL=Counter_Culture(N);\r\nLexp=40;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999901;\r\nL=Counter_Culture(N);\r\nLexp=3336;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2101;\r\nL=Counter_Culture(N);\r\nLexp=151;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10011;\r\nL=Counter_Culture(N);\r\nLexp=348;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2002;\r\nL=Counter_Culture(N);\r\nLexp=142;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=32;\r\nL=Counter_Culture(N);\r\nLexp=15;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=110;\r\nL=Counter_Culture(N);\r\nLexp=39;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2100;\r\nL=Counter_Culture(N);\r\nLexp=240;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11001;\r\nL=Counter_Culture(N);\r\nLexp=349;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=99;\r\nL=Counter_Culture(N);\r\nLexp=28;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1100;\r\nL=Counter_Culture(N);\r\nLexp=238;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1099;\r\nL=Counter_Culture(N);\r\nLexp=237;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1000000;\r\nL=Counter_Culture(N);\r\nLexp=3435;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=100000;\r\nL=Counter_Culture(N);\r\nLexp=1436;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2200;\r\nL=Counter_Culture(N);\r\nLexp=250;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1110;\r\nL=Counter_Culture(N);\r\nLexp=159;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=432109;\r\nL=Counter_Culture(N);\r\nLexp=1779;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=199;\r\nL=Counter_Culture(N);\r\nLexp=128;\r\nassert(isequal(Lexp,L))\r\n%%\r\ntoc\r\n%%\r\n% function GJam_Rd1B_2015a\r\n% % \r\n% fn='A-small-practice.in';\r\n% [data] = read_file(fn); % \r\n% \r\n% fidG = fopen('A-small-practice.out', 'w');\r\n%  \r\n% tic\r\n% for i=1:size(data,2) % Cell array has J cols of cases\r\n%  L = Counter_Culture(data{i});\r\n%  fprintf(fidG,'Case #%i: %i\\n',i,L);\r\n%  fprintf('Case #%i: %i\\n',i,L); \r\n% end\r\n% toc\r\n% fclose(fidG);\r\n% end\r\n% \r\n% function depth=Counter_Culture(v)\r\n% % create all paths\r\n% persistent m mv maxdepth\r\n% if isempty(m)\r\n%     \r\n%  mv=zeros(1000000,1);\r\n%  m{1000000}=[]; % set cell array size to max possible\r\n%  for i=1:9\r\n%   m{i}=i;\r\n%   mv(i)=i; % place best depth into mv for repeated searches\r\n%  end\r\n%  maxdepth=9;\r\n% end\r\n% \r\n% if mv(v) % usage of persistent data\r\n%  depth=mv(v);\r\n%  return;\r\n% end\r\n% \r\n% \r\n% while 1\r\n%  mset=m{maxdepth}; % start with last set calculated\r\n%  maxdepth=maxdepth+1;\r\n%  msetn=mset+1;\r\n%  \r\n%  msetn=msetn(mv(msetn)==0);\r\n%  mv(msetn)=maxdepth;\r\n%  \r\n%  for i=1:length(mset)\r\n%   flipv=calc_flip(mset(i));\r\n%   if mv(flipv)==0 % new value\r\n%    mv(flipv)=maxdepth;\r\n%    msetn=[msetn flipv]; % add to list\r\n%   end\r\n%  end\r\n%  \r\n%  m{maxdepth}=msetn;\r\n%  \r\n%  if any(msetn==v)\r\n%   depth=maxdepth;\r\n%   return\r\n%  end\r\n%     \r\n% end % while\r\n% \r\n% end\r\n% \r\n% function vr=calc_flip(val)\r\n%  vr=0;\r\n%  while val\r\n%   v1=mod(val,10);\r\n%   vr=10*vr+v1;\r\n%   val=(val-v1)/10;\r\n%  end\r\n% end\r\n% \r\n% function [d] = read_file(fn)\r\n% d={};\r\n% fid=fopen(fn);\r\n% fgetl(fid); % Total Count ignore\r\n% ptr=0;\r\n% while ~feof(fid)\r\n%  ptr=ptr+1;\r\n%  v=str2num(fgetl(fid)); \r\n%  d{ptr}=v;\r\n% end % feof\r\n% fclose(fid);\r\n% end % read_file\r\n%%\r\ntoc","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":11,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2015-05-03T21:55:15.000Z","updated_at":"2025-11-20T19:05:41.000Z","published_at":"2015-05-03T22:36:16.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 derived from\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://code.google.com/codejam/contest/8224486/dashboard#s=p0\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGJam 2015 Rd 1B: Counter Culture\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Fastest completion - 5 minutes.\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 minimum sequence length to reach a number. Sequence starts at 1 and the next is either +1 or the number's reverse with trailing zeros removed. (eg 2300 is followed by 2301 or 32)\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\u003eInput: N, a value from 1 to 1,000,000\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\u003eOutput: L, minimum length of sequence to reach N\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\u003eExamples: Small Case 1\u0026lt;=N\u0026lt;=1000000\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=5,  L=5  [1 2 3 4 5] L=N is true thru 19\\nN=23, L=15 [1:12 21 22 23]]]\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\u003eTheory: The small case can be solved with brute force or semi-brute force using storage of past calculations. All values are processed at each depth level. Duplicates from [N+1 and flip] are purged. A fast reversal function is essential. Direct summation works well. The large case N limit is 1E14 making even semi-brute force with storage unlikely.\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\u003eAdditional GJam solutions can be found at\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.go-hero.net/jam/15\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eExample GJam Matlab solutions\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Select Find Solutions, change Language to Matlab. The Test Suite, at the bottom, contains a full GJam Matlab solution.\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":44237,"title":"Mastermind II: Solve in 8 or less","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\r\n\r\nTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8.  The optimal minimal guess solution requires only 5 guesses.\r\n\r\nFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8.  The optimal minimal guess solution requires only 5 guesses.\u003c/p\u003e\u003cp\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n if isempty(mguess)\r\n  guess=[1 1 2 2]; % [1 1 1 1] is not a good first guess\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\nGmax=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved \u0026\u0026 Lmax\u003c9 % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n  mguess(end+1,:)=mguessn;\r\n  mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n  mpegs(end,2)=mc(ptr,mguessptr);\r\n  \r\n  Lsol=size(mguess,1);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n  if Lsol==8 % length of 8 and not solved\r\n   solved=0;\r\n   Gmax=0;\r\n   break;\r\n   end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\nif Gmax==0 % failed Guess max rqmt of 8\r\n fprintf('\\n Solution exceeded 8 guesses\\n');\r\n fprintf('Puzzle %i %i %i %i\\n',m(ptr,:));\r\n fprintf('Guessses and Responses\\n');\r\n fprintf('M%i %i %i %i   P%i %i\\n',[mguess mpegs]');\r\n fprintf('\\n');\r\nend\r\n\r\nif solved\r\n fprintf('Solved in %.2f sec\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f sec\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":15,"test_suite_updated_at":"2017-06-18T18:19:06.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T17:46:47.000Z","updated_at":"2025-12-12T14:09:25.000Z","published_at":"2017-06-18T18:16:28.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=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\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[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\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[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\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\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\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\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\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\u003eTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8. The optimal minimal guess solution requires only 5 guesses.\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\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\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":44236,"title":"Mastermind I: Solve all 1296 cases","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\r\n\r\nTheory: Brute force can work but masking is much more efficient.  The optimal minimal guess solution requires only 5 guesses.\r\n\r\nFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: Brute force can work but masking is much more efficient.  The optimal minimal guess solution requires only 5 guesses.\u003c/p\u003e\u003cp\u003eFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n if isempty(mguess)\r\n  guess=[1 1 1 1];\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n   mguess(end+1,:)=mguessn;\r\n   mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n   mpegs(end,2)=mc(ptr,mguessptr);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Lsol=size(mguess,1);\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\n\r\nif solved\r\n fprintf('Solved in %.2f\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n","published":true,"deleted":false,"likes_count":3,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":21,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T14:17:00.000Z","updated_at":"2025-12-12T14:05:24.000Z","published_at":"2017-06-18T15:51:46.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=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\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[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\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[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\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\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\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\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\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\u003eTheory: Brute force can work but masking is much more efficient. The optimal minimal guess solution requires only 5 guesses.\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\u003eFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\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":937,"title":"Rubik's Mini Cube: Solve Randomized Cube in 11 Moves or Less; Score is by Time (msec)","description":"The Challenge is to Near or Optimally Solve a thoroughly scrambled Mini-Rubik's Cube(2x2x2).\r\n\r\nAny Mini-Cube can be solved in 11 or fewer Face Moves. There are only 3,674,160 unique cube positions, with only 2344 requiring the fulll 11 moves. Cube moves do not count.\r\n\r\nThe Performance metric is cumulative Time to Solve 500 cubes (msec).\r\n\r\nA standard Mini-Rubik's Cube is shown in 3-D and also unfolded to identify the specific Tile-face/Vector numbering.\r\n\r\nThe faces are White-Up / Red-Left / Blue-Front / Orange-Right / Yellow-Down / Green-Back (ULFRDB)\r\n\r\nMoves are denoted as F for clockwise rotation of the Front face. F'(or FP) is CCW and F2 is F twice.  The provided function r_new=rubick_rot_mini(mov,r) implements moves 1-18: UFDLBRU'F'D'L'B'R'U2F2D2L2B2R2.\r\n\r\n\r\n\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/minicube2.png\u003e\u003e\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/miniCube_Map24_200.png\u003e\u003e\r\n\r\n\u003c\u003chttp://mathworks.com/matlabcentral/images/surf.gif\u003e\u003e\r\n\r\n\r\n  \r\n  \r\n  Input: (rubik)\r\n  \r\n  rubik: row vector of size 24\r\n  (The cube started [L=0,U=1,F=2,D=3,B=4,R=5] and then receives forty face moves.\r\n\r\n  Output: move_vec (Numeric of moves to solve)\r\n   move_vec:values 1:27 for UFDLBR U'F'D'L'B'R' U2F2D2L2B2R2 XYZX'Y'Z'X2Y2Z2\r\n\r\n* Example:\r\n* If the cube was randomized by [1 9] UD', one solution is [3 7]  which are the complements in reverse order. \r\n* Scoring is Time in msec to solve 500 cubes\r\n* Cube Moves X, Y, and Z do not constitute a move but are needed in the vector \r\n* A string to numeric value function is provided in the template\r\n* Verifications will be by executing your move vector against the provided Rubik and counting number of face moves.\r\n\r\nThe function rubik_rot_mini(mov,r) is provided in the template. Other functions are provided to re-orient the cube in Cody Challenge 931, Rubik's Mini-Cube.\r\n\r\n\r\nThe Challenge \u003chttp://www.mathworks.com/matlabcentral/cody/problems/931-rubik-s-mini-cube-solve-randomized-mini-cube-score-moves.html Challenge 931 Rubik's Mini-Cube\u003e contains a 3D Mini-Cube Viewer for program development.\r\n\r\n\r\n* \r\n* \u003chttp://kociemba.org/cube.htm Cube Theory: 20-moves Any Cube\u003e \r\n* \u003chttp://peter.stillhq.com/jasmine/rubikscubesolution.html General Cube Info and Middle Layer\u003e\r\n* \u003chttp://www.speedcubing.com/final_layer_print.html SpeedCube Bottom Sequences\u003e\r\n* The site \u003chttp://www.speedcubing.com/CubeSolver/MiniCubeSolver.html MiniCube Solver\u003e claims an outstanding 10 minutes to solve a randomized Mini-Cube. Matlab can achieve any Mini-Cube solution in \u003c 497 usec, independent of moves on an i5/16GB machine.\r\n\r\n\r\n(Note: Mini-Cube can use the full cube moves and ignore edge effects)\r\n\r\nComing Soon: Matlab Tetris\r\n","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: 1316.98px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 658.5px; transform-origin: 407px 658.5px; vertical-align: baseline; \"\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: 294.65px 7.91667px; transform-origin: 294.65px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Challenge is to Near or Optimally Solve a thoroughly scrambled Mini-Rubik's Cube(2x2x2).\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: 377.2px 7.91667px; transform-origin: 377.2px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAny Mini-Cube can be solved in 11 or fewer Face Moves. There are only 3,674,160 unique cube positions, with only 2344 requiring the fulll 11 moves. Cube moves do not count.\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: 221.45px 7.91667px; transform-origin: 221.45px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Performance metric is cumulative Time to Solve 500 cubes (msec).\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: 355.467px 7.91667px; transform-origin: 355.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eA standard Mini-Rubik's Cube is shown in 3-D and also unfolded to identify the specific Tile-face/Vector numbering.\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: 316.733px 7.91667px; transform-origin: 316.733px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe faces are White-Up / Red-Left / Blue-Front / Orange-Right / Yellow-Down / Green-Back (ULFRDB)\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: 380.533px 7.91667px; transform-origin: 380.533px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eMoves are denoted as F for clockwise rotation of the Front face. F'(or FP) is CCW and F2 is F twice. The provided function r_new=rubick_rot_mini(mov,r) implements moves 1-18: UFDLBRU'F'D'L'B'R'U2F2D2L2B2R2.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 138.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 69.4667px; text-align: center; transform-origin: 384px 69.4667px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 242.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 121.467px; text-align: center; transform-origin: 384px 121.467px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 113.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 56.9667px; text-align: center; transform-origin: 384px 56.9667px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/gif;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 143.033px; 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 71.5167px; transform-origin: 404px 71.5167px; 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: 53.9px 7.91667px; transform-origin: 53.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eInput: (rubik)\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: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 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: 107.8px 7.91667px; transform-origin: 107.8px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 69.3px 7.91667px; transform-origin: 69.3px 7.91667px; \"\u003erubik: row vector \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: 38.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 38.5px 7.91667px; \"\u003eof size 24\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: 304.15px 7.91667px; transform-origin: 304.15px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e(The cube started [L=0,U=1,F=2,D=3,B=4,R=5] and then receives forty face moves.\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: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 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: 169.4px 7.91667px; transform-origin: 169.4px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eOutput: move_vec (Numeric of moves to solve)\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: 284.9px 7.91667px; transform-origin: 284.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 84.7px 7.91667px; transform-origin: 84.7px 7.91667px; \"\u003e move_vec:values 1:27 \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(14, 0, 255); border-block-start-color: rgb(14, 0, 255); border-bottom-color: rgb(14, 0, 255); border-inline-end-color: rgb(14, 0, 255); border-inline-start-color: rgb(14, 0, 255); border-left-color: rgb(14, 0, 255); border-right-color: rgb(14, 0, 255); border-top-color: rgb(14, 0, 255); caret-color: rgb(14, 0, 255); color: rgb(14, 0, 255); column-rule-color: rgb(14, 0, 255); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(14, 0, 255); perspective-origin: 15.4px 7.91667px; text-decoration: none; text-decoration-color: rgb(14, 0, 255); text-emphasis-color: rgb(14, 0, 255); transform-origin: 15.4px 7.91667px; \"\u003efor \u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 127.05px 7.91667px; transform-origin: 127.05px 7.91667px; \"\u003eUFDLBR U'F'D'L'B'R' U2F2D2L2B2R2 \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(196, 0, 0); border-block-start-color: rgb(196, 0, 0); border-bottom-color: rgb(196, 0, 0); border-inline-end-color: rgb(196, 0, 0); border-inline-start-color: rgb(196, 0, 0); border-left-color: rgb(196, 0, 0); border-right-color: rgb(196, 0, 0); border-top-color: rgb(196, 0, 0); caret-color: rgb(196, 0, 0); color: rgb(196, 0, 0); column-rule-color: rgb(196, 0, 0); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(196, 0, 0); perspective-origin: 57.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(196, 0, 0); text-emphasis-color: rgb(196, 0, 0); transform-origin: 57.75px 7.91667px; \"\u003eXYZX'Y'Z'X2Y2Z2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cul style=\"block-size: 122.6px; counter-reset: list-item 0; font-family: Helvetica, Arial, sans-serif; list-style-type: square; margin-block-end: 20px; margin-block-start: 10px; margin-bottom: 20px; margin-top: 10px; perspective-origin: 391px 61.3px; transform-origin: 391px 61.3px; margin-top: 10px; margin-bottom: 20px; \"\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 29.1833px 7.91667px; transform-origin: 29.1833px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eExample:\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 327.667px 7.91667px; transform-origin: 327.667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eIf the cube was randomized by [1 9] UD', one solution is [3 7] which are the complements in reverse order.\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 134.333px 7.91667px; transform-origin: 134.333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eScoring is Time in msec to solve 500 cubes\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 242.583px 7.91667px; transform-origin: 242.583px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eCube Moves X, Y, and Z do not constitute a move but are needed in the vector\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 187.1px 7.91667px; transform-origin: 187.1px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eA string to numeric value function is provided in the template\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 355.933px 7.91667px; transform-origin: 355.933px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eVerifications will be by executing your move vector against the provided Rubik and counting number of face moves.\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003c/ul\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: 374.067px 7.91667px; transform-origin: 374.067px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function rubik_rot_mini(mov,r) is provided in the template. Other functions are provided to re-orient the cube in Cody Challenge 931, Rubik's Mini-Cube.\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: 45.5333px 7.91667px; transform-origin: 45.5333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Challenge\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://www.mathworks.com/matlabcentral/cody/problems/931-rubik-s-mini-cube-solve-randomized-mini-cube-score-moves.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eChallenge 931 Rubik's Mini-Cube\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: 183.883px 7.91667px; transform-origin: 183.883px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e contains a 3D Mini-Cube Viewer for program development.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cul style=\"block-size: 122.6px; counter-reset: list-item 0; font-family: Helvetica, Arial, sans-serif; list-style-type: square; margin-block-end: 20px; margin-block-start: 10px; margin-bottom: 20px; margin-top: 10px; perspective-origin: 391px 61.3px; transform-origin: 391px 61.3px; margin-top: 10px; margin-bottom: 20px; \"\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"http://kociemba.org/cube.htm\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eCube Theory: 20-moves Any Cube\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"http://peter.stillhq.com/jasmine/rubikscubesolution.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGeneral Cube Info and Middle Layer\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"http://www.speedcubing.com/final_layer_print.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpeedCube Bottom Sequences\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 40.8667px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 20.4333px; text-align: left; transform-origin: 363px 20.4333px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 24.9px 7.91667px; transform-origin: 24.9px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe site\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 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://www.speedcubing.com/CubeSolver/MiniCubeSolver.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eMiniCube Solver\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 276.2px 7.91667px; transform-origin: 276.2px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e claims an outstanding 10 minutes to solve a randomized Mini-Cube. Matlab can achieve any Mini-Cube solution in \u0026lt; 497 usec, independent of moves on an i5/16GB machine.\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003c/ul\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: 218.883px 7.91667px; transform-origin: 218.883px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e(Note: Mini-Cube can use the full cube moves and ignore edge effects)\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: 85.9667px 7.91667px; transform-origin: 85.9667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eComing Soon: Matlab Tetris\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function solve_vec = rubik_solve_mini(r)\r\n% Expect Numeric representation of moves (1:27):\r\n% 1:27 are ufdlbr upfpdplpbprp u2f2d2l2b2r2 xyzxpypzpx2y2z2\r\n solve_vec=[]; \r\n\r\n% One path is to use Challenge 931's, Rubik's Mini Cube, initial Cube re-orientation provided in the template, followed by a solving algorithm that needs only RDB type moves\r\n% Loading an external data file is one method. First solve is not timed.\r\nend\r\n\r\nfunction r=rubik_rot_mini(mov,r)\r\n%mov is 1:27;  1-6 UFDLBR 7-12 U'F;D'L'B'R' 13-18 U2F2D2L2B2R2 \r\n%             19-27 XYZ X'Y'Z' X2Y2Z2  \r\n% X cube-R, Y cube-U,  Z cube-F\r\n%\r\n% r is a 24 element row vector\r\n% r output is a single row vector \r\n%\r\n% vector mov\r\n% r output is array of length(mov) x 24\r\n%\r\n% Perform Rubik Cube face rotations and cube rotations\r\n% L 1:4 U 5:8 F 9:12 D 13:16 B 17:20 R 21:24 \r\n% \r\npersistent vf\r\nif isempty(vf) %\r\nvf=[9 2 11 4 6 8 5 7 21 10 23 12 13 14 15 16 17 3 19 1 20 22 18 24 ; \r\n    1 2 13 15 5 4 7 3 10 12 9 11 22 14 21 16 17 18 19 20 6 8 23 24 ;\r\n    1 19 3 17 5 6 7 8 9 2 11 4 14 16 13 15 24 18 22 20 21 10 23 12 ;\r\n    2 4 1 3 17 18 7 8 5 6 11 12 9 10 15 16 13 14 19 20 21 22 23 24 ;\r\n    7 5 3 4 23 6 24 8 9 10 11 12 13 1 15 2 18 20 17 19 21 22 16 14 ;\r\n    1 2 3 4 5 6 11 12 9 10 15 16 13 14 19 20 17 18 7 8 22 24 21 23 ;\r\n    20 2 18 4 7 5 8 6 1 10 3 12 13 14 15 16 17 23 19 21 9 22 11 24 ;\r\n    1 2 8 6 5 21 7 22 11 9 12 10 3 14 4 16 17 18 19 20 15 13 23 24 ;\r\n    1 10 3 12 5 6 7 8 9 22 11 24 15 13 16 14 4 18 2 20 21 19 23 17 ;\r\n    3 1 4 2 9 10 7 8 13 14 11 12 17 18 15 16 5 6 19 20 21 22 23 24 ;\r\n    14 16 3 4 2 6 1 8 9 10 11 12 13 24 15 23 19 17 20 18 21 22 5 7 ;\r\n    1 2 3 4 5 6 19 20 9 10 7 8 13 14 11 12 17 18 15 16 23 21 24 22 ;\r\n    21 2 23 4 8 7 6 5 20 10 18 12 13 14 15 16 17 11 19 9 1 22 3 24 ;\r\n    1 2 22 21 5 15 7 13 12 11 10 9 8 14 6 16 17 18 19 20 4 3 23 24 ;\r\n    1 22 3 24 5 6 7 8 9 19 11 17 16 15 14 13 12 18 10 20 21 2 23 4 ;\r\n    4 3 2 1 13 14 7 8 17 18 11 12 5 6 15 16 9 10 19 20 21 22 23 24 ;\r\n    24 23 3 4 16 6 14 8 9 10 11 12 13 7 15 5 20 19 18 17 21 22 2 1 ;\r\n    1 2 3 4 5 6 15 16 9 10 19 20 13 14 7 8 17 18 11 12 24 23 22 21 ;\r\n    3 1 4 2 9 10 11 12 13 14 15 16 17 18 19 20 5 6 7 8 22 24 21 23 ;\r\n    9 10 11 12 6 8 5 7 21 22 23 24 15 13 16 14 4 3 2 1 20 19 18 17 ;\r\n    14 16 13 15 2 4 1 3 10 12 9 11 22 24 21 23 19 17 20 18 6 8 5 7 ;\r\n    2 4 1 3 17 18 19 20 5 6 7 8 9 10 11 12 13 14 15 16 23 21 24 22 ;\r\n    20 19 18 17 7 5 8 6 1 2 3 4 14 16 13 15 24 23 22 21 9 10 11 12 ;\r\n    7 5 8 6 23 21 24 22 11 9 12 10 3 1 4 2 18 20 17 19 15 13 16 14 ;\r\n    4 3 2 1 13 14 15 16 17 18 19 20 5 6 7 8 9 10 11 12 24 23 22 21 ;\r\n    21 22 23 24 8 7 6 5 20 19 18 17 16 15 14 13 12 11 10 9 1 2 3 4 ; \r\n    24 23 22 21 16 15 14 13 12 11 10 9 8 7 6 5 20 19 18 17 4 3 2 1 ];\r\nend\r\n\r\nr=r(vf(mov,:));\r\nend\r\n\r\n\r\nfunction move_vec=decode27_movestr_rev001(movestr)\r\n% Active character Inputs: UFDLBRXYZ, GQ are pre-processed\r\n% 1-6 UFDLBR 7-12 U'F;D'L'B'R' 13-18 U2F2D2L2B2R2 19-27 XYZX'Y'Z'X2Y2Z2\r\nmovestr=upper(movestr);\r\nmovestr=strrep(movestr,'''','P'); % simplify further searches\r\n\r\nmovestr=strrep(movestr,'UP',' 7 ');\r\nmovestr=strrep(movestr,'FP',' 8 ');\r\nmovestr=strrep(movestr,'DP',' 9 ');\r\nmovestr=strrep(movestr,'LP',' 10 ');\r\nmovestr=strrep(movestr,'BP',' 11 ');\r\nmovestr=strrep(movestr,'RP',' 12 ');\r\nmovestr=strrep(movestr,'U2',' 13 ');\r\nmovestr=strrep(movestr,'F2',' 14 ');\r\nmovestr=strrep(movestr,'D2',' 15 ');\r\nmovestr=strrep(movestr,'L2',' 16 ');\r\nmovestr=strrep(movestr,'B2',' 17 ');\r\nmovestr=strrep(movestr,'R2',' 18 ');\r\nmovestr=strrep(movestr,'U',' 1 ');\r\nmovestr=strrep(movestr,'F',' 2 ');\r\nmovestr=strrep(movestr,'D',' 3 ');\r\nmovestr=strrep(movestr,'L',' 4 ');\r\nmovestr=strrep(movestr,'B',' 5 ');\r\nmovestr=strrep(movestr,'R',' 6 ');\r\nmovestr=strrep(movestr,'XP',' 22 ');\r\nmovestr=strrep(movestr,'YP',' 23 ');\r\nmovestr=strrep(movestr,'ZP',' 24 ');\r\nmovestr=strrep(movestr,'X2',' 25 ');\r\nmovestr=strrep(movestr,'Y2',' 26 ');\r\nmovestr=strrep(movestr,'Z2',' 27 ');\r\nmovestr=strrep(movestr,'X',' 19 ');\r\nmovestr=strrep(movestr,'Y',' 20 ');\r\nmovestr=strrep(movestr,'Z',' 21 ');\r\n\r\nmove_vec=str2num(movestr);\r\n\r\nend % move_vec","test_suite":"%%\r\nfeval(@assignin,'caller','score',0);\r\n%%\r\nvf=[9 2 11 4 6 8 5 7 21 10 23 12 13 14 15 16 17 3 19 1 20 22 18 24 ; \r\n    1 2 13 15 5 4 7 3 10 12 9 11 22 14 21 16 17 18 19 20 6 8 23 24 ;\r\n    1 19 3 17 5 6 7 8 9 2 11 4 14 16 13 15 24 18 22 20 21 10 23 12 ;\r\n    2 4 1 3 17 18 7 8 5 6 11 12 9 10 15 16 13 14 19 20 21 22 23 24 ;\r\n    7 5 3 4 23 6 24 8 9 10 11 12 13 1 15 2 18 20 17 19 21 22 16 14 ;\r\n    1 2 3 4 5 6 11 12 9 10 15 16 13 14 19 20 17 18 7 8 22 24 21 23 ;\r\n    20 2 18 4 7 5 8 6 1 10 3 12 13 14 15 16 17 23 19 21 9 22 11 24 ;\r\n    1 2 8 6 5 21 7 22 11 9 12 10 3 14 4 16 17 18 19 20 15 13 23 24 ;\r\n    1 10 3 12 5 6 7 8 9 22 11 24 15 13 16 14 4 18 2 20 21 19 23 17 ;\r\n    3 1 4 2 9 10 7 8 13 14 11 12 17 18 15 16 5 6 19 20 21 22 23 24 ;\r\n    14 16 3 4 2 6 1 8 9 10 11 12 13 24 15 23 19 17 20 18 21 22 5 7 ;\r\n    1 2 3 4 5 6 19 20 9 10 7 8 13 14 11 12 17 18 15 16 23 21 24 22 ;\r\n    21 2 23 4 8 7 6 5 20 10 18 12 13 14 15 16 17 11 19 9 1 22 3 24 ;\r\n    1 2 22 21 5 15 7 13 12 11 10 9 8 14 6 16 17 18 19 20 4 3 23 24 ;\r\n    1 22 3 24 5 6 7 8 9 19 11 17 16 15 14 13 12 18 10 20 21 2 23 4 ;\r\n    4 3 2 1 13 14 7 8 17 18 11 12 5 6 15 16 9 10 19 20 21 22 23 24 ;\r\n    24 23 3 4 16 6 14 8 9 10 11 12 13 7 15 5 20 19 18 17 21 22 2 1 ;\r\n    1 2 3 4 5 6 15 16 9 10 19 20 13 14 7 8 17 18 11 12 24 23 22 21 ;\r\n    3 1 4 2 9 10 11 12 13 14 15 16 17 18 19 20 5 6 7 8 22 24 21 23 ;\r\n    9 10 11 12 6 8 5 7 21 22 23 24 15 13 16 14 4 3 2 1 20 19 18 17 ;\r\n    14 16 13 15 2 4 1 3 10 12 9 11 22 24 21 23 19 17 20 18 6 8 5 7 ;\r\n    2 4 1 3 17 18 19 20 5 6 7 8 9 10 11 12 13 14 15 16 23 21 24 22 ;\r\n    20 19 18 17 7 5 8 6 1 2 3 4 14 16 13 15 24 23 22 21 9 10 11 12 ;\r\n    7 5 8 6 23 21 24 22 11 9 12 10 3 1 4 2 18 20 17 19 15 13 16 14 ;\r\n    4 3 2 1 13 14 15 16 17 18 19 20 5 6 7 8 9 10 11 12 24 23 22 21 ;\r\n    21 22 23 24 8 7 6 5 20 19 18 17 16 15 14 13 12 11 10 9 1 2 3 4 ; \r\n    24 23 22 21 16 15 14 13 12 11 10 9 8 7 6 5 20 19 18 17 4 3 2 1 ];\r\n\r\n%r=r(vf(mov,:));  % Standard move, r=rubik_rot_min(mov,r);\r\n\r\nPass=1;\r\nr_fail=0;\r\n% Execute 500 cubes and verify completeness and count moves\r\n % initialize cube\r\n r(1:4)=0;     %Left   0 R\r\n r(5:8)=1;     %Up     1 W\r\n r(9:12)=2;    %Front  2 B\r\n r(13:16)=3;   %Down   3 Y\r\n r(17:20)=4;   %Back   4 G\r\n r(21:24)=5;   %Right  5 O\r\n rnorm=r;\r\n\r\nzcnt=500;\r\nsum_solve=0;\r\nmin_solve=1000;\r\nmax_solve=0;\r\nasolve=199;\r\nmix=40;\r\n\r\ntic\r\n\r\nfor cube_check=1:zcnt %zcnt\u003c100 %500\r\n %zcnt=zcnt+1;\r\n  r=rnorm;\r\n % Initial mix\r\n mov=randi(18,[mix,1]);\r\n for i=1:length(mov)  % Ignoring Move Undos since mix=40\r\n   r=r(vf(mov(i),:));\r\n end\r\n\r\n r_reset=r; % Used in assert\r\n\r\n solve_vec=rubik_solve_mini(r);\r\n\r\n for i=1:length(solve_vec) \r\n  r=r(vf(solve_vec(i),:));\r\n end\r\n\r\n  if all(r(1:4)==r(4)) \u0026\u0026 all(r(5:8)==r(8))  \u0026\u0026 all(r(9:12)==r(9)) \u0026\u0026 ...\r\n     all(r(13:16)==r(13))  \u0026\u0026 all(r(17:20)==r(17)) \u0026\u0026 all(r(21:24)==r(21))\r\n   solve_vec(solve_vec\u003e18)=[]; %   \r\n   lsolve=length(solve_vec);\r\n   if lsolve\u003e11, Pass=0;end % Length Rqmt\r\n   sum_solve=sum_solve+lsolve;\r\n   min_solve=min(min_solve,lsolve);\r\n   max_solve=max(max_solve,lsolve);\r\n   asolve=floor(sum_solve/zcnt);\r\n %  fprintf('Cube Solved Moves=%i  Avg Moves=%i min=%i  max=%i\\n',lsolve,asolve,min_solve,max_solve)\r\n  else % Deug info\r\n   Pass=0;\r\n   r_fail=r_reset;\r\n  % fprintf('\\n\\nCube NOT Solved???\\n\\n') \r\n  % fprintf('%i ',r); % Current ending data\r\n  % fprintf('\\n')\r\n  % fprintf('%i ',r_reset); % Starting Cube\r\n  end\r\n\r\nend % while of cubes\r\ntoc\r\n\r\nassert(isequal(Pass,1),sprintf('Max Len=%i \\n',max_solve)); % Length Exception\r\nassert(isequal(Pass,1),sprintf('%i ',r_fail)); % Output Non-Solved Cube Start\r\n\r\n%if Pass\r\n% feval(@assignin,'caller','score',min(100,floor(asolve)));\r\n%end\r\n\r\nfprintf('Moves: Avg %i   Min %i   Max %i\\n',asolve,min_solve,max_solve)\r\n\r\n%%\r\nvf=[9 2 11 4 6 8 5 7 21 10 23 12 13 14 15 16 17 3 19 1 20 22 18 24 ; \r\n    1 2 13 15 5 4 7 3 10 12 9 11 22 14 21 16 17 18 19 20 6 8 23 24 ;\r\n    1 19 3 17 5 6 7 8 9 2 11 4 14 16 13 15 24 18 22 20 21 10 23 12 ;\r\n    2 4 1 3 17 18 7 8 5 6 11 12 9 10 15 16 13 14 19 20 21 22 23 24 ;\r\n    7 5 3 4 23 6 24 8 9 10 11 12 13 1 15 2 18 20 17 19 21 22 16 14 ;\r\n    1 2 3 4 5 6 11 12 9 10 15 16 13 14 19 20 17 18 7 8 22 24 21 23 ;\r\n    20 2 18 4 7 5 8 6 1 10 3 12 13 14 15 16 17 23 19 21 9 22 11 24 ;\r\n    1 2 8 6 5 21 7 22 11 9 12 10 3 14 4 16 17 18 19 20 15 13 23 24 ;\r\n    1 10 3 12 5 6 7 8 9 22 11 24 15 13 16 14 4 18 2 20 21 19 23 17 ;\r\n    3 1 4 2 9 10 7 8 13 14 11 12 17 18 15 16 5 6 19 20 21 22 23 24 ;\r\n    14 16 3 4 2 6 1 8 9 10 11 12 13 24 15 23 19 17 20 18 21 22 5 7 ;\r\n    1 2 3 4 5 6 19 20 9 10 7 8 13 14 11 12 17 18 15 16 23 21 24 22 ;\r\n    21 2 23 4 8 7 6 5 20 10 18 12 13 14 15 16 17 11 19 9 1 22 3 24 ;\r\n    1 2 22 21 5 15 7 13 12 11 10 9 8 14 6 16 17 18 19 20 4 3 23 24 ;\r\n    1 22 3 24 5 6 7 8 9 19 11 17 16 15 14 13 12 18 10 20 21 2 23 4 ;\r\n    4 3 2 1 13 14 7 8 17 18 11 12 5 6 15 16 9 10 19 20 21 22 23 24 ;\r\n    24 23 3 4 16 6 14 8 9 10 11 12 13 7 15 5 20 19 18 17 21 22 2 1 ;\r\n    1 2 3 4 5 6 15 16 9 10 19 20 13 14 7 8 17 18 11 12 24 23 22 21 ;\r\n    3 1 4 2 9 10 11 12 13 14 15 16 17 18 19 20 5 6 7 8 22 24 21 23 ;\r\n    9 10 11 12 6 8 5 7 21 22 23 24 15 13 16 14 4 3 2 1 20 19 18 17 ;\r\n    14 16 13 15 2 4 1 3 10 12 9 11 22 24 21 23 19 17 20 18 6 8 5 7 ;\r\n    2 4 1 3 17 18 19 20 5 6 7 8 9 10 11 12 13 14 15 16 23 21 24 22 ;\r\n    20 19 18 17 7 5 8 6 1 2 3 4 14 16 13 15 24 23 22 21 9 10 11 12 ;\r\n    7 5 8 6 23 21 24 22 11 9 12 10 3 1 4 2 18 20 17 19 15 13 16 14 ;\r\n    4 3 2 1 13 14 15 16 17 18 19 20 5 6 7 8 9 10 11 12 24 23 22 21 ;\r\n    21 22 23 24 8 7 6 5 20 19 18 17 16 15 14 13 12 11 10 9 1 2 3 4 ; \r\n    24 23 22 21 16 15 14 13 12 11 10 9 8 7 6 5 20 19 18 17 4 3 2 1 ];\r\n\r\n%r=r(vf(mov,:));  % Standard move, r=rubik_rot_min(mov,r);\r\n\r\nPass=1;\r\nr_fail=0;\r\n% Execute 500 cubes and verify completeness and count moves\r\n % initialize cube\r\n r(1:4)=0;     %Left   0 R\r\n r(5:8)=1;     %Up     1 W\r\n r(9:12)=2;    %Front  2 B\r\n r(13:16)=3;   %Down   3 Y\r\n r(17:20)=4;   %Back   4 G\r\n r(21:24)=5;   %Right  5 O\r\n rnorm=r;\r\n\r\n for jrand=1:40  % Ignoring Move Undos since mix=40\r\n   r=r(vf(randi(18),:));\r\n end\r\n\r\n q=500;\r\n ra=zeros(q,24);\r\n for i=1:q\r\n  for jrand=1:10  % Ignoring Move Undos since base mix=40\r\n    r=r(vf(randi(18),:));\r\n  end\r\n % add 10 new moves to prior vector\r\n  ra(i,:)=r;\r\n end\r\n\r\n% The Time Trail section does not check accuracy, that is done above\r\nt0=clock;\r\nfor i=1:q\r\n solve_vec=rubik_solve_mini(ra(q,:));\r\nend\r\ndt=etime(clock,t0)*1000;\r\n\r\n%assert(isequal(find_fast(a,val(1)),find(a==val(1),1,'first')))\r\nfprintf('Your Time = %i msec\\n',floor(dt))\r\nfeval(@assignin,'caller','score',min(2000,floor(dt)));\r\n%   Performance Score","published":true,"deleted":false,"likes_count":5,"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":"2012-09-09T17:48:25.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-09-09T06:26:08.000Z","updated_at":"2025-11-17T16:25:58.000Z","published_at":"2012-09-09T16:33: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:r\u003e\u003cw:t\u003eThe Challenge is to Near or Optimally Solve a thoroughly scrambled Mini-Rubik's Cube(2x2x2).\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\u003eAny Mini-Cube can be solved in 11 or fewer Face Moves. There are only 3,674,160 unique cube positions, with only 2344 requiring the fulll 11 moves. Cube moves do not count.\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 Performance metric is cumulative Time to Solve 500 cubes (msec).\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\u003eA standard Mini-Rubik's Cube is shown in 3-D and also unfolded to identify the specific Tile-face/Vector numbering.\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 faces are White-Up / Red-Left / Blue-Front / Orange-Right / Yellow-Down / Green-Back (ULFRDB)\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\u003eMoves are denoted as F for clockwise rotation of the Front face. F'(or FP) is CCW and F2 is F twice. The provided function r_new=rubick_rot_mini(mov,r) implements moves 1-18: UFDLBRU'F'D'L'B'R'U2F2D2L2B2R2.\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=\\\"center\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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=\\\"center\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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=\\\"rId2\\\"/\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=\\\"center\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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=\\\"rId3\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Input: (rubik)\\n\\nrubik: row vector of size 24\\n(The cube started [L=0,U=1,F=2,D=3,B=4,R=5] and then receives forty face moves.\\n\\nOutput: move_vec (Numeric of moves to solve)\\n move_vec:values 1:27 for UFDLBR U'F'D'L'B'R' U2F2D2L2B2R2 XYZX'Y'Z'X2Y2Z2]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf the cube was randomized by [1 9] UD', one solution is [3 7] which are the complements in reverse order.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eScoring is Time in msec to solve 500 cubes\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCube Moves X, Y, and Z do not constitute a move but are needed in the vector\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eA string to numeric value function is provided in the template\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eVerifications will be by executing your move vector against the provided Rubik and counting number of face moves.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function rubik_rot_mini(mov,r) is provided in the template. Other functions are provided to re-orient the cube in Cody Challenge 931, Rubik's Mini-Cube.\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 Challenge\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.mathworks.com/matlabcentral/cody/problems/931-rubik-s-mini-cube-solve-randomized-mini-cube-score-moves.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge 931 Rubik's Mini-Cube\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contains a 3D Mini-Cube Viewer for program development.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://kociemba.org/cube.htm\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCube Theory: 20-moves Any Cube\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=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://peter.stillhq.com/jasmine/rubikscubesolution.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGeneral Cube Info and Middle Layer\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=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.speedcubing.com/final_layer_print.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpeedCube Bottom Sequences\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=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe site\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.speedcubing.com/CubeSolver/MiniCubeSolver.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMiniCube Solver\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e claims an outstanding 10 minutes to solve a randomized Mini-Cube. Matlab can achieve any Mini-Cube solution in \u0026lt; 497 usec, independent of moves on an i5/16GB machine.\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(Note: Mini-Cube can use the full cube moves and ignore edge effects)\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\u003eComing Soon: Matlab Tetris\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\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image2.png\",\"relationshipId\":\"rId2\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.gif\",\"relationshipId\":\"rId3\"}]},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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\",\"relationship\":null},{\"partUri\":\"/media/image2.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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\",\"relationship\":null},{\"partUri\":\"/media/image1.gif\",\"contentType\":\"image/gif\",\"content\":\"data:image/gif;base64,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\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":916,"title":"Rubik's Cube : Solve Ten Face Move - Speed Scoring","description":"A set of cubes will be scrambled with 10 Face moves.\r\nThe Challenge is to Solve all Cubes in 10 Moves or Less.\r\nScore will be by cumulative time of cubes 2 thru 11. The first cube may be used to load arrays but is still required to solve the cube.\r\nTen moves relates to worst case 18^10 configs - 3.6e12. In actuality there are only 2.4e11 cubes at 10 turns. Brute force might not work.\r\n\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/cube_small.gif\u003e\u003e\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/Cube_Map48_200.png\u003e\u003e\r\n\r\n\u003c\u003chttp://mathworks.com/matlabcentral/images/surf.gif\u003e\u003e\r\n\r\n\r\n.\r\n\r\n*Input:* Cube vector (1x48](see Figure) with values 0:5, eight of each\r\n\r\n*Output:* Rotation Vector of 10 or less values. Values range from 1:18\r\n\r\nValues 1:18 represent the standard cube moves:ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\r\n\r\n*Example:* Move of FL[2 4]  requires L'F' solv_vec=[10 8] at a minimum to solve\r\n\r\nCube=[00303003 44410110 11022222 22253533 53344444 11155555] as integer array\r\n\r\nsolv_vec=[10 8]\r\n\r\nActual solutions will be 8 to 10 values.\r\n\r\n\r\nThe Cube sites claim a capability of solving 10 moves in only 40 hrs.\r\nNot sure if they have Matlab, which can achieve 10 moves in \u003c0.15 sec. Matlab with a 16GB/i5 can solve 12 moves in \u003c 1.8 seconds. Unfortunately, Cody appears to have a memory/processing speed issue which makes the 11 and 12 move Challenges impossible.\r\n\r\n\u003chttp://kociemba.org/cube.htm Cube Org\u003e  and \u003chttp://www.speedcubing.com/CubeSolver/CubeSolver.html Speed Cubing\u003e\r\n\r\nThe next Cube Challenge will be to solve a fully randomized cube in as few moves as possible. With this next challenge I'll post my 3D-Cube Viewer Tool used for algorithm development.\r\n ","description_html":"\u003cp\u003eA set of cubes will be scrambled with 10 Face moves.\r\nThe Challenge is to Solve all Cubes in 10 Moves or Less.\r\nScore will be by cumulative time of cubes 2 thru 11. The first cube may be used to load arrays but is still required to solve the cube.\r\nTen moves relates to worst case 18^10 configs - 3.6e12. In actuality there are only 2.4e11 cubes at 10 turns. Brute force might not work.\u003c/p\u003e\u003cimg src=\"https://sites.google.com/site/razapor/matlab_cody/cube_small.gif\"\u003e\u003cimg src=\"https://sites.google.com/site/razapor/matlab_cody/Cube_Map48_200.png\"\u003e\u003cimg src=\"http://mathworks.com/matlabcentral/images/surf.gif\"\u003e\u003cp\u003e.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e Cube vector (1x48](see Figure) with values 0:5, eight of each\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e Rotation Vector of 10 or less values. Values range from 1:18\u003c/p\u003e\u003cp\u003eValues 1:18 represent the standard cube moves:ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample:\u003c/b\u003e Move of FL[2 4]  requires L'F' solv_vec=[10 8] at a minimum to solve\u003c/p\u003e\u003cp\u003eCube=[00303003 44410110 11022222 22253533 53344444 11155555] as integer array\u003c/p\u003e\u003cp\u003esolv_vec=[10 8]\u003c/p\u003e\u003cp\u003eActual solutions will be 8 to 10 values.\u003c/p\u003e\u003cp\u003eThe Cube sites claim a capability of solving 10 moves in only 40 hrs.\r\nNot sure if they have Matlab, which can achieve 10 moves in \u0026lt;0.15 sec. Matlab with a 16GB/i5 can solve 12 moves in \u0026lt; 1.8 seconds. Unfortunately, Cody appears to have a memory/processing speed issue which makes the 11 and 12 move Challenges impossible.\u003c/p\u003e\u003cp\u003e\u003ca href=\"http://kociemba.org/cube.htm\"\u003eCube Org\u003c/a\u003e  and \u003ca href=\"http://www.speedcubing.com/CubeSolver/CubeSolver.html\"\u003eSpeed Cubing\u003c/a\u003e\u003c/p\u003e\u003cp\u003eThe next Cube Challenge will be to solve a fully randomized cube in as few moves as possible. With this next challenge I'll post my 3D-Cube Viewer Tool used for algorithm development.\u003c/p\u003e","function_template":"function solv_vec = Rubik_Solve_10(cube)\r\n  solv_vec=[1 2 3 4 5 6 7 8 9 10 11];\r\n\r\nvf=[ 17 2 3 20 5 22 7 8 11 13 16 10 15 9 12 14 41 18 19 44 21 46 23 24 25 26 27 28 29 30 31 32 33 34 6 36 4 38 39 1 40 42 43 37 45 35 47 48; \r\n  1 2 3 4 5 25 28 30 9 10 8 12 7 14 15 6 19 21 24 18 23 17 20 22 43 26 27 42 29 41 31 32 33 34 35 36 37 38 39 40 11 13 16 44 45 46 47 48 ;\r\n  1 2 38 4 36 6 7 33 9 10 11 12 13 14 15 16 17 18 3 20 5 22 23 8 27 29 32 26 31 25 28 30 48 34 35 45 37 43 39 40 41 42 19 44 21 46 47 24 ;\r\n  3 5 8 2 7 1 4 6 33 34 35 12 13 14 15 16 9 10 11 20 21 22 23 24 17 18 19 28 29 30 31 32 25 26 27 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  14 12 9 4 5 6 7 8 46 10 11 47 13 48 15 16 17 18 19 20 21 22 23 24 25 26 1 28 2 30 31 3 35 37 40 34 39 33 36 38 41 42 43 44 45 32 29 27 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 22 23 24 17 18 19 20 21 30 31 32 25 26 27 28 29 38 39 40 33 34 35 36 37 14 15 16 43 45 48 42 47 41 44 46 ;\r\n  40 2 3 37 5 35 7 8 14 12 9 15 10 16 13 11 1 18 19 4 21 6 23 24 25 26 27 28 29 30 31 32 33 34 46 36 44 38 39 41 17 42 43 20 45 22 47 48 ;\r\n  1 2 3 4 5 16 13 11 9 10 41 12 42 14 15 43 22 20 17 23 18 24 21 19 6 26 27 7 29 8 31 32 33 34 35 36 37 38 39 40 30 28 25 44 45 46 47 48 ;\r\n  1 2 19 4 21 6 7 24 9 10 11 12 13 14 15 16 17 18 43 20 45 22 23 48 30 28 25 31 26 32 29 27 8 34 35 5 37 3 39 40 41 42 38 44 36 46 47 33 ;\r\n  6 4 1 7 2 8 5 3 17 18 19 12 13 14 15 16 25 26 27 20 21 22 23 24 33 34 35 28 29 30 31 32 9 10 11 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  27 29 32 4 5 6 7 8 3 10 11 2 13 1 15 16 17 18 19 20 21 22 23 24 25 26 48 28 47 30 31 46 38 36 33 39 34 40 37 35 41 42 43 44 45 9 12 14 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 38 39 40 17 18 19 20 21 14 15 16 25 26 27 28 29 22 23 24 33 34 35 36 37 30 31 32 46 44 41 47 42 48 45 43 ;\r\n  41 2 3 44 5 46 7 8 16 15 14 13 12 11 10 9 40 18 19 37 21 35 23 24 25 26 27 28 29 30 31 32 33 34 22 36 20 38 39 17 1 42 43 4 45 6 47 48 ;\r\n  1 2 3 4 5 43 42 41 9 10 30 12 28 14 15 25 24 23 22 21 20 19 18 17 16 26 27 13 29 11 31 32 33 34 35 36 37 38 39 40 8 7 6 44 45 46 47 48 ;\r\n  1 2 43 4 45 6 7 48 9 10 11 12 13 14 15 16 17 18 38 20 36 22 23 33 32 31 30 29 28 27 26 25 24 34 35 21 37 19 39 40 41 42 3 44 5 46 47 8 ;\r\n  8 7 6 5 4 3 2 1 25 26 27 12 13 14 15 16 33 34 35 20 21 22 23 24 9 10 11 28 29 30 31 32 17 18 19 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  48 47 46 4 5 6 7 8 32 10 11 29 13 27 15 16 17 18 19 20 21 22 23 24 25 26 14 28 12 30 31 9 40 39 38 37 36 35 34 33 41 42 43 44 45 3 2 1 ; \r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 30 31 32 17 18 19 20 21 38 39 40 25 26 27 28 29 14 15 16 33 34 35 36 37 22 23 24 48 47 46 45 44 43 42 41 ];\r\n\r\n% Basic move is implemented using the rot table\r\n% cube=cube(vf(mov,:)); % mov is 1:18 represents  ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\r\n% Note: only the 48 moving cube tiles are mapped\r\n% a solved cube displays as [000000001111111122222222333333334444444455555555]\r\n\r\nend","test_suite":"%%\r\n% Load max score of 50 seconds\r\nfeval(@assignin,'caller','score',50)\r\n%%\r\nglobal vf gPass\r\nPass=1;\r\n% Load rot map 18 moves : ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\r\n vf=[ 17 2 3 20 5 22 7 8 11 13 16 10 15 9 12 14 41 18 19 44 21 46 23 24 25 26 27 28 29 30 31 32 33 34 6 36 4 38 39 1 40 42 43 37 45 35 47 48; \r\n  1 2 3 4 5 25 28 30 9 10 8 12 7 14 15 6 19 21 24 18 23 17 20 22 43 26 27 42 29 41 31 32 33 34 35 36 37 38 39 40 11 13 16 44 45 46 47 48 ;\r\n  1 2 38 4 36 6 7 33 9 10 11 12 13 14 15 16 17 18 3 20 5 22 23 8 27 29 32 26 31 25 28 30 48 34 35 45 37 43 39 40 41 42 19 44 21 46 47 24 ;\r\n  3 5 8 2 7 1 4 6 33 34 35 12 13 14 15 16 9 10 11 20 21 22 23 24 17 18 19 28 29 30 31 32 25 26 27 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  14 12 9 4 5 6 7 8 46 10 11 47 13 48 15 16 17 18 19 20 21 22 23 24 25 26 1 28 2 30 31 3 35 37 40 34 39 33 36 38 41 42 43 44 45 32 29 27 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 22 23 24 17 18 19 20 21 30 31 32 25 26 27 28 29 38 39 40 33 34 35 36 37 14 15 16 43 45 48 42 47 41 44 46 ;\r\n  40 2 3 37 5 35 7 8 14 12 9 15 10 16 13 11 1 18 19 4 21 6 23 24 25 26 27 28 29 30 31 32 33 34 46 36 44 38 39 41 17 42 43 20 45 22 47 48 ;\r\n  1 2 3 4 5 16 13 11 9 10 41 12 42 14 15 43 22 20 17 23 18 24 21 19 6 26 27 7 29 8 31 32 33 34 35 36 37 38 39 40 30 28 25 44 45 46 47 48 ;\r\n  1 2 19 4 21 6 7 24 9 10 11 12 13 14 15 16 17 18 43 20 45 22 23 48 30 28 25 31 26 32 29 27 8 34 35 5 37 3 39 40 41 42 38 44 36 46 47 33 ;\r\n  6 4 1 7 2 8 5 3 17 18 19 12 13 14 15 16 25 26 27 20 21 22 23 24 33 34 35 28 29 30 31 32 9 10 11 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  27 29 32 4 5 6 7 8 3 10 11 2 13 1 15 16 17 18 19 20 21 22 23 24 25 26 48 28 47 30 31 46 38 36 33 39 34 40 37 35 41 42 43 44 45 9 12 14 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 38 39 40 17 18 19 20 21 14 15 16 25 26 27 28 29 22 23 24 33 34 35 36 37 30 31 32 46 44 41 47 42 48 45 43 ;\r\n  41 2 3 44 5 46 7 8 16 15 14 13 12 11 10 9 40 18 19 37 21 35 23 24 25 26 27 28 29 30 31 32 33 34 22 36 20 38 39 17 1 42 43 4 45 6 47 48 ;\r\n  1 2 3 4 5 43 42 41 9 10 30 12 28 14 15 25 24 23 22 21 20 19 18 17 16 26 27 13 29 11 31 32 33 34 35 36 37 38 39 40 8 7 6 44 45 46 47 48 ;\r\n  1 2 43 4 45 6 7 48 9 10 11 12 13 14 15 16 17 18 38 20 36 22 23 33 32 31 30 29 28 27 26 25 24 34 35 21 37 19 39 40 41 42 3 44 5 46 47 8 ;\r\n  8 7 6 5 4 3 2 1 25 26 27 12 13 14 15 16 33 34 35 20 21 22 23 24 9 10 11 28 29 30 31 32 17 18 19 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  48 47 46 4 5 6 7 8 32 10 11 29 13 27 15 16 17 18 19 20 21 22 23 24 25 26 14 28 12 30 31 9 40 39 38 37 36 35 34 33 41 42 43 44 45 3 2 1 ; \r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 30 31 32 17 18 19 20 21 38 39 40 25 26 27 28 29 14 15 16 33 34 35 36 37 22 23 24 48 47 46 45 44 43 42 41 ];\r\n\r\nr=ones(1,48,'uint8'); \r\n r(1:8)=0; %5;     %Left % straight numeric mapping\r\n r(9:16)=1; %2;   %Up\r\n r(17:24)=2; %3;   %Front\r\n r(25:32)=3; %4;   %Down\r\n r(33:40)=4; %6;   %Back\r\n r(41:48)=5; %7; %Right\r\n \r\nmix=10;\r\nrmov=randi(18,[mix,1]);\r\n for i=1:length(rmov) \r\n  if i\u003e1 % Eliminate move undos\r\n  % f2 f2 or f f'  or f' f\r\n   if (rmov(i)\u003e12 \u0026\u0026 rmov(i-1)==rmov(i))||(rmov(i-1)\u003c7 \u0026\u0026 rmov(i)==rmov(i-1)+6)||...\r\n       (rmov(i-1)\u003e6  \u0026\u0026 rmov(i)==rmov(i-1)-6)    \r\n    rmov(i)=rmov(i)+1;   % 1:17 map to 2:18  18 map to 1\r\n    if rmov(i)==19,rmov(i)=1;end\r\n   end\r\n  end\r\n  r=r(vf(rmov(i),:));\r\n end\r\n\r\n\r\n%assert(isequal(your_fcn_name(x),y_correct))\r\n\r\nt0=clock;\r\nsolv_vec=Rubik_Solve_10(r)\r\ndt=etime(clock,t0)\r\n% Dubious Code Check\r\nif all(r(1:8)==r(1)) \u0026\u0026 all(r(9:16)==r(9))  \u0026\u0026 all(r(17:24)==r(17)) \u0026\u0026 ...\r\n     all(r(25:32)==r(25))  \u0026\u0026 all(r(33:40)==r(33)) \u0026\u0026 all(r(41:48)==r(41))\r\n Pass=0;\r\nend\r\n\r\nPass=Pass \u0026\u0026 length(solv_vec\u003c11);\r\n\r\nlength(solv_vec)\r\nrt=r;\r\nfor i=1:length(solv_vec)\r\n   rt=rt(vf(solv_vec(i),:));\r\n end\r\n if all(rt(1:8)==rt(1)) \u0026\u0026 all(rt(9:16)==rt(9))  \u0026\u0026 all(rt(17:24)==rt(17)) \u0026\u0026 ...\r\n     all(rt(25:32)==rt(25))  \u0026\u0026 all(rt(33:40)==rt(33)) \u0026\u0026 all(rt(41:48)==rt(41))\r\n   fprintf('Cube Solved\\n')\r\n  Pass=Pass; % No change to Pass status\r\n else\r\n  fprintf('Cube Solve Failure\\n')\r\n  Pass=0;\r\n end\r\n\r\nassert(isequal(Pass,1))\r\n\r\ngPass=Pass;\r\n\r\n%%\r\n\r\nglobal gPass vf\r\nPass1=gPass;\r\n\r\n\r\nr=ones(1,48,'uint8'); \r\n r(1:8)=0; %5;     %Left % straight numeric mapping\r\n r(9:16)=1; %2;   %Up\r\n r(17:24)=2; %3;   %Front\r\n r(25:32)=3; %4;   %Down\r\n r(33:40)=4; %6;   %Back\r\n r(41:48)=5; %7; %Right\r\nrbase=r;\r\n\r\nsum_dt=0;\r\nfor cases=1:10 \r\n r=rbase;\r\n mix=10;\r\n rmov=randi(18,[mix,1]);\r\n  for i=1:length(rmov) \r\n   if i\u003e1 % Eliminate move undos\r\n   % f2 f2 or f f'  or f' f\r\n    if (rmov(i)\u003e12 \u0026\u0026 rmov(i-1)==rmov(i))||(rmov(i-1)\u003c7 \u0026\u0026 rmov(i)==rmov(i- 1)+6)||...\r\n       (rmov(i-1)\u003e6  \u0026\u0026 rmov(i)==rmov(i-1)-6)    \r\n     rmov(i)=rmov(i)+1;   % 1:17 map to 2:18  18 map to 1\r\n     if rmov(i)==19,rmov(i)=1;end\r\n    end\r\n   end\r\n   r=r(vf(rmov(i),:));\r\n  end\r\n\r\n\r\nt0=clock;\r\nsolv_vec=Rubik_Solve_10(r)\r\ndt=etime(clock,t0)\r\nsum_dt=sum_dt+dt;\r\n\r\nPass1=Pass1 \u0026\u0026 length(solv_vec\u003c11);\r\n\r\nrt=r;\r\nfor i=1:length(solv_vec)\r\n   rt=rt(vf(solv_vec(i),:));\r\n end\r\n if all(rt(1:8)==rt(1)) \u0026\u0026 all(rt(9:16)==rt(9))  \u0026\u0026 all(rt(17:24)==rt(17)) \u0026\u0026 ...\r\n     all(rt(25:32)==rt(25))  \u0026\u0026 all(rt(33:40)==rt(33)) \u0026\u0026 all(rt(41:48)==rt(41))\r\n   fprintf('Cube Solved\\n')\r\n  Pass1=Pass1; % No change to Pass1 status\r\n else\r\n  fprintf('Cube Solve Failure\\n')\r\n  Pass1=0;\r\n end\r\n\r\nend\r\n\r\n\r\n\r\nassert(isequal(Pass1,1))\r\n\r\nif Pass1\r\n feval(@assignin,'caller','score',floor(sum_dt))\r\nend\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":2,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-08-19T03:27:10.000Z","updated_at":"2012-08-26T03:40:30.000Z","published_at":"2012-08-19T07:18:19.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\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/media/image1.gif\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/media/image1.png\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId3\",\"target\":\"/media/image2.gif\"}],\"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\u003eA set of cubes will be scrambled with 10 Face moves. The Challenge is to Solve all Cubes in 10 Moves or Less. Score will be by cumulative time of cubes 2 thru 11. The first cube may be used to load arrays but is still required to solve the cube. Ten moves relates to worst case 18^10 configs - 3.6e12. In actuality there are only 2.4e11 cubes at 10 turns. Brute force might not work.\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:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId2\\\"/\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\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId3\\\"/\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\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\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 Cube vector (1x48](see Figure) with values 0:5, eight of each\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 Rotation Vector of 10 or less values. Values range from 1:18\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\u003eValues 1:18 represent the standard cube moves:ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\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 Move of FL[2 4] requires L'F' solv_vec=[10 8] at a minimum to solve\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\u003eCube=[00303003 44410110 11022222 22253533 53344444 11155555] as integer 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:t\u003esolv_vec=[10 8]\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\u003eActual solutions will be 8 to 10 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Cube sites claim a capability of solving 10 moves in only 40 hrs. Not sure if they have Matlab, which can achieve 10 moves in \u0026lt;0.15 sec. Matlab with a 16GB/i5 can solve 12 moves in \u0026lt; 1.8 seconds. Unfortunately, Cody appears to have a memory/processing speed issue which makes the 11 and 12 move Challenges impossible.\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:hyperlink w:docLocation=\\\"http://kociemba.org/cube.htm\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCube Org\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and\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.speedcubing.com/CubeSolver/CubeSolver.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpeed Cubing\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:t\u003eThe next Cube Challenge will be to solve a fully randomized cube in as few moves as possible. With this next challenge I'll post my 3D-Cube Viewer Tool used for algorithm development.\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\"},{\"partUri\":\"/media/image1.gif\",\"contentType\":\"image/gif\",\"content\":\"data:image/gif;base64,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\"},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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\"},{\"partUri\":\"/media/image2.gif\",\"contentType\":\"image/gif\",\"content\":\"data:image/gif;base64,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\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":1836,"title":"Negation and new variables","description":"Inspired by Problem 1827 by Andrew Newell.\r\n\r\nWrite a function that has the following property: \r\n\r\n(x~=y)\r\n\r\nneg3(x)=x;\r\n\r\nneg3(y)=y;\r\n\r\nneg3(x)=-x;\r\n\r\nneg3(y)=-y;\r\n\r\n...\r\n\r\nThe test suite is simple. The goal is just to obtain a general method.","description_html":"\u003cp\u003eInspired by Problem 1827 by Andrew Newell.\u003c/p\u003e\u003cp\u003eWrite a function that has the following property:\u003c/p\u003e\u003cp\u003e(x~=y)\u003c/p\u003e\u003cp\u003eneg3(x)=x;\u003c/p\u003e\u003cp\u003eneg3(y)=y;\u003c/p\u003e\u003cp\u003eneg3(x)=-x;\u003c/p\u003e\u003cp\u003eneg3(y)=-y;\u003c/p\u003e\u003cp\u003e...\u003c/p\u003e\u003cp\u003eThe test suite is simple. The goal is just to obtain a general method.\u003c/p\u003e","function_template":"function y = neg3(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nx = 1;\r\ny1=-1;\r\nneg3(neg3(x));\r\nassert(isequal(ans,y1))\r\n\r\n%%\r\nx=2;\r\ny=3;\r\nz=4;\r\nneg3(x);\r\nassert(isequal(ans,2))\r\nneg3(y);\r\nassert(isequal(ans,3))\r\nneg3(x);\r\nassert(isequal(ans,-2))\r\nneg3(z);\r\nassert(isequal(ans,4))\r\nneg3(x);\r\nassert(isequal(ans,2))\r\nneg3(z);\r\nassert(isequal(ans,-4))\r\n\r\n%%\r\nx=0;\r\ny=10;\r\nneg3(x);\r\nassert(isequal(ans,0))\r\nneg3(x);\r\nassert(isequal(ans,0))\r\nneg3(y);\r\nassert(isequal(ans,10))\r\nneg3(y);\r\nassert(isequal(ans,-10))","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":5390,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":21,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-08-19T17:05:10.000Z","updated_at":"2013-08-19T17:18:06.000Z","published_at":"2013-08-19T17:09:04.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\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"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\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\u003eInspired by Problem 1827 by Andrew Newell.\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\u003eWrite a function that has the following property:\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(x~=y)\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\u003eneg3(x)=x;\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\u003eneg3(y)=y;\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\u003eneg3(x)=-x;\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\u003eneg3(y)=-y;\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:t\u003eThe test suite is simple. The goal is just to obtain a general method.\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":815,"title":"Persistent Usage","description":"This Challenge is to implement the Matlab Persistent variable capability.\r\nGiven a sequence of Calls to a function return the current input summed with the prior function call input.\r\nOn the first call return the current input.\r\nInput: a (value)\r\nOutput: b where b=a+\"previous a\"\r\nExample:\r\n    Input  Sequence: 1 2 -3 3 5\r\n    Output Sequence: 1 3 -1 0 8\r\nRelated Challenge is Global.","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: 252.867px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 126.433px; transform-origin: 407px 126.433px; vertical-align: baseline; \"\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: 225px 8px; transform-origin: 225px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to implement the Matlab Persistent variable capability.\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: 329px 8px; transform-origin: 329px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eGiven a sequence of Calls to a function return the current input summed with the prior function call input.\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: 124.5px 8px; transform-origin: 124.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eOn the first call return the current input.\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: 20px 8px; transform-origin: 20px 8px; 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: 30px 8px; transform-origin: 30px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e a (value)\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: 26px 8px; transform-origin: 26px 8px; 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: 83px 8px; transform-origin: 83px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e b where b=a+\"previous a\"\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: 31.5px 8px; transform-origin: 31.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eExample:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 40.8667px; 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 20.4333px; transform-origin: 404px 20.4333px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 124px 8.5px; tab-size: 4; transform-origin: 124px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 44px 8.5px; transform-origin: 44px 8.5px; \"\u003e    Input  \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 80px 8.5px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 80px 8.5px; \"\u003eSequence: 1 2 -3 3 5\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 124px 8.5px; tab-size: 4; transform-origin: 124px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 44px 8.5px; transform-origin: 44px 8.5px; \"\u003e    Output \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 80px 8.5px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 80px 8.5px; \"\u003eSequence: 1 3 -1 0 8\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: 65.5px 8px; transform-origin: 65.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eRelated Challenge is\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"/#null\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGlobal\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: 2px 8px; transform-origin: 2px 8px; 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 [b] = Running_2pt_sum(a)\r\n% Return sum of \"a\" and prior \"a\" value.\r\n b=a;\r\nend","test_suite":"%%\r\na=1;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,1))\r\n%%\r\na=3;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,4))\r\n%%\r\na=-4;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,-1))\r\n%%\r\na=12;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,8))\r\n%%\r\na=-4;\r\n[b] = Running_2pt_sum(a);\r\nassert(isequal(b,8))\r\n\r\n","published":true,"deleted":false,"likes_count":4,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":47,"test_suite_updated_at":"2021-09-06T18:20:28.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-07-05T04:55:05.000Z","updated_at":"2025-11-10T02:41:09.000Z","published_at":"2012-10-27T16:37:24.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to implement the Matlab Persistent variable capability.\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\u003eGiven a sequence of Calls to a function return the current input summed with the prior function call input.\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\u003eOn the first call return the current input.\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 (value)\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 where b=a+\\\"previous a\\\"\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\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[    Input  Sequence: 1 2 -3 3 5\\n    Output Sequence: 1 3 -1 0 8]]\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\u003eRelated Challenge is\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=\\\"\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGlobal\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\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":2443,"title":"Clear functions with the same name in different packages independently","description":"See the test suite.\r\n\r\nN.B.: Overwriting files or functions a.k.a. cheating is not necessary.","description_html":"\u003cp\u003eSee the test suite.\u003c/p\u003e\u003cp\u003eN.B.: Overwriting files or functions a.k.a. cheating is not necessary.\u003c/p\u003e","function_template":"function y=your_code(x)\r\ny=1;","test_suite":"%%\r\n% Create necessary files\r\nmkdir +counter1\r\nmkdir +counter2\r\nfid = fopen('+counter1/count.m', 'w');fprintf(fid, 'function y=count,persistent x;if isempty(x), x=0; end,x=x+1;y=x;');fclose(fid);\r\nfid = fopen('+counter2/count.m', 'w');fprintf(fid, 'function y=count,persistent x;if isempty(x), x=0; end,x=x+1;y=x;');fclose(fid);\r\nrehash;\r\n\r\n% Start counting with Counter 1\r\ncounter1.count; %1\r\ncounter1.count; %2\r\ncounter1.count; %3\r\ncounter1.count; %4\r\ncounter1.count; %5\r\ncounter1.count; %6\r\ncounter1.count; %7\r\n\r\n% Start counting with Counter 2\r\ncounter2.count; %1\r\ncounter2.count; %2\r\ncounter2.count; %3\r\ncounter2.count; %4\r\n\r\n% Your code goes here\r\nyour_code;\r\n\r\n% Check if your solution is correct\r\n%{  \r\n\r\n \"I would prefer even to fail with honor than win by cheating.\"\r\n\r\n                                                                Sophocles\r\n\r\n%}\r\n\r\n% Restart counting with Counter 1\r\nassert(isequal(counter1.count,1))\r\nassert(isequal(counter1.count,2))\r\nassert(isequal(counter1.count,3))\r\nassert(isequal(counter1.count,4))\r\nassert(isequal(counter1.count,5))\r\nassert(isequal(counter1.count,6))\r\nassert(isequal(counter1.count,7))\r\n\r\n% Keep counting with Counter 2\r\nassert(isequal(counter2.count,5))\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":7,"created_by":5925,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":10,"test_suite_updated_at":"2014-07-18T16:28:02.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2014-07-16T18:16:51.000Z","updated_at":"2014-07-18T16:28:02.000Z","published_at":"2014-07-16T18:29:54.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\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"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\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\u003eSee the test suite.\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\u003eN.B.: Overwriting files or functions a.k.a. cheating is not necessary.\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":42805,"title":"GJam 2016 Rd1A: Rank and File (small)","description":"This Challenge is derived from \u003chttp://code.google.com/codejam/contest/4304486/dashboard#s=p1 GJam Rd1A 2016 Rank and File\u003e. This is the small case with max N=10\r\n\r\nThe GJam story is a matrix H(NxN) which has every row and column increasing. Each row and column is recorded on strips. The strips get scrambled and one gets incinerated. The goal is to reconstruct the missing increasing vector strip. \r\n\r\n*Input:* [M], matrix of size [2*N-1,N] of all rows and columns of H except one\r\n\r\n*Output:* [V], the missing vector of H not included in M\r\n\r\n*Examples:* [M] [V] \r\n\r\n  [1 2 3;2 3 5;3 5 6;2 3 4;1 2 3] [3 4 6] \r\n  [22 222;2 22;2 22][22 222] \r\n \r\nGJam 2016 Rd1A Matlab results show three qualifiers for Rd2.\r\n\r\n*Theory:* With max N=10 it is possible to brute force the 50 puzzles. Persistent may be useful with the usage of nchoosek which may be the critical path. \u003chttps://www.go-hero.net/jam/16/solutions/1/2/MATLAB GJam Rank_file solutions\u003e. Writing the general solution for N=50 is better for the contest. The min corner or the max corner will always be available. Evolving solution, no guessing, is possible. OR one can observe an inherent mathematical result to create a 1-line solution.","description_html":"\u003cp\u003eThis Challenge is derived from \u003ca href = \"http://code.google.com/codejam/contest/4304486/dashboard#s=p1\"\u003eGJam Rd1A 2016 Rank and File\u003c/a\u003e. This is the small case with max N=10\u003c/p\u003e\u003cp\u003eThe GJam story is a matrix H(NxN) which has every row and column increasing. Each row and column is recorded on strips. The strips get scrambled and one gets incinerated. The goal is to reconstruct the missing increasing vector strip.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e [M], matrix of size [2*N-1,N] of all rows and columns of H except one\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e [V], the missing vector of H not included in M\u003c/p\u003e\u003cp\u003e\u003cb\u003eExamples:\u003c/b\u003e [M] [V]\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e[1 2 3;2 3 5;3 5 6;2 3 4;1 2 3] [3 4 6] \r\n[22 222;2 22;2 22][22 222] \r\n\u003c/pre\u003e\u003cp\u003eGJam 2016 Rd1A Matlab results show three qualifiers for Rd2.\u003c/p\u003e\u003cp\u003e\u003cb\u003eTheory:\u003c/b\u003e With max N=10 it is possible to brute force the 50 puzzles. Persistent may be useful with the usage of nchoosek which may be the critical path. \u003ca href = \"https://www.go-hero.net/jam/16/solutions/1/2/MATLAB\"\u003eGJam Rank_file solutions\u003c/a\u003e. Writing the general solution for N=50 is better for the contest. The min corner or the max corner will always be available. Evolving solution, no guessing, is possible. OR one can observe an inherent mathematical result to create a 1-line solution.\u003c/p\u003e","function_template":"function v = rank_file(m)\r\n% H a rank/file array that has all columns and rows increasing\r\n% m  matrix [2*N-1,N] of scrambled rows/columns original H [NxN] array\r\n% v  missing vector of H\r\n v=0;\r\nend","test_suite":"%%\r\ntic\r\nm=[1 2 3 2 1 2 3 5 3 2 3 5 6 4 3 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[3 4 6 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[22 2 2 222 22 22 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[22 222 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[11 3 6 9 10 6 3 14 6 7 11 11 7 6 16 9 11 15 19 10 8 22 11 14 19 22 11 10 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[8 10 15 16 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[4 1 23 6 3 1 6 2 5 5 2 22 4 9 2 25 11 8 2 11 7 10 10 7 24 9 13 3 26 15 12 3 15 8 14 14 8 27 13 16 4 29 18 13 4 18 9 17 17 9 28 16 17 5 30 20 14 5 20 10 19 19 10 31 17 18 6 32 21 15 6 21 11 20 20 11 33 18 28 23 34 33 27 22 32 24 31 30 25 34 29 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[3 8 12 13 14 15 26 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 5 3 8 6 9 46 1 2 7 8 2 3 4 1 9 47 6 5 15 13 11 16 14 17 49 2 10 15 16 10 11 12 2 17 48 14 13 22 20 18 23 21 24 50 3 11 22 23 11 18 19 3 24 51 21 20 28 26 19 29 27 30 52 4 12 28 29 12 19 25 4 30 53 27 26 33 31 20 34 32 35 54 5 13 33 34 13 20 26 5 35 55 32 31 37 32 21 38 36 39 57 6 14 37 38 14 21 27 6 39 56 36 32 40 33 22 41 37 42 59 7 15 40 41 15 22 28 7 42 58 37 33 41 34 23 43 38 44 60 8 16 41 43 16 23 29 8 44 61 38 34 42 35 24 44 39 45 62 9 17 42 44 17 24 30 9 45 63 39 35 58 55 50 61 57 62 64 47 48 59 60 49 51 52 46 63 64 56 54 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[4 12 19 25 26 27 28 29 30 53 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[22 2 22 222 22 222 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[2 22 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 2 6 6 4 8 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[4 8 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 3 10 9 4 8 9 6 2 6 8 4 13 11 11 4 6 14 11 6 10 13 10 3 7 12 8 15 12 15 6 7 17 12 8 11 15 11 4 9 14 9 16 14 18 8 10 18 14 10 12 17 12 6 11 15 11 17 15 20 9 11 20 16 12 15 19 14 8 14 16 12 19 18 21 11 12 22 19 13 17 20 15 9 15 18 14 21 20 24 13 15 24 20 14 18 21 17 10 17 19 16 24 22 26 14 17 25 21 15 20 23 20 11 18 22 19 26 24 28 ];\r\nm=reshape(m,[],8);\r\nv=rank_file(m);\r\nvexp=[14 17 19 20 22 23 25 28 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 6 4 6 8 8 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[2 4 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 6 1 1 4 3 2 4 8 2 2 6 5 4 5 9 3 4 8 8 6 6 12 5 6 10 9 8 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[5 6 10 12 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[8 4 10 9 1 8 3 2 2 4 1 6 6 9 3 5 10 7 7 9 5 11 10 2 9 4 3 3 5 2 7 7 10 4 6 11 8 8 10 6 12 11 3 10 5 4 4 6 3 8 8 11 5 7 12 9 9 11 7 13 12 4 11 6 5 5 7 4 9 9 12 6 8 13 10 10 12 8 14 13 5 12 7 6 6 8 5 10 10 13 7 9 14 11 11 13 9 15 14 6 13 8 7 7 9 6 11 11 14 8 10 15 12 12 14 10 16 15 7 14 9 8 8 10 7 12 12 15 9 11 16 13 13 15 11 17 16 8 15 10 9 9 11 8 13 13 16 10 12 17 14 14 16 12 18 17 9 16 11 10 10 12 9 14 14 17 11 13 18 15 15 17 13 19 18 10 17 12 11 11 13 10 15 15 18 12 14 19 16 16 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[5 6 7 8 9 10 11 12 13 14 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 5 7 2 9 7 8 4 4 4 7 9 4 11 8 9 6 6 5 8 10 5 12 9 11 7 7 7 10 12 7 13 12 14 9 8 8 12 14 9 16 13 16 11 9 ];\r\nm=reshape(m,[],5);\r\nv=rank_file(m);\r\nvexp=[5 7 8 9 11 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 29 22 3 15 36 43 4 2 6 1 8 1 14 30 23 10 16 37 44 11 9 13 8 9 2 21 31 24 17 17 38 45 18 16 20 15 10 3 28 32 25 24 18 39 46 25 23 27 22 11 4 35 33 26 31 19 40 47 32 30 34 29 12 5 42 34 27 38 20 41 48 39 37 41 36 13 6 49 35 28 45 21 42 49 46 44 48 43 14 7 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[5 12 19 26 33 40 47 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[3 1 1 3 2 2 4 4 2 2 4 3 3 5 5 3 3 5 4 4 6 6 4 4 6 5 5 7 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[4 5 6 7 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[6 6 7 2 1 4 5 3 2 7 3 1 5 7 7 8 3 2 5 6 4 3 8 4 2 6 8 8 9 4 3 6 7 5 4 9 5 3 7 9 9 10 5 4 7 8 6 5 10 6 4 8 10 10 11 6 5 8 9 7 6 11 7 5 9 11 11 12 7 6 9 10 8 7 12 8 6 10 12 12 13 8 7 10 11 9 8 13 9 7 11 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[4 5 6 7 8 9 10 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[3 5 71 8 81 9 1 91 11 7 1 21 41 10 6 51 31 61 4 13 15 72 18 82 19 2 92 12 17 11 22 42 20 16 52 32 62 14 23 25 73 28 83 29 3 93 13 27 21 23 43 30 26 53 33 63 24 33 35 74 38 84 39 4 94 14 37 31 24 44 40 36 54 34 64 34 43 45 75 48 85 49 5 95 15 47 41 25 45 50 46 55 35 65 44 53 55 76 58 86 59 6 96 16 57 51 26 46 60 56 56 36 66 54 63 65 77 68 87 69 7 97 17 67 61 27 47 70 66 57 37 67 64 73 75 78 78 88 79 8 98 18 77 71 28 48 80 76 58 38 68 74 83 85 79 88 89 89 9 99 19 87 81 29 49 90 86 59 39 69 84 93 95 80 98 90 99 10 100 20 97 91 30 50 100 96 60 40 70 94 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[2 12 22 32 42 52 62 72 82 92 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 7 3 8 1 1 2 4 10 5 9 2 2 4 5 12 6 11 3 3 5 9 13 12 13 8 7 10 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[3 5 6 11 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[1 2 3 3 1 2 3 4 4 2 3 4 5 5 3 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[2 3 4 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 7 6 3 1 1 3 10 9 7 6 3 3 6 13 12 9 7 6 6 8 14 14 12 10 7 7 9 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[6 8 9 13 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[13 3 1 1 9 2 4 14 7 5 2 10 6 8 15 11 9 3 11 10 12 16 15 13 4 12 14 16 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[5 6 7 8 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[9 15 14 4 8 13 12 10 2 3 6 4 2 5 10 11 6 9 8 12 19 18 6 10 18 16 14 4 5 7 5 3 7 14 16 9 12 11 13 21 19 9 12 20 18 16 6 7 9 6 4 10 16 17 11 13 12 17 24 21 12 13 22 20 19 8 10 10 7 5 13 18 20 14 14 16 18 25 22 13 14 23 21 20 9 12 11 9 6 14 19 22 15 15 17 22 26 26 16 16 25 25 23 10 14 12 11 8 18 20 23 19 17 20 25 27 29 17 17 26 28 26 11 16 13 12 9 20 22 25 22 18 23 26 28 32 20 19 27 30 27 13 18 16 14 10 22 23 26 23 20 25 27 32 33 21 20 30 32 28 15 19 18 16 12 24 25 28 25 21 26 31 33 36 22 21 32 34 32 16 21 19 18 14 26 26 29 28 22 29 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[16 21 22 26 28 29 31 32 34 36 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 2 6 3 4 4 3 7 5 5 6 5 8 7 6 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[5 6 8 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[5 3 11 7 2 9 9 5 12 3 7 8 6 8 4 4 1 8 5 15 9 5 13 14 9 16 6 12 13 10 11 6 7 2 9 6 17 10 6 15 18 11 18 8 14 16 12 13 8 10 3 11 7 18 12 8 16 19 13 20 9 16 17 15 14 10 11 4 13 9 19 14 9 17 20 14 21 10 18 19 17 16 11 12 5 15 10 21 17 11 19 22 16 22 13 19 20 18 18 12 14 6 16 12 23 18 13 21 24 17 25 15 21 23 19 19 14 16 7 17 13 25 19 15 23 26 19 26 17 23 25 21 20 16 18 8 19 14 26 20 16 24 28 21 28 18 25 26 22 22 18 20 9 ];\r\nm=reshape(m,[],9);\r\nv=rank_file(m);\r\nvexp=[1 3 4 5 7 8 9 11 12 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[9 11 5 14 1 13 8 2 3 11 1 7 10 8 13 5 6 11 15 7 17 3 17 13 5 5 13 2 8 14 10 15 9 11 12 19 8 19 5 20 15 7 7 14 3 10 17 11 16 11 13 16 21 11 21 7 23 16 8 9 17 5 13 19 14 18 13 15 17 23 13 22 8 25 18 10 11 18 6 15 21 16 19 14 16 19 24 15 25 9 26 19 11 13 21 8 16 23 18 23 16 17 23 25 17 28 11 28 21 13 14 24 10 19 24 21 26 17 18 24 27 19 30 13 29 23 15 15 25 11 21 26 23 27 18 19 26 30 20 32 14 32 25 17 17 28 13 23 28 25 29 21 22 ];\r\nm=reshape(m,[],9);\r\nv=rank_file(m);\r\nvexp=[3 7 8 10 11 12 14 16 19 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[111 125 48 41 86 24 61 24 35 119 70 63 49 131 136 102 60 93 49 86 35 51 133 128 115 51 156 162 111 94 119 61 94 41 86 157 139 118 60 166 191 129 119 125 86 105 46 93 176 153 131 82 189 212 189 156 129 111 111 48 131 204 203 192 102 192 237 204 157 131 119 118 63 133 209 224 209 115 203 244 212 162 153 125 139 70 136 224 244 237 128 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[46 82 105 125 166 176 191 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[4 2 6 8 4 8 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[2 6 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[9 5 12 8 5 11 8 17 11 9 17 12 20 14 13 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[13 14 20 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[1 3 1 2 2 2 4 2 3 3 3 5 3 4 4 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[3 4 5 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[3 10 13 7 6 12 11 6 12 18 10 10 16 14 10 18 19 12 14 19 18 12 19 22 16 18 22 19 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[3 7 11 13 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[16 18 23 12 1 19 4 13 11 8 11 15 17 10 1 3 19 22 23 26 15 3 26 5 18 12 11 15 19 21 13 4 5 23 23 24 28 17 7 29 9 20 15 13 19 20 22 14 8 11 25 25 29 30 21 10 31 13 23 19 14 20 21 25 19 11 12 28 30 35 35 23 11 36 15 27 20 19 23 26 31 21 12 15 34 33 36 40 26 15 38 19 29 21 20 27 29 32 23 13 18 37 37 38 41 30 16 42 22 33 25 23 31 32 37 25 17 21 39 38 41 44 34 19 46 23 37 28 25 35 36 39 29 18 23 41 42 44 49 35 23 49 26 40 30 28 36 38 41 31 19 26 46 ];\r\nm=reshape(m,[],9);\r\nv=rank_file(m);\r\nvexp=[7 9 13 15 17 20 22 24 29 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[4 2 2 8 4 6 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[6 8 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[8 22 22 11 20 3 9 8 18 16 10 14 13 13 29 33 17 28 8 15 13 28 23 20 21 24 17 34 34 22 32 9 22 15 31 29 24 27 26 21 39 42 24 35 10 27 20 38 31 29 29 34 23 45 45 26 44 13 29 24 43 39 31 34 39 28 52 53 31 48 18 32 28 48 43 35 38 44 29 56 56 34 53 22 34 33 52 45 39 42 45 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[3 8 11 14 16 20 22 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[65 76 101 87 2 90 117 2 65 35 36 10 44 103 81 45 40 86 22 84 98 144 134 10 120 168 22 98 43 40 24 61 137 102 79 52 127 24 99 108 147 144 35 136 179 36 121 54 54 40 74 161 132 96 74 137 43 119 141 157 186 44 142 188 40 144 74 74 52 92 208 169 113 92 184 61 151 159 191 216 45 168 213 53 168 88 96 73 97 230 174 137 113 199 79 190 201 222 217 65 211 236 65 190 121 99 98 144 236 205 168 119 206 84 205 208 260 229 76 235 267 81 201 132 108 102 169 246 208 174 141 224 98 206 224 268 265 90 259 274 86 211 137 136 127 184 267 235 199 142 259 120 217 229 272 272 101 265 281 87 222 144 147 134 186 294 260 216 157 268 144 236 246 294 281 117 267 302 103 236 161 179 137 208 302 267 230 188 274 168 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[53 73 88 97 137 151 159 168 191 213 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[18 9 15 18 3 13 21 7 6 9 5 11 12 15 10 19 12 18 20 5 15 22 8 7 11 7 14 14 17 12 27 17 21 24 7 22 27 14 8 14 11 19 18 24 17 30 20 23 25 9 24 29 17 12 17 12 21 21 27 20 33 21 25 26 12 27 31 19 14 18 14 22 22 28 21 34 24 29 31 15 29 32 22 18 21 15 25 27 32 23 35 27 32 34 18 31 36 24 20 24 17 26 28 34 25 38 30 34 35 21 32 38 27 22 27 19 31 33 36 29 ];\r\nm=reshape(m,[],8);\r\nv=rank_file(m);\r\nvexp=[3 6 9 10 11 13 15 18 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[2 2 4 4 4 5 ];\r\nm=reshape(m,[],2);\r\nv=rank_file(m);\r\nvexp=[4 5 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 14 4 13 10 8 5 10 7 14 15 5 14 20 18 11 12 11 15 22 7 18 24 20 12 15 14 18 25 8 24 28 24 14 20 18 22 30 10 28 30 25 15 24 20 ];\r\nm=reshape(m,[],5);\r\nv=rank_file(m);\r\nvexp=[4 7 10 13 14 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[7 3 10 7 9 14 3 9 7 15 14 11 19 6 14 9 19 17 17 20 7 15 14 24 20 19 24 10 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[6 9 11 19 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[14 7 33 34 30 19 29 23 15 30 9 3 18 3 16 7 25 25 21 18 9 39 35 37 22 32 24 19 33 11 7 21 7 17 9 27 30 23 23 11 45 43 40 27 36 27 24 38 16 12 25 9 20 15 35 35 32 24 18 48 44 43 28 38 31 27 39 20 16 28 14 24 17 37 36 36 28 19 54 46 50 34 46 34 29 41 25 18 29 15 27 21 38 41 37 31 22 57 50 51 37 50 37 34 45 27 23 34 19 28 24 43 46 41 36 23 60 57 56 46 54 41 41 56 35 25 37 21 36 30 53 49 49 38 27 64 66 58 50 55 43 46 61 36 29 38 25 37 32 55 53 54 43 33 67 71 66 51 61 45 50 66 40 30 41 30 39 37 58 56 56 48 35 73 73 71 57 66 50 54 67 45 33 46 34 44 39 64 57 60 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[12 15 16 23 24 27 32 35 38 43 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[11 8 12 6 3 3 11 13 7 8 4 14 12 17 8 4 4 14 16 9 10 5 16 15 19 11 6 7 17 18 11 14 9 21 18 22 15 8 8 19 22 14 18 12 22 19 24 16 11 11 22 23 17 21 14 23 22 26 19 13 12 24 26 18 22 17 ];\r\nm=reshape(m,[],6);\r\nv=rank_file(m);\r\nvexp=[4 5 8 10 14 16 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[1 5 3 1 4 3 6 4 3 5 5 8 6 4 8 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[3 4 5 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[40 3 25 39 38 3 5 63 16 49 73 52 5 22 72 38 53 80 53 25 52 81 40 72 81 80 39 63 ];\r\nm=reshape(m,[],4);\r\nv=rank_file(m);\r\nvexp=[16 22 49 73 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[3 2 2 1 3 4 3 3 2 4 5 4 4 3 5 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[1 2 3 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[9 10 2 8 8 1 9 1 6 4 11 2 4 11 13 3 9 10 2 11 2 8 5 13 3 5 14 14 5 12 11 4 13 4 10 6 16 5 6 15 16 8 13 13 6 15 6 12 10 17 8 10 17 18 9 14 14 8 17 8 13 11 19 10 12 18 20 11 17 17 9 18 9 15 13 21 11 14 20 22 13 18 19 10 21 11 16 14 22 13 16 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[6 8 10 12 13 15 17 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[11 5 9 2 7 13 2 8 6 7 6 4 9 14 8 16 4 10 16 4 14 8 12 10 6 12 16 10 18 5 11 17 6 15 10 13 11 8 13 17 11 19 6 13 19 7 17 11 15 13 10 14 19 13 21 7 15 20 9 19 13 17 14 12 17 20 16 23 8 17 22 11 20 15 19 17 14 19 23 17 24 9 19 24 13 22 18 20 19 16 21 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[4 6 8 10 12 14 16 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[11 6 11 10 14 16 13 8 12 9 3 3 7 13 16 17 7 6 5 20 12 18 15 25 26 21 18 20 13 6 5 15 23 27 29 11 9 9 22 14 21 20 28 29 24 21 23 17 7 6 16 24 29 32 14 12 11 26 17 26 23 31 37 32 24 29 19 9 7 19 27 34 37 16 15 13 27 20 29 26 33 40 35 26 30 24 10 8 23 29 37 40 21 18 15 31 21 31 27 35 41 36 29 33 26 11 11 26 33 38 43 22 20 18 33 23 33 29 37 44 38 30 34 27 12 13 29 34 40 46 24 23 20 36 24 35 33 40 47 40 35 37 31 13 14 32 38 42 47 28 25 21 40 25 38 37 44 49 42 38 40 34 15 16 35 41 46 48 29 27 23 41 29 43 40 47 52 47 40 46 37 16 17 37 44 49 52 32 29 26 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[15 23 25 35 38 40 41 44 46 48 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[14 11 6 9 7 14 2 13 9 17 12 2 3 19 14 10 13 10 17 5 17 11 19 14 3 7 22 19 11 16 11 18 7 21 13 21 16 6 10 23 21 13 18 16 22 9 22 18 25 21 9 11 28 23 16 21 19 26 12 26 21 28 23 11 14 31 26 18 22 21 29 14 29 22 30 26 13 17 32 28 21 25 22 31 17 30 23 32 28 14 19 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[5 7 10 13 14 17 19 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[15 15 21 3 7 11 25 22 5 18 9 11 3 16 19 29 12 25 18 18 20 26 7 10 12 28 23 10 20 11 15 5 21 22 34 19 28 22 21 24 30 11 11 14 33 28 12 23 14 16 9 26 24 39 22 30 27 23 28 33 15 15 16 34 34 18 25 21 23 11 29 29 40 24 35 30 24 31 34 18 19 22 37 39 20 26 23 25 12 34 33 41 26 43 38 28 37 39 19 20 24 43 45 22 31 24 29 15 41 37 47 33 49 43 29 39 43 21 21 26 45 50 26 34 30 33 16 43 41 49 34 51 47 30 43 47 25 22 27 50 52 28 38 33 34 18 45 43 58 37 55 50 34 44 50 26 23 28 52 55 31 39 35 37 22 47 45 59 39 58 54 35 47 51 29 28 30 55 59 34 43 39 40 25 49 49 63 41 63 58 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[26 31 35 37 39 44 47 54 55 58 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[1 9 5 2 11 15 6 3 15 1 8 17 3 2 18 11 8 12 7 2 13 8 5 14 17 10 6 16 2 12 19 8 5 20 12 11 15 10 3 18 13 6 20 25 13 11 23 3 15 24 11 8 26 20 18 21 15 5 21 16 8 23 29 16 13 28 6 17 29 13 10 30 25 22 26 19 7 23 17 10 24 30 19 15 30 8 22 32 15 12 31 26 24 28 22 8 26 21 11 27 35 22 18 33 9 24 34 18 13 37 29 26 31 23 11 29 23 12 31 38 25 20 37 11 26 40 20 14 39 31 27 34 24 13 32 26 15 33 39 26 21 38 12 28 42 23 15 42 34 31 37 28 15 35 28 17 38 40 29 23 40 15 30 43 25 16 45 37 33 39 30 18 37 29 20 39 43 30 24 45 17 31 48 26 19 48 40 34 42 32 ];\r\nm=reshape(m,[],10);\r\nv=rank_file(m);\r\nvexp=[13 15 23 26 28 32 33 37 38 42 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[5 9 9 5 3 7 13 12 7 5 13 17 17 12 9 ];\r\nm=reshape(m,[],3);\r\nv=rank_file(m);\r\nvexp=[3 5 9 ];\r\nassert(isequal(vexp,v))\r\n%%\r\nm=[13 6 8 11 8 4 2 1 10 3 10 5 7 18 7 11 15 11 5 4 2 14 4 12 8 9 21 11 15 19 12 10 5 5 17 8 18 10 13 25 15 19 22 15 12 7 8 20 11 20 11 17 28 20 25 25 17 17 9 10 23 14 27 13 23 30 22 28 28 19 19 11 11 25 15 29 15 25 32 25 30 29 20 21 12 13 27 18 32 18 28 ];\r\nm=reshape(m,[],7);\r\nv=rank_file(m);\r\nvexp=[1 3 4 6 7 8 10 ];\r\nassert(isequal(vexp,v))\r\ntoc\r\n\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":11,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2016-04-18T02:50:28.000Z","updated_at":"2016-04-18T04:20:27.000Z","published_at":"2016-04-18T03:42: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:r\u003e\u003cw:t\u003eThis Challenge is derived from\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://code.google.com/codejam/contest/4304486/dashboard#s=p1\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGJam Rd1A 2016 Rank and File\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. This is the small case with max N=10\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 GJam story is a matrix H(NxN) which has every row and column increasing. Each row and column is recorded on strips. The strips get scrambled and one gets incinerated. The goal is to reconstruct the missing increasing vector strip.\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], matrix of size [2*N-1,N] of all rows and columns of H except one\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 [V], the missing vector of H not included in M\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 [M] [V]\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 2 3;2 3 5;3 5 6;2 3 4;1 2 3] [3 4 6] \\n[22 222;2 22;2 22][22 222]]]\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\u003eGJam 2016 Rd1A Matlab results show three qualifiers for Rd2.\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\u003eTheory:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e With max N=10 it is possible to brute force the 50 puzzles. Persistent may be useful with the usage of nchoosek which may be the critical path.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.go-hero.net/jam/16/solutions/1/2/MATLAB\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGJam Rank_file solutions\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Writing the general solution for N=50 is better for the contest. The min corner or the max corner will always be available. Evolving solution, no guessing, is possible. OR one can observe an inherent mathematical result to create a 1-line solution.\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":42291,"title":"GJam 2015 Rd1B: Counter Culture","description":"This Challenge is derived from \u003chttps://code.google.com/codejam/contest/8224486/dashboard#s=p0 GJam 2015 Rd 1B: Counter Culture\u003e. Fastest completion - 5 minutes.\r\n\r\nDetermine minimum sequence length to reach a number. Sequence starts at 1 and the next is either +1 or the number's reverse with trailing zeros removed. (eg 2300 is followed by 2301 or 32)\r\n\r\nInput: N, a value from 1 to 1,000,000\r\n\r\nOutput: L, minimum length of sequence to reach N\r\n\r\nExamples: Small Case 1\u003c=N\u003c=1000000\r\n\r\n  N=5,  L=5  [1 2 3 4 5] L=N is true thru 19\r\n  N=23, L=15 [1:12 21 22 23]\r\n\r\n\r\nTheory: The small case can be solved with brute force or semi-brute force using storage of past calculations. All values are processed at each depth level. Duplicates from [N+1 and flip] are purged. A fast reversal function is essential. Direct summation works well. The large case N limit is 1E14 making even semi-brute force with storage unlikely.\r\n\r\n\r\nAdditional GJam solutions can be found at \u003chttp://www.go-hero.net/jam/15 Example GJam Matlab solutions\u003e. Select Find Solutions, change Language to Matlab. The Test Suite, at the bottom, contains a full GJam Matlab solution.","description_html":"\u003cp\u003eThis Challenge is derived from \u003ca href = \"https://code.google.com/codejam/contest/8224486/dashboard#s=p0\"\u003eGJam 2015 Rd 1B: Counter Culture\u003c/a\u003e. Fastest completion - 5 minutes.\u003c/p\u003e\u003cp\u003eDetermine minimum sequence length to reach a number. Sequence starts at 1 and the next is either +1 or the number's reverse with trailing zeros removed. (eg 2300 is followed by 2301 or 32)\u003c/p\u003e\u003cp\u003eInput: N, a value from 1 to 1,000,000\u003c/p\u003e\u003cp\u003eOutput: L, minimum length of sequence to reach N\u003c/p\u003e\u003cp\u003eExamples: Small Case 1\u0026lt;=N\u0026lt;=1000000\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eN=5,  L=5  [1 2 3 4 5] L=N is true thru 19\r\nN=23, L=15 [1:12 21 22 23]\r\n\u003c/pre\u003e\u003cp\u003eTheory: The small case can be solved with brute force or semi-brute force using storage of past calculations. All values are processed at each depth level. Duplicates from [N+1 and flip] are purged. A fast reversal function is essential. Direct summation works well. The large case N limit is 1E14 making even semi-brute force with storage unlikely.\u003c/p\u003e\u003cp\u003eAdditional GJam solutions can be found at \u003ca href = \"http://www.go-hero.net/jam/15\"\u003eExample GJam Matlab solutions\u003c/a\u003e. Select Find Solutions, change Language to Matlab. The Test Suite, at the bottom, contains a full GJam Matlab solution.\u003c/p\u003e","function_template":"function L = Counter_Culture(N)\r\n% N is value to be reached \r\n% L is minimum length of sequence to reach N\r\n% N=23  L=15  the sequence [1:12 21 22 23]\r\n% N=19 L=19 [1:19]\r\n  L=1;\r\nend","test_suite":"tic\r\n%%\r\nN=1;\r\nL=Counter_Culture(N);\r\nLexp=1;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=19;\r\nL=Counter_Culture(N);\r\nLexp=19;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=23;\r\nL=Counter_Culture(N);\r\nLexp=15;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1101;\r\nL=Counter_Culture(N);\r\nLexp=150;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=998999;\r\nL=Counter_Culture(N);\r\nLexp=3334;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=990000;\r\nL=Counter_Culture(N);\r\nLexp=3425;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10110;\r\nL=Counter_Culture(N);\r\nLexp=447;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11111;\r\nL=Counter_Culture(N);\r\nLexp=459;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999991;\r\nL=Counter_Culture(N);\r\nLexp=3426;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=512;\r\nL=Counter_Culture(N);\r\nLexp=46;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999899;\r\nL=Counter_Culture(N);\r\nLexp=3334;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1999;\r\nL=Counter_Culture(N);\r\nLexp=328;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11101;\r\nL=Counter_Culture(N);\r\nLexp=449;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=876543;\r\nL=Counter_Culture(N);\r\nLexp=2657;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=4;\r\nL=Counter_Culture(N);\r\nLexp=4;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=102;\r\nL=Counter_Culture(N);\r\nLexp=31;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11000;\r\nL=Counter_Culture(N);\r\nLexp=1337;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1998;\r\nL=Counter_Culture(N);\r\nLexp=327;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=900000;\r\nL=Counter_Culture(N);\r\nLexp=3434;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=131072;\r\nL=Counter_Culture(N);\r\nLexp=1639;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=524288;\r\nL=Counter_Culture(N);\r\nLexp=2149;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=20;\r\nL=Counter_Culture(N);\r\nLexp=20;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=789012;\r\nL=Counter_Culture(N);\r\nLexp=2435;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=200;\r\nL=Counter_Culture(N);\r\nLexp=129;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=109876;\r\nL=Counter_Culture(N);\r\nLexp=3213;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11100;\r\nL=Counter_Culture(N);\r\nLexp=448;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=262144;\r\nL=Counter_Culture(N);\r\nLexp=1842;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11;\r\nL=Counter_Culture(N);\r\nLexp=11;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1001;\r\nL=Counter_Culture(N);\r\nLexp=139;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=987654;\r\nL=Counter_Culture(N);\r\nLexp=2879;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999989;\r\nL=Counter_Culture(N);\r\nLexp=3424;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11011;\r\nL=Counter_Culture(N);\r\nLexp=359;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=4096;\r\nL=Counter_Culture(N);\r\nLexp=238;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=900001;\r\nL=Counter_Culture(N);\r\nLexp=1446;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=201;\r\nL=Counter_Culture(N);\r\nLexp=32;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=99001;\r\nL=Counter_Culture(N);\r\nLexp=437;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999999;\r\nL=Counter_Culture(N);\r\nLexp=3434;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999900;\r\nL=Counter_Culture(N);\r\nLexp=3335;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=901;\r\nL=Counter_Culture(N);\r\nLexp=39;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2201;\r\nL=Counter_Culture(N);\r\nLexp=161;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=90;\r\nL=Counter_Culture(N);\r\nLexp=28;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=101;\r\nL=Counter_Culture(N);\r\nLexp=30;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10111;\r\nL=Counter_Culture(N);\r\nLexp=448;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=31;\r\nL=Counter_Culture(N);\r\nLexp=14;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10;\r\nL=Counter_Culture(N);\r\nLexp=10;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10100;\r\nL=Counter_Culture(N);\r\nLexp=437;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999998;\r\nL=Counter_Culture(N);\r\nLexp=3433;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999000;\r\nL=Counter_Culture(N);\r\nLexp=3335;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=990001;\r\nL=Counter_Culture(N);\r\nLexp=1536;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=30;\r\nL=Counter_Culture(N);\r\nLexp=22;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=900;\r\nL=Counter_Culture(N);\r\nLexp=137;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=101001;\r\nL=Counter_Culture(N);\r\nLexp=1538;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999990;\r\nL=Counter_Culture(N);\r\nLexp=3425;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=989999;\r\nL=Counter_Culture(N);\r\nLexp=3424;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=21;\r\nL=Counter_Culture(N);\r\nLexp=13;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=9999;\r\nL=Counter_Culture(N);\r\nLexp=336;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=100001;\r\nL=Counter_Culture(N);\r\nLexp=1437;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10999;\r\nL=Counter_Culture(N);\r\nLexp=1336;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=100;\r\nL=Counter_Culture(N);\r\nLexp=29;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=91;\r\nL=Counter_Culture(N);\r\nLexp=20;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11010;\r\nL=Counter_Culture(N);\r\nLexp=358;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=29;\r\nL=Counter_Culture(N);\r\nLexp=21;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2001;\r\nL=Counter_Culture(N);\r\nLexp=141;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11110;\r\nL=Counter_Culture(N);\r\nLexp=458;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10001;\r\nL=Counter_Culture(N);\r\nLexp=338;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=9;\r\nL=Counter_Culture(N);\r\nLexp=9;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=101000;\r\nL=Counter_Culture(N);\r\nLexp=2436;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1000;\r\nL=Counter_Culture(N);\r\nLexp=138;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=19;\r\nL=Counter_Culture(N);\r\nLexp=19;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=12000;\r\nL=Counter_Culture(N);\r\nLexp=1348;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999;\r\nL=Counter_Culture(N);\r\nLexp=137;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=22;\r\nL=Counter_Culture(N);\r\nLexp=14;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1111;\r\nL=Counter_Culture(N);\r\nLexp=160;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=12001;\r\nL=Counter_Culture(N);\r\nLexp=359;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=12;\r\nL=Counter_Culture(N);\r\nLexp=12;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=99000;\r\nL=Counter_Culture(N);\r\nLexp=1426;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999001;\r\nL=Counter_Culture(N);\r\nLexp=2436;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=899999;\r\nL=Counter_Culture(N);\r\nLexp=3433;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10010;\r\nL=Counter_Culture(N);\r\nLexp=347;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10000;\r\nL=Counter_Culture(N);\r\nLexp=337;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10101;\r\nL=Counter_Culture(N);\r\nLexp=438;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2000;\r\nL=Counter_Culture(N);\r\nLexp=329;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=111;\r\nL=Counter_Culture(N);\r\nLexp=40;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=999901;\r\nL=Counter_Culture(N);\r\nLexp=3336;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2101;\r\nL=Counter_Culture(N);\r\nLexp=151;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=10011;\r\nL=Counter_Culture(N);\r\nLexp=348;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2002;\r\nL=Counter_Culture(N);\r\nLexp=142;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=32;\r\nL=Counter_Culture(N);\r\nLexp=15;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=110;\r\nL=Counter_Culture(N);\r\nLexp=39;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2100;\r\nL=Counter_Culture(N);\r\nLexp=240;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=11001;\r\nL=Counter_Culture(N);\r\nLexp=349;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=99;\r\nL=Counter_Culture(N);\r\nLexp=28;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1100;\r\nL=Counter_Culture(N);\r\nLexp=238;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1099;\r\nL=Counter_Culture(N);\r\nLexp=237;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1000000;\r\nL=Counter_Culture(N);\r\nLexp=3435;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=100000;\r\nL=Counter_Culture(N);\r\nLexp=1436;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=2200;\r\nL=Counter_Culture(N);\r\nLexp=250;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=1110;\r\nL=Counter_Culture(N);\r\nLexp=159;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=432109;\r\nL=Counter_Culture(N);\r\nLexp=1779;\r\nassert(isequal(Lexp,L))\r\n%%\r\nN=199;\r\nL=Counter_Culture(N);\r\nLexp=128;\r\nassert(isequal(Lexp,L))\r\n%%\r\ntoc\r\n%%\r\n% function GJam_Rd1B_2015a\r\n% % \r\n% fn='A-small-practice.in';\r\n% [data] = read_file(fn); % \r\n% \r\n% fidG = fopen('A-small-practice.out', 'w');\r\n%  \r\n% tic\r\n% for i=1:size(data,2) % Cell array has J cols of cases\r\n%  L = Counter_Culture(data{i});\r\n%  fprintf(fidG,'Case #%i: %i\\n',i,L);\r\n%  fprintf('Case #%i: %i\\n',i,L); \r\n% end\r\n% toc\r\n% fclose(fidG);\r\n% end\r\n% \r\n% function depth=Counter_Culture(v)\r\n% % create all paths\r\n% persistent m mv maxdepth\r\n% if isempty(m)\r\n%     \r\n%  mv=zeros(1000000,1);\r\n%  m{1000000}=[]; % set cell array size to max possible\r\n%  for i=1:9\r\n%   m{i}=i;\r\n%   mv(i)=i; % place best depth into mv for repeated searches\r\n%  end\r\n%  maxdepth=9;\r\n% end\r\n% \r\n% if mv(v) % usage of persistent data\r\n%  depth=mv(v);\r\n%  return;\r\n% end\r\n% \r\n% \r\n% while 1\r\n%  mset=m{maxdepth}; % start with last set calculated\r\n%  maxdepth=maxdepth+1;\r\n%  msetn=mset+1;\r\n%  \r\n%  msetn=msetn(mv(msetn)==0);\r\n%  mv(msetn)=maxdepth;\r\n%  \r\n%  for i=1:length(mset)\r\n%   flipv=calc_flip(mset(i));\r\n%   if mv(flipv)==0 % new value\r\n%    mv(flipv)=maxdepth;\r\n%    msetn=[msetn flipv]; % add to list\r\n%   end\r\n%  end\r\n%  \r\n%  m{maxdepth}=msetn;\r\n%  \r\n%  if any(msetn==v)\r\n%   depth=maxdepth;\r\n%   return\r\n%  end\r\n%     \r\n% end % while\r\n% \r\n% end\r\n% \r\n% function vr=calc_flip(val)\r\n%  vr=0;\r\n%  while val\r\n%   v1=mod(val,10);\r\n%   vr=10*vr+v1;\r\n%   val=(val-v1)/10;\r\n%  end\r\n% end\r\n% \r\n% function [d] = read_file(fn)\r\n% d={};\r\n% fid=fopen(fn);\r\n% fgetl(fid); % Total Count ignore\r\n% ptr=0;\r\n% while ~feof(fid)\r\n%  ptr=ptr+1;\r\n%  v=str2num(fgetl(fid)); \r\n%  d{ptr}=v;\r\n% end % feof\r\n% fclose(fid);\r\n% end % read_file\r\n%%\r\ntoc","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":11,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2015-05-03T21:55:15.000Z","updated_at":"2025-11-20T19:05:41.000Z","published_at":"2015-05-03T22:36:16.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 derived from\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://code.google.com/codejam/contest/8224486/dashboard#s=p0\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGJam 2015 Rd 1B: Counter Culture\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Fastest completion - 5 minutes.\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 minimum sequence length to reach a number. Sequence starts at 1 and the next is either +1 or the number's reverse with trailing zeros removed. (eg 2300 is followed by 2301 or 32)\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\u003eInput: N, a value from 1 to 1,000,000\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\u003eOutput: L, minimum length of sequence to reach N\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\u003eExamples: Small Case 1\u0026lt;=N\u0026lt;=1000000\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=5,  L=5  [1 2 3 4 5] L=N is true thru 19\\nN=23, L=15 [1:12 21 22 23]]]\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\u003eTheory: The small case can be solved with brute force or semi-brute force using storage of past calculations. All values are processed at each depth level. Duplicates from [N+1 and flip] are purged. A fast reversal function is essential. Direct summation works well. The large case N limit is 1E14 making even semi-brute force with storage unlikely.\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\u003eAdditional GJam solutions can be found at\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.go-hero.net/jam/15\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eExample GJam Matlab solutions\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Select Find Solutions, change Language to Matlab. The Test Suite, at the bottom, contains a full GJam Matlab solution.\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":44237,"title":"Mastermind II: Solve in 8 or less","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\r\n\r\nTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8.  The optimal minimal guess solution requires only 5 guesses.\r\n\r\nFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8.  The optimal minimal guess solution requires only 5 guesses.\u003c/p\u003e\u003cp\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n if isempty(mguess)\r\n  guess=[1 1 2 2]; % [1 1 1 1] is not a good first guess\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\nGmax=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved \u0026\u0026 Lmax\u003c9 % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n  mguess(end+1,:)=mguessn;\r\n  mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n  mpegs(end,2)=mc(ptr,mguessptr);\r\n  \r\n  Lsol=size(mguess,1);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n  if Lsol==8 % length of 8 and not solved\r\n   solved=0;\r\n   Gmax=0;\r\n   break;\r\n   end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\nif Gmax==0 % failed Guess max rqmt of 8\r\n fprintf('\\n Solution exceeded 8 guesses\\n');\r\n fprintf('Puzzle %i %i %i %i\\n',m(ptr,:));\r\n fprintf('Guessses and Responses\\n');\r\n fprintf('M%i %i %i %i   P%i %i\\n',[mguess mpegs]');\r\n fprintf('\\n');\r\nend\r\n\r\nif solved\r\n fprintf('Solved in %.2f sec\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f sec\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":15,"test_suite_updated_at":"2017-06-18T18:19:06.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T17:46:47.000Z","updated_at":"2025-12-12T14:09:25.000Z","published_at":"2017-06-18T18:16:28.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=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\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[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\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[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\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\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\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\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\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\u003eTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8. The optimal minimal guess solution requires only 5 guesses.\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\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\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":44236,"title":"Mastermind I: Solve all 1296 cases","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\r\n\r\nTheory: Brute force can work but masking is much more efficient.  The optimal minimal guess solution requires only 5 guesses.\r\n\r\nFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: Brute force can work but masking is much more efficient.  The optimal minimal guess solution requires only 5 guesses.\u003c/p\u003e\u003cp\u003eFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n if isempty(mguess)\r\n  guess=[1 1 1 1];\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n   mguess(end+1,:)=mguessn;\r\n   mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n   mpegs(end,2)=mc(ptr,mguessptr);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Lsol=size(mguess,1);\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\n\r\nif solved\r\n fprintf('Solved in %.2f\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n","published":true,"deleted":false,"likes_count":3,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":21,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T14:17:00.000Z","updated_at":"2025-12-12T14:05:24.000Z","published_at":"2017-06-18T15:51:46.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=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\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[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\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[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\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\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\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\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\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\u003eTheory: Brute force can work but masking is much more efficient. The optimal minimal guess solution requires only 5 guesses.\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\u003eFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\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":937,"title":"Rubik's Mini Cube: Solve Randomized Cube in 11 Moves or Less; Score is by Time (msec)","description":"The Challenge is to Near or Optimally Solve a thoroughly scrambled Mini-Rubik's Cube(2x2x2).\r\n\r\nAny Mini-Cube can be solved in 11 or fewer Face Moves. There are only 3,674,160 unique cube positions, with only 2344 requiring the fulll 11 moves. Cube moves do not count.\r\n\r\nThe Performance metric is cumulative Time to Solve 500 cubes (msec).\r\n\r\nA standard Mini-Rubik's Cube is shown in 3-D and also unfolded to identify the specific Tile-face/Vector numbering.\r\n\r\nThe faces are White-Up / Red-Left / Blue-Front / Orange-Right / Yellow-Down / Green-Back (ULFRDB)\r\n\r\nMoves are denoted as F for clockwise rotation of the Front face. F'(or FP) is CCW and F2 is F twice.  The provided function r_new=rubick_rot_mini(mov,r) implements moves 1-18: UFDLBRU'F'D'L'B'R'U2F2D2L2B2R2.\r\n\r\n\r\n\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/minicube2.png\u003e\u003e\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/miniCube_Map24_200.png\u003e\u003e\r\n\r\n\u003c\u003chttp://mathworks.com/matlabcentral/images/surf.gif\u003e\u003e\r\n\r\n\r\n  \r\n  \r\n  Input: (rubik)\r\n  \r\n  rubik: row vector of size 24\r\n  (The cube started [L=0,U=1,F=2,D=3,B=4,R=5] and then receives forty face moves.\r\n\r\n  Output: move_vec (Numeric of moves to solve)\r\n   move_vec:values 1:27 for UFDLBR U'F'D'L'B'R' U2F2D2L2B2R2 XYZX'Y'Z'X2Y2Z2\r\n\r\n* Example:\r\n* If the cube was randomized by [1 9] UD', one solution is [3 7]  which are the complements in reverse order. \r\n* Scoring is Time in msec to solve 500 cubes\r\n* Cube Moves X, Y, and Z do not constitute a move but are needed in the vector \r\n* A string to numeric value function is provided in the template\r\n* Verifications will be by executing your move vector against the provided Rubik and counting number of face moves.\r\n\r\nThe function rubik_rot_mini(mov,r) is provided in the template. Other functions are provided to re-orient the cube in Cody Challenge 931, Rubik's Mini-Cube.\r\n\r\n\r\nThe Challenge \u003chttp://www.mathworks.com/matlabcentral/cody/problems/931-rubik-s-mini-cube-solve-randomized-mini-cube-score-moves.html Challenge 931 Rubik's Mini-Cube\u003e contains a 3D Mini-Cube Viewer for program development.\r\n\r\n\r\n* \r\n* \u003chttp://kociemba.org/cube.htm Cube Theory: 20-moves Any Cube\u003e \r\n* \u003chttp://peter.stillhq.com/jasmine/rubikscubesolution.html General Cube Info and Middle Layer\u003e\r\n* \u003chttp://www.speedcubing.com/final_layer_print.html SpeedCube Bottom Sequences\u003e\r\n* The site \u003chttp://www.speedcubing.com/CubeSolver/MiniCubeSolver.html MiniCube Solver\u003e claims an outstanding 10 minutes to solve a randomized Mini-Cube. Matlab can achieve any Mini-Cube solution in \u003c 497 usec, independent of moves on an i5/16GB machine.\r\n\r\n\r\n(Note: Mini-Cube can use the full cube moves and ignore edge effects)\r\n\r\nComing Soon: Matlab Tetris\r\n","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: 1316.98px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 658.5px; transform-origin: 407px 658.5px; vertical-align: baseline; \"\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: 294.65px 7.91667px; transform-origin: 294.65px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Challenge is to Near or Optimally Solve a thoroughly scrambled Mini-Rubik's Cube(2x2x2).\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: 377.2px 7.91667px; transform-origin: 377.2px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAny Mini-Cube can be solved in 11 or fewer Face Moves. There are only 3,674,160 unique cube positions, with only 2344 requiring the fulll 11 moves. Cube moves do not count.\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: 221.45px 7.91667px; transform-origin: 221.45px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Performance metric is cumulative Time to Solve 500 cubes (msec).\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: 355.467px 7.91667px; transform-origin: 355.467px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eA standard Mini-Rubik's Cube is shown in 3-D and also unfolded to identify the specific Tile-face/Vector numbering.\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: 316.733px 7.91667px; transform-origin: 316.733px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe faces are White-Up / Red-Left / Blue-Front / Orange-Right / Yellow-Down / Green-Back (ULFRDB)\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: 380.533px 7.91667px; transform-origin: 380.533px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eMoves are denoted as F for clockwise rotation of the Front face. F'(or FP) is CCW and F2 is F twice. The provided function r_new=rubick_rot_mini(mov,r) implements moves 1-18: UFDLBRU'F'D'L'B'R'U2F2D2L2B2R2.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 138.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 69.4667px; text-align: center; transform-origin: 384px 69.4667px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 242.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 121.467px; text-align: center; transform-origin: 384px 121.467px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 113.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 56.9667px; text-align: center; transform-origin: 384px 56.9667px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/gif;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 143.033px; 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 71.5167px; transform-origin: 404px 71.5167px; 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: 53.9px 7.91667px; transform-origin: 53.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eInput: (rubik)\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: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 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: 107.8px 7.91667px; transform-origin: 107.8px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 69.3px 7.91667px; transform-origin: 69.3px 7.91667px; \"\u003erubik: row vector \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: 38.5px 7.91667px; text-decoration: none; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 38.5px 7.91667px; \"\u003eof size 24\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: 304.15px 7.91667px; transform-origin: 304.15px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e(The cube started [L=0,U=1,F=2,D=3,B=4,R=5] and then receives forty face moves.\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: 0px 7.91667px; transform-origin: 0px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 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: 169.4px 7.91667px; transform-origin: 169.4px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eOutput: move_vec (Numeric of moves to solve)\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: 284.9px 7.91667px; transform-origin: 284.9px 7.91667px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 84.7px 7.91667px; transform-origin: 84.7px 7.91667px; \"\u003e move_vec:values 1:27 \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(14, 0, 255); border-block-start-color: rgb(14, 0, 255); border-bottom-color: rgb(14, 0, 255); border-inline-end-color: rgb(14, 0, 255); border-inline-start-color: rgb(14, 0, 255); border-left-color: rgb(14, 0, 255); border-right-color: rgb(14, 0, 255); border-top-color: rgb(14, 0, 255); caret-color: rgb(14, 0, 255); color: rgb(14, 0, 255); column-rule-color: rgb(14, 0, 255); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(14, 0, 255); perspective-origin: 15.4px 7.91667px; text-decoration: none; text-decoration-color: rgb(14, 0, 255); text-emphasis-color: rgb(14, 0, 255); transform-origin: 15.4px 7.91667px; \"\u003efor \u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 127.05px 7.91667px; transform-origin: 127.05px 7.91667px; \"\u003eUFDLBR U'F'D'L'B'R' U2F2D2L2B2R2 \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(196, 0, 0); border-block-start-color: rgb(196, 0, 0); border-bottom-color: rgb(196, 0, 0); border-inline-end-color: rgb(196, 0, 0); border-inline-start-color: rgb(196, 0, 0); border-left-color: rgb(196, 0, 0); border-right-color: rgb(196, 0, 0); border-top-color: rgb(196, 0, 0); caret-color: rgb(196, 0, 0); color: rgb(196, 0, 0); column-rule-color: rgb(196, 0, 0); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(196, 0, 0); perspective-origin: 57.75px 7.91667px; text-decoration: none; text-decoration-color: rgb(196, 0, 0); text-emphasis-color: rgb(196, 0, 0); transform-origin: 57.75px 7.91667px; \"\u003eXYZX'Y'Z'X2Y2Z2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cul style=\"block-size: 122.6px; counter-reset: list-item 0; font-family: Helvetica, Arial, sans-serif; list-style-type: square; margin-block-end: 20px; margin-block-start: 10px; margin-bottom: 20px; margin-top: 10px; perspective-origin: 391px 61.3px; transform-origin: 391px 61.3px; margin-top: 10px; margin-bottom: 20px; \"\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 29.1833px 7.91667px; transform-origin: 29.1833px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eExample:\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 327.667px 7.91667px; transform-origin: 327.667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eIf the cube was randomized by [1 9] UD', one solution is [3 7] which are the complements in reverse order.\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 134.333px 7.91667px; transform-origin: 134.333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eScoring is Time in msec to solve 500 cubes\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 242.583px 7.91667px; transform-origin: 242.583px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eCube Moves X, Y, and Z do not constitute a move but are needed in the vector\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 187.1px 7.91667px; transform-origin: 187.1px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eA string to numeric value function is provided in the template\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 355.933px 7.91667px; transform-origin: 355.933px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eVerifications will be by executing your move vector against the provided Rubik and counting number of face moves.\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003c/ul\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: 374.067px 7.91667px; transform-origin: 374.067px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function rubik_rot_mini(mov,r) is provided in the template. Other functions are provided to re-orient the cube in Cody Challenge 931, Rubik's Mini-Cube.\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: 45.5333px 7.91667px; transform-origin: 45.5333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Challenge\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://www.mathworks.com/matlabcentral/cody/problems/931-rubik-s-mini-cube-solve-randomized-mini-cube-score-moves.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eChallenge 931 Rubik's Mini-Cube\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: 183.883px 7.91667px; transform-origin: 183.883px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e contains a 3D Mini-Cube Viewer for program development.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cul style=\"block-size: 122.6px; counter-reset: list-item 0; font-family: Helvetica, Arial, sans-serif; list-style-type: square; margin-block-end: 20px; margin-block-start: 10px; margin-bottom: 20px; margin-top: 10px; perspective-origin: 391px 61.3px; transform-origin: 391px 61.3px; margin-top: 10px; margin-bottom: 20px; \"\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"http://kociemba.org/cube.htm\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eCube Theory: 20-moves Any Cube\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"http://peter.stillhq.com/jasmine/rubikscubesolution.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eGeneral Cube Info and Middle Layer\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 20.4333px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10.2167px; text-align: left; transform-origin: 363px 10.2167px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"http://www.speedcubing.com/final_layer_print.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpeedCube Bottom Sequences\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 40.8667px; counter-reset: none; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 20.4333px; text-align: left; transform-origin: 363px 20.4333px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 24.9px 7.91667px; transform-origin: 24.9px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe site\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 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://www.speedcubing.com/CubeSolver/MiniCubeSolver.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eMiniCube Solver\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-inline-start: 0px; margin-left: 0px; perspective-origin: 276.2px 7.91667px; transform-origin: 276.2px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e claims an outstanding 10 minutes to solve a randomized Mini-Cube. Matlab can achieve any Mini-Cube solution in \u0026lt; 497 usec, independent of moves on an i5/16GB machine.\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003c/ul\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: 218.883px 7.91667px; transform-origin: 218.883px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e(Note: Mini-Cube can use the full cube moves and ignore edge effects)\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: 85.9667px 7.91667px; transform-origin: 85.9667px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eComing Soon: Matlab Tetris\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function solve_vec = rubik_solve_mini(r)\r\n% Expect Numeric representation of moves (1:27):\r\n% 1:27 are ufdlbr upfpdplpbprp u2f2d2l2b2r2 xyzxpypzpx2y2z2\r\n solve_vec=[]; \r\n\r\n% One path is to use Challenge 931's, Rubik's Mini Cube, initial Cube re-orientation provided in the template, followed by a solving algorithm that needs only RDB type moves\r\n% Loading an external data file is one method. First solve is not timed.\r\nend\r\n\r\nfunction r=rubik_rot_mini(mov,r)\r\n%mov is 1:27;  1-6 UFDLBR 7-12 U'F;D'L'B'R' 13-18 U2F2D2L2B2R2 \r\n%             19-27 XYZ X'Y'Z' X2Y2Z2  \r\n% X cube-R, Y cube-U,  Z cube-F\r\n%\r\n% r is a 24 element row vector\r\n% r output is a single row vector \r\n%\r\n% vector mov\r\n% r output is array of length(mov) x 24\r\n%\r\n% Perform Rubik Cube face rotations and cube rotations\r\n% L 1:4 U 5:8 F 9:12 D 13:16 B 17:20 R 21:24 \r\n% \r\npersistent vf\r\nif isempty(vf) %\r\nvf=[9 2 11 4 6 8 5 7 21 10 23 12 13 14 15 16 17 3 19 1 20 22 18 24 ; \r\n    1 2 13 15 5 4 7 3 10 12 9 11 22 14 21 16 17 18 19 20 6 8 23 24 ;\r\n    1 19 3 17 5 6 7 8 9 2 11 4 14 16 13 15 24 18 22 20 21 10 23 12 ;\r\n    2 4 1 3 17 18 7 8 5 6 11 12 9 10 15 16 13 14 19 20 21 22 23 24 ;\r\n    7 5 3 4 23 6 24 8 9 10 11 12 13 1 15 2 18 20 17 19 21 22 16 14 ;\r\n    1 2 3 4 5 6 11 12 9 10 15 16 13 14 19 20 17 18 7 8 22 24 21 23 ;\r\n    20 2 18 4 7 5 8 6 1 10 3 12 13 14 15 16 17 23 19 21 9 22 11 24 ;\r\n    1 2 8 6 5 21 7 22 11 9 12 10 3 14 4 16 17 18 19 20 15 13 23 24 ;\r\n    1 10 3 12 5 6 7 8 9 22 11 24 15 13 16 14 4 18 2 20 21 19 23 17 ;\r\n    3 1 4 2 9 10 7 8 13 14 11 12 17 18 15 16 5 6 19 20 21 22 23 24 ;\r\n    14 16 3 4 2 6 1 8 9 10 11 12 13 24 15 23 19 17 20 18 21 22 5 7 ;\r\n    1 2 3 4 5 6 19 20 9 10 7 8 13 14 11 12 17 18 15 16 23 21 24 22 ;\r\n    21 2 23 4 8 7 6 5 20 10 18 12 13 14 15 16 17 11 19 9 1 22 3 24 ;\r\n    1 2 22 21 5 15 7 13 12 11 10 9 8 14 6 16 17 18 19 20 4 3 23 24 ;\r\n    1 22 3 24 5 6 7 8 9 19 11 17 16 15 14 13 12 18 10 20 21 2 23 4 ;\r\n    4 3 2 1 13 14 7 8 17 18 11 12 5 6 15 16 9 10 19 20 21 22 23 24 ;\r\n    24 23 3 4 16 6 14 8 9 10 11 12 13 7 15 5 20 19 18 17 21 22 2 1 ;\r\n    1 2 3 4 5 6 15 16 9 10 19 20 13 14 7 8 17 18 11 12 24 23 22 21 ;\r\n    3 1 4 2 9 10 11 12 13 14 15 16 17 18 19 20 5 6 7 8 22 24 21 23 ;\r\n    9 10 11 12 6 8 5 7 21 22 23 24 15 13 16 14 4 3 2 1 20 19 18 17 ;\r\n    14 16 13 15 2 4 1 3 10 12 9 11 22 24 21 23 19 17 20 18 6 8 5 7 ;\r\n    2 4 1 3 17 18 19 20 5 6 7 8 9 10 11 12 13 14 15 16 23 21 24 22 ;\r\n    20 19 18 17 7 5 8 6 1 2 3 4 14 16 13 15 24 23 22 21 9 10 11 12 ;\r\n    7 5 8 6 23 21 24 22 11 9 12 10 3 1 4 2 18 20 17 19 15 13 16 14 ;\r\n    4 3 2 1 13 14 15 16 17 18 19 20 5 6 7 8 9 10 11 12 24 23 22 21 ;\r\n    21 22 23 24 8 7 6 5 20 19 18 17 16 15 14 13 12 11 10 9 1 2 3 4 ; \r\n    24 23 22 21 16 15 14 13 12 11 10 9 8 7 6 5 20 19 18 17 4 3 2 1 ];\r\nend\r\n\r\nr=r(vf(mov,:));\r\nend\r\n\r\n\r\nfunction move_vec=decode27_movestr_rev001(movestr)\r\n% Active character Inputs: UFDLBRXYZ, GQ are pre-processed\r\n% 1-6 UFDLBR 7-12 U'F;D'L'B'R' 13-18 U2F2D2L2B2R2 19-27 XYZX'Y'Z'X2Y2Z2\r\nmovestr=upper(movestr);\r\nmovestr=strrep(movestr,'''','P'); % simplify further searches\r\n\r\nmovestr=strrep(movestr,'UP',' 7 ');\r\nmovestr=strrep(movestr,'FP',' 8 ');\r\nmovestr=strrep(movestr,'DP',' 9 ');\r\nmovestr=strrep(movestr,'LP',' 10 ');\r\nmovestr=strrep(movestr,'BP',' 11 ');\r\nmovestr=strrep(movestr,'RP',' 12 ');\r\nmovestr=strrep(movestr,'U2',' 13 ');\r\nmovestr=strrep(movestr,'F2',' 14 ');\r\nmovestr=strrep(movestr,'D2',' 15 ');\r\nmovestr=strrep(movestr,'L2',' 16 ');\r\nmovestr=strrep(movestr,'B2',' 17 ');\r\nmovestr=strrep(movestr,'R2',' 18 ');\r\nmovestr=strrep(movestr,'U',' 1 ');\r\nmovestr=strrep(movestr,'F',' 2 ');\r\nmovestr=strrep(movestr,'D',' 3 ');\r\nmovestr=strrep(movestr,'L',' 4 ');\r\nmovestr=strrep(movestr,'B',' 5 ');\r\nmovestr=strrep(movestr,'R',' 6 ');\r\nmovestr=strrep(movestr,'XP',' 22 ');\r\nmovestr=strrep(movestr,'YP',' 23 ');\r\nmovestr=strrep(movestr,'ZP',' 24 ');\r\nmovestr=strrep(movestr,'X2',' 25 ');\r\nmovestr=strrep(movestr,'Y2',' 26 ');\r\nmovestr=strrep(movestr,'Z2',' 27 ');\r\nmovestr=strrep(movestr,'X',' 19 ');\r\nmovestr=strrep(movestr,'Y',' 20 ');\r\nmovestr=strrep(movestr,'Z',' 21 ');\r\n\r\nmove_vec=str2num(movestr);\r\n\r\nend % move_vec","test_suite":"%%\r\nfeval(@assignin,'caller','score',0);\r\n%%\r\nvf=[9 2 11 4 6 8 5 7 21 10 23 12 13 14 15 16 17 3 19 1 20 22 18 24 ; \r\n    1 2 13 15 5 4 7 3 10 12 9 11 22 14 21 16 17 18 19 20 6 8 23 24 ;\r\n    1 19 3 17 5 6 7 8 9 2 11 4 14 16 13 15 24 18 22 20 21 10 23 12 ;\r\n    2 4 1 3 17 18 7 8 5 6 11 12 9 10 15 16 13 14 19 20 21 22 23 24 ;\r\n    7 5 3 4 23 6 24 8 9 10 11 12 13 1 15 2 18 20 17 19 21 22 16 14 ;\r\n    1 2 3 4 5 6 11 12 9 10 15 16 13 14 19 20 17 18 7 8 22 24 21 23 ;\r\n    20 2 18 4 7 5 8 6 1 10 3 12 13 14 15 16 17 23 19 21 9 22 11 24 ;\r\n    1 2 8 6 5 21 7 22 11 9 12 10 3 14 4 16 17 18 19 20 15 13 23 24 ;\r\n    1 10 3 12 5 6 7 8 9 22 11 24 15 13 16 14 4 18 2 20 21 19 23 17 ;\r\n    3 1 4 2 9 10 7 8 13 14 11 12 17 18 15 16 5 6 19 20 21 22 23 24 ;\r\n    14 16 3 4 2 6 1 8 9 10 11 12 13 24 15 23 19 17 20 18 21 22 5 7 ;\r\n    1 2 3 4 5 6 19 20 9 10 7 8 13 14 11 12 17 18 15 16 23 21 24 22 ;\r\n    21 2 23 4 8 7 6 5 20 10 18 12 13 14 15 16 17 11 19 9 1 22 3 24 ;\r\n    1 2 22 21 5 15 7 13 12 11 10 9 8 14 6 16 17 18 19 20 4 3 23 24 ;\r\n    1 22 3 24 5 6 7 8 9 19 11 17 16 15 14 13 12 18 10 20 21 2 23 4 ;\r\n    4 3 2 1 13 14 7 8 17 18 11 12 5 6 15 16 9 10 19 20 21 22 23 24 ;\r\n    24 23 3 4 16 6 14 8 9 10 11 12 13 7 15 5 20 19 18 17 21 22 2 1 ;\r\n    1 2 3 4 5 6 15 16 9 10 19 20 13 14 7 8 17 18 11 12 24 23 22 21 ;\r\n    3 1 4 2 9 10 11 12 13 14 15 16 17 18 19 20 5 6 7 8 22 24 21 23 ;\r\n    9 10 11 12 6 8 5 7 21 22 23 24 15 13 16 14 4 3 2 1 20 19 18 17 ;\r\n    14 16 13 15 2 4 1 3 10 12 9 11 22 24 21 23 19 17 20 18 6 8 5 7 ;\r\n    2 4 1 3 17 18 19 20 5 6 7 8 9 10 11 12 13 14 15 16 23 21 24 22 ;\r\n    20 19 18 17 7 5 8 6 1 2 3 4 14 16 13 15 24 23 22 21 9 10 11 12 ;\r\n    7 5 8 6 23 21 24 22 11 9 12 10 3 1 4 2 18 20 17 19 15 13 16 14 ;\r\n    4 3 2 1 13 14 15 16 17 18 19 20 5 6 7 8 9 10 11 12 24 23 22 21 ;\r\n    21 22 23 24 8 7 6 5 20 19 18 17 16 15 14 13 12 11 10 9 1 2 3 4 ; \r\n    24 23 22 21 16 15 14 13 12 11 10 9 8 7 6 5 20 19 18 17 4 3 2 1 ];\r\n\r\n%r=r(vf(mov,:));  % Standard move, r=rubik_rot_min(mov,r);\r\n\r\nPass=1;\r\nr_fail=0;\r\n% Execute 500 cubes and verify completeness and count moves\r\n % initialize cube\r\n r(1:4)=0;     %Left   0 R\r\n r(5:8)=1;     %Up     1 W\r\n r(9:12)=2;    %Front  2 B\r\n r(13:16)=3;   %Down   3 Y\r\n r(17:20)=4;   %Back   4 G\r\n r(21:24)=5;   %Right  5 O\r\n rnorm=r;\r\n\r\nzcnt=500;\r\nsum_solve=0;\r\nmin_solve=1000;\r\nmax_solve=0;\r\nasolve=199;\r\nmix=40;\r\n\r\ntic\r\n\r\nfor cube_check=1:zcnt %zcnt\u003c100 %500\r\n %zcnt=zcnt+1;\r\n  r=rnorm;\r\n % Initial mix\r\n mov=randi(18,[mix,1]);\r\n for i=1:length(mov)  % Ignoring Move Undos since mix=40\r\n   r=r(vf(mov(i),:));\r\n end\r\n\r\n r_reset=r; % Used in assert\r\n\r\n solve_vec=rubik_solve_mini(r);\r\n\r\n for i=1:length(solve_vec) \r\n  r=r(vf(solve_vec(i),:));\r\n end\r\n\r\n  if all(r(1:4)==r(4)) \u0026\u0026 all(r(5:8)==r(8))  \u0026\u0026 all(r(9:12)==r(9)) \u0026\u0026 ...\r\n     all(r(13:16)==r(13))  \u0026\u0026 all(r(17:20)==r(17)) \u0026\u0026 all(r(21:24)==r(21))\r\n   solve_vec(solve_vec\u003e18)=[]; %   \r\n   lsolve=length(solve_vec);\r\n   if lsolve\u003e11, Pass=0;end % Length Rqmt\r\n   sum_solve=sum_solve+lsolve;\r\n   min_solve=min(min_solve,lsolve);\r\n   max_solve=max(max_solve,lsolve);\r\n   asolve=floor(sum_solve/zcnt);\r\n %  fprintf('Cube Solved Moves=%i  Avg Moves=%i min=%i  max=%i\\n',lsolve,asolve,min_solve,max_solve)\r\n  else % Deug info\r\n   Pass=0;\r\n   r_fail=r_reset;\r\n  % fprintf('\\n\\nCube NOT Solved???\\n\\n') \r\n  % fprintf('%i ',r); % Current ending data\r\n  % fprintf('\\n')\r\n  % fprintf('%i ',r_reset); % Starting Cube\r\n  end\r\n\r\nend % while of cubes\r\ntoc\r\n\r\nassert(isequal(Pass,1),sprintf('Max Len=%i \\n',max_solve)); % Length Exception\r\nassert(isequal(Pass,1),sprintf('%i ',r_fail)); % Output Non-Solved Cube Start\r\n\r\n%if Pass\r\n% feval(@assignin,'caller','score',min(100,floor(asolve)));\r\n%end\r\n\r\nfprintf('Moves: Avg %i   Min %i   Max %i\\n',asolve,min_solve,max_solve)\r\n\r\n%%\r\nvf=[9 2 11 4 6 8 5 7 21 10 23 12 13 14 15 16 17 3 19 1 20 22 18 24 ; \r\n    1 2 13 15 5 4 7 3 10 12 9 11 22 14 21 16 17 18 19 20 6 8 23 24 ;\r\n    1 19 3 17 5 6 7 8 9 2 11 4 14 16 13 15 24 18 22 20 21 10 23 12 ;\r\n    2 4 1 3 17 18 7 8 5 6 11 12 9 10 15 16 13 14 19 20 21 22 23 24 ;\r\n    7 5 3 4 23 6 24 8 9 10 11 12 13 1 15 2 18 20 17 19 21 22 16 14 ;\r\n    1 2 3 4 5 6 11 12 9 10 15 16 13 14 19 20 17 18 7 8 22 24 21 23 ;\r\n    20 2 18 4 7 5 8 6 1 10 3 12 13 14 15 16 17 23 19 21 9 22 11 24 ;\r\n    1 2 8 6 5 21 7 22 11 9 12 10 3 14 4 16 17 18 19 20 15 13 23 24 ;\r\n    1 10 3 12 5 6 7 8 9 22 11 24 15 13 16 14 4 18 2 20 21 19 23 17 ;\r\n    3 1 4 2 9 10 7 8 13 14 11 12 17 18 15 16 5 6 19 20 21 22 23 24 ;\r\n    14 16 3 4 2 6 1 8 9 10 11 12 13 24 15 23 19 17 20 18 21 22 5 7 ;\r\n    1 2 3 4 5 6 19 20 9 10 7 8 13 14 11 12 17 18 15 16 23 21 24 22 ;\r\n    21 2 23 4 8 7 6 5 20 10 18 12 13 14 15 16 17 11 19 9 1 22 3 24 ;\r\n    1 2 22 21 5 15 7 13 12 11 10 9 8 14 6 16 17 18 19 20 4 3 23 24 ;\r\n    1 22 3 24 5 6 7 8 9 19 11 17 16 15 14 13 12 18 10 20 21 2 23 4 ;\r\n    4 3 2 1 13 14 7 8 17 18 11 12 5 6 15 16 9 10 19 20 21 22 23 24 ;\r\n    24 23 3 4 16 6 14 8 9 10 11 12 13 7 15 5 20 19 18 17 21 22 2 1 ;\r\n    1 2 3 4 5 6 15 16 9 10 19 20 13 14 7 8 17 18 11 12 24 23 22 21 ;\r\n    3 1 4 2 9 10 11 12 13 14 15 16 17 18 19 20 5 6 7 8 22 24 21 23 ;\r\n    9 10 11 12 6 8 5 7 21 22 23 24 15 13 16 14 4 3 2 1 20 19 18 17 ;\r\n    14 16 13 15 2 4 1 3 10 12 9 11 22 24 21 23 19 17 20 18 6 8 5 7 ;\r\n    2 4 1 3 17 18 19 20 5 6 7 8 9 10 11 12 13 14 15 16 23 21 24 22 ;\r\n    20 19 18 17 7 5 8 6 1 2 3 4 14 16 13 15 24 23 22 21 9 10 11 12 ;\r\n    7 5 8 6 23 21 24 22 11 9 12 10 3 1 4 2 18 20 17 19 15 13 16 14 ;\r\n    4 3 2 1 13 14 15 16 17 18 19 20 5 6 7 8 9 10 11 12 24 23 22 21 ;\r\n    21 22 23 24 8 7 6 5 20 19 18 17 16 15 14 13 12 11 10 9 1 2 3 4 ; \r\n    24 23 22 21 16 15 14 13 12 11 10 9 8 7 6 5 20 19 18 17 4 3 2 1 ];\r\n\r\n%r=r(vf(mov,:));  % Standard move, r=rubik_rot_min(mov,r);\r\n\r\nPass=1;\r\nr_fail=0;\r\n% Execute 500 cubes and verify completeness and count moves\r\n % initialize cube\r\n r(1:4)=0;     %Left   0 R\r\n r(5:8)=1;     %Up     1 W\r\n r(9:12)=2;    %Front  2 B\r\n r(13:16)=3;   %Down   3 Y\r\n r(17:20)=4;   %Back   4 G\r\n r(21:24)=5;   %Right  5 O\r\n rnorm=r;\r\n\r\n for jrand=1:40  % Ignoring Move Undos since mix=40\r\n   r=r(vf(randi(18),:));\r\n end\r\n\r\n q=500;\r\n ra=zeros(q,24);\r\n for i=1:q\r\n  for jrand=1:10  % Ignoring Move Undos since base mix=40\r\n    r=r(vf(randi(18),:));\r\n  end\r\n % add 10 new moves to prior vector\r\n  ra(i,:)=r;\r\n end\r\n\r\n% The Time Trail section does not check accuracy, that is done above\r\nt0=clock;\r\nfor i=1:q\r\n solve_vec=rubik_solve_mini(ra(q,:));\r\nend\r\ndt=etime(clock,t0)*1000;\r\n\r\n%assert(isequal(find_fast(a,val(1)),find(a==val(1),1,'first')))\r\nfprintf('Your Time = %i msec\\n',floor(dt))\r\nfeval(@assignin,'caller','score',min(2000,floor(dt)));\r\n%   Performance Score","published":true,"deleted":false,"likes_count":5,"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":"2012-09-09T17:48:25.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-09-09T06:26:08.000Z","updated_at":"2025-11-17T16:25:58.000Z","published_at":"2012-09-09T16:33: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:r\u003e\u003cw:t\u003eThe Challenge is to Near or Optimally Solve a thoroughly scrambled Mini-Rubik's Cube(2x2x2).\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\u003eAny Mini-Cube can be solved in 11 or fewer Face Moves. There are only 3,674,160 unique cube positions, with only 2344 requiring the fulll 11 moves. Cube moves do not count.\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 Performance metric is cumulative Time to Solve 500 cubes (msec).\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\u003eA standard Mini-Rubik's Cube is shown in 3-D and also unfolded to identify the specific Tile-face/Vector numbering.\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 faces are White-Up / Red-Left / Blue-Front / Orange-Right / Yellow-Down / Green-Back (ULFRDB)\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\u003eMoves are denoted as F for clockwise rotation of the Front face. F'(or FP) is CCW and F2 is F twice. The provided function r_new=rubick_rot_mini(mov,r) implements moves 1-18: UFDLBRU'F'D'L'B'R'U2F2D2L2B2R2.\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=\\\"center\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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=\\\"center\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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=\\\"rId2\\\"/\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=\\\"center\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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=\\\"rId3\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Input: (rubik)\\n\\nrubik: row vector of size 24\\n(The cube started [L=0,U=1,F=2,D=3,B=4,R=5] and then receives forty face moves.\\n\\nOutput: move_vec (Numeric of moves to solve)\\n move_vec:values 1:27 for UFDLBR U'F'D'L'B'R' U2F2D2L2B2R2 XYZX'Y'Z'X2Y2Z2]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf the cube was randomized by [1 9] UD', one solution is [3 7] which are the complements in reverse order.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eScoring is Time in msec to solve 500 cubes\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCube Moves X, Y, and Z do not constitute a move but are needed in the vector\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eA string to numeric value function is provided in the template\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eVerifications will be by executing your move vector against the provided Rubik and counting number of face moves.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function rubik_rot_mini(mov,r) is provided in the template. Other functions are provided to re-orient the cube in Cody Challenge 931, Rubik's Mini-Cube.\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 Challenge\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.mathworks.com/matlabcentral/cody/problems/931-rubik-s-mini-cube-solve-randomized-mini-cube-score-moves.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge 931 Rubik's Mini-Cube\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e contains a 3D Mini-Cube Viewer for program development.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://kociemba.org/cube.htm\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCube Theory: 20-moves Any Cube\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=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://peter.stillhq.com/jasmine/rubikscubesolution.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eGeneral Cube Info and Middle Layer\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=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.speedcubing.com/final_layer_print.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpeedCube Bottom Sequences\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=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe site\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.speedcubing.com/CubeSolver/MiniCubeSolver.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMiniCube Solver\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e claims an outstanding 10 minutes to solve a randomized Mini-Cube. Matlab can achieve any Mini-Cube solution in \u0026lt; 497 usec, independent of moves on an i5/16GB machine.\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(Note: Mini-Cube can use the full cube moves and ignore edge effects)\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\u003eComing Soon: Matlab Tetris\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\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image2.png\",\"relationshipId\":\"rId2\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.gif\",\"relationshipId\":\"rId3\"}]},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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\",\"relationship\":null},{\"partUri\":\"/media/image2.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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\",\"relationship\":null},{\"partUri\":\"/media/image1.gif\",\"contentType\":\"image/gif\",\"content\":\"data:image/gif;base64,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\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":916,"title":"Rubik's Cube : Solve Ten Face Move - Speed Scoring","description":"A set of cubes will be scrambled with 10 Face moves.\r\nThe Challenge is to Solve all Cubes in 10 Moves or Less.\r\nScore will be by cumulative time of cubes 2 thru 11. The first cube may be used to load arrays but is still required to solve the cube.\r\nTen moves relates to worst case 18^10 configs - 3.6e12. In actuality there are only 2.4e11 cubes at 10 turns. Brute force might not work.\r\n\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/cube_small.gif\u003e\u003e\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/Cube_Map48_200.png\u003e\u003e\r\n\r\n\u003c\u003chttp://mathworks.com/matlabcentral/images/surf.gif\u003e\u003e\r\n\r\n\r\n.\r\n\r\n*Input:* Cube vector (1x48](see Figure) with values 0:5, eight of each\r\n\r\n*Output:* Rotation Vector of 10 or less values. Values range from 1:18\r\n\r\nValues 1:18 represent the standard cube moves:ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\r\n\r\n*Example:* Move of FL[2 4]  requires L'F' solv_vec=[10 8] at a minimum to solve\r\n\r\nCube=[00303003 44410110 11022222 22253533 53344444 11155555] as integer array\r\n\r\nsolv_vec=[10 8]\r\n\r\nActual solutions will be 8 to 10 values.\r\n\r\n\r\nThe Cube sites claim a capability of solving 10 moves in only 40 hrs.\r\nNot sure if they have Matlab, which can achieve 10 moves in \u003c0.15 sec. Matlab with a 16GB/i5 can solve 12 moves in \u003c 1.8 seconds. Unfortunately, Cody appears to have a memory/processing speed issue which makes the 11 and 12 move Challenges impossible.\r\n\r\n\u003chttp://kociemba.org/cube.htm Cube Org\u003e  and \u003chttp://www.speedcubing.com/CubeSolver/CubeSolver.html Speed Cubing\u003e\r\n\r\nThe next Cube Challenge will be to solve a fully randomized cube in as few moves as possible. With this next challenge I'll post my 3D-Cube Viewer Tool used for algorithm development.\r\n ","description_html":"\u003cp\u003eA set of cubes will be scrambled with 10 Face moves.\r\nThe Challenge is to Solve all Cubes in 10 Moves or Less.\r\nScore will be by cumulative time of cubes 2 thru 11. The first cube may be used to load arrays but is still required to solve the cube.\r\nTen moves relates to worst case 18^10 configs - 3.6e12. In actuality there are only 2.4e11 cubes at 10 turns. Brute force might not work.\u003c/p\u003e\u003cimg src=\"https://sites.google.com/site/razapor/matlab_cody/cube_small.gif\"\u003e\u003cimg src=\"https://sites.google.com/site/razapor/matlab_cody/Cube_Map48_200.png\"\u003e\u003cimg src=\"http://mathworks.com/matlabcentral/images/surf.gif\"\u003e\u003cp\u003e.\u003c/p\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e Cube vector (1x48](see Figure) with values 0:5, eight of each\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e Rotation Vector of 10 or less values. Values range from 1:18\u003c/p\u003e\u003cp\u003eValues 1:18 represent the standard cube moves:ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample:\u003c/b\u003e Move of FL[2 4]  requires L'F' solv_vec=[10 8] at a minimum to solve\u003c/p\u003e\u003cp\u003eCube=[00303003 44410110 11022222 22253533 53344444 11155555] as integer array\u003c/p\u003e\u003cp\u003esolv_vec=[10 8]\u003c/p\u003e\u003cp\u003eActual solutions will be 8 to 10 values.\u003c/p\u003e\u003cp\u003eThe Cube sites claim a capability of solving 10 moves in only 40 hrs.\r\nNot sure if they have Matlab, which can achieve 10 moves in \u0026lt;0.15 sec. Matlab with a 16GB/i5 can solve 12 moves in \u0026lt; 1.8 seconds. Unfortunately, Cody appears to have a memory/processing speed issue which makes the 11 and 12 move Challenges impossible.\u003c/p\u003e\u003cp\u003e\u003ca href=\"http://kociemba.org/cube.htm\"\u003eCube Org\u003c/a\u003e  and \u003ca href=\"http://www.speedcubing.com/CubeSolver/CubeSolver.html\"\u003eSpeed Cubing\u003c/a\u003e\u003c/p\u003e\u003cp\u003eThe next Cube Challenge will be to solve a fully randomized cube in as few moves as possible. With this next challenge I'll post my 3D-Cube Viewer Tool used for algorithm development.\u003c/p\u003e","function_template":"function solv_vec = Rubik_Solve_10(cube)\r\n  solv_vec=[1 2 3 4 5 6 7 8 9 10 11];\r\n\r\nvf=[ 17 2 3 20 5 22 7 8 11 13 16 10 15 9 12 14 41 18 19 44 21 46 23 24 25 26 27 28 29 30 31 32 33 34 6 36 4 38 39 1 40 42 43 37 45 35 47 48; \r\n  1 2 3 4 5 25 28 30 9 10 8 12 7 14 15 6 19 21 24 18 23 17 20 22 43 26 27 42 29 41 31 32 33 34 35 36 37 38 39 40 11 13 16 44 45 46 47 48 ;\r\n  1 2 38 4 36 6 7 33 9 10 11 12 13 14 15 16 17 18 3 20 5 22 23 8 27 29 32 26 31 25 28 30 48 34 35 45 37 43 39 40 41 42 19 44 21 46 47 24 ;\r\n  3 5 8 2 7 1 4 6 33 34 35 12 13 14 15 16 9 10 11 20 21 22 23 24 17 18 19 28 29 30 31 32 25 26 27 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  14 12 9 4 5 6 7 8 46 10 11 47 13 48 15 16 17 18 19 20 21 22 23 24 25 26 1 28 2 30 31 3 35 37 40 34 39 33 36 38 41 42 43 44 45 32 29 27 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 22 23 24 17 18 19 20 21 30 31 32 25 26 27 28 29 38 39 40 33 34 35 36 37 14 15 16 43 45 48 42 47 41 44 46 ;\r\n  40 2 3 37 5 35 7 8 14 12 9 15 10 16 13 11 1 18 19 4 21 6 23 24 25 26 27 28 29 30 31 32 33 34 46 36 44 38 39 41 17 42 43 20 45 22 47 48 ;\r\n  1 2 3 4 5 16 13 11 9 10 41 12 42 14 15 43 22 20 17 23 18 24 21 19 6 26 27 7 29 8 31 32 33 34 35 36 37 38 39 40 30 28 25 44 45 46 47 48 ;\r\n  1 2 19 4 21 6 7 24 9 10 11 12 13 14 15 16 17 18 43 20 45 22 23 48 30 28 25 31 26 32 29 27 8 34 35 5 37 3 39 40 41 42 38 44 36 46 47 33 ;\r\n  6 4 1 7 2 8 5 3 17 18 19 12 13 14 15 16 25 26 27 20 21 22 23 24 33 34 35 28 29 30 31 32 9 10 11 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  27 29 32 4 5 6 7 8 3 10 11 2 13 1 15 16 17 18 19 20 21 22 23 24 25 26 48 28 47 30 31 46 38 36 33 39 34 40 37 35 41 42 43 44 45 9 12 14 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 38 39 40 17 18 19 20 21 14 15 16 25 26 27 28 29 22 23 24 33 34 35 36 37 30 31 32 46 44 41 47 42 48 45 43 ;\r\n  41 2 3 44 5 46 7 8 16 15 14 13 12 11 10 9 40 18 19 37 21 35 23 24 25 26 27 28 29 30 31 32 33 34 22 36 20 38 39 17 1 42 43 4 45 6 47 48 ;\r\n  1 2 3 4 5 43 42 41 9 10 30 12 28 14 15 25 24 23 22 21 20 19 18 17 16 26 27 13 29 11 31 32 33 34 35 36 37 38 39 40 8 7 6 44 45 46 47 48 ;\r\n  1 2 43 4 45 6 7 48 9 10 11 12 13 14 15 16 17 18 38 20 36 22 23 33 32 31 30 29 28 27 26 25 24 34 35 21 37 19 39 40 41 42 3 44 5 46 47 8 ;\r\n  8 7 6 5 4 3 2 1 25 26 27 12 13 14 15 16 33 34 35 20 21 22 23 24 9 10 11 28 29 30 31 32 17 18 19 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  48 47 46 4 5 6 7 8 32 10 11 29 13 27 15 16 17 18 19 20 21 22 23 24 25 26 14 28 12 30 31 9 40 39 38 37 36 35 34 33 41 42 43 44 45 3 2 1 ; \r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 30 31 32 17 18 19 20 21 38 39 40 25 26 27 28 29 14 15 16 33 34 35 36 37 22 23 24 48 47 46 45 44 43 42 41 ];\r\n\r\n% Basic move is implemented using the rot table\r\n% cube=cube(vf(mov,:)); % mov is 1:18 represents  ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\r\n% Note: only the 48 moving cube tiles are mapped\r\n% a solved cube displays as [000000001111111122222222333333334444444455555555]\r\n\r\nend","test_suite":"%%\r\n% Load max score of 50 seconds\r\nfeval(@assignin,'caller','score',50)\r\n%%\r\nglobal vf gPass\r\nPass=1;\r\n% Load rot map 18 moves : ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\r\n vf=[ 17 2 3 20 5 22 7 8 11 13 16 10 15 9 12 14 41 18 19 44 21 46 23 24 25 26 27 28 29 30 31 32 33 34 6 36 4 38 39 1 40 42 43 37 45 35 47 48; \r\n  1 2 3 4 5 25 28 30 9 10 8 12 7 14 15 6 19 21 24 18 23 17 20 22 43 26 27 42 29 41 31 32 33 34 35 36 37 38 39 40 11 13 16 44 45 46 47 48 ;\r\n  1 2 38 4 36 6 7 33 9 10 11 12 13 14 15 16 17 18 3 20 5 22 23 8 27 29 32 26 31 25 28 30 48 34 35 45 37 43 39 40 41 42 19 44 21 46 47 24 ;\r\n  3 5 8 2 7 1 4 6 33 34 35 12 13 14 15 16 9 10 11 20 21 22 23 24 17 18 19 28 29 30 31 32 25 26 27 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  14 12 9 4 5 6 7 8 46 10 11 47 13 48 15 16 17 18 19 20 21 22 23 24 25 26 1 28 2 30 31 3 35 37 40 34 39 33 36 38 41 42 43 44 45 32 29 27 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 22 23 24 17 18 19 20 21 30 31 32 25 26 27 28 29 38 39 40 33 34 35 36 37 14 15 16 43 45 48 42 47 41 44 46 ;\r\n  40 2 3 37 5 35 7 8 14 12 9 15 10 16 13 11 1 18 19 4 21 6 23 24 25 26 27 28 29 30 31 32 33 34 46 36 44 38 39 41 17 42 43 20 45 22 47 48 ;\r\n  1 2 3 4 5 16 13 11 9 10 41 12 42 14 15 43 22 20 17 23 18 24 21 19 6 26 27 7 29 8 31 32 33 34 35 36 37 38 39 40 30 28 25 44 45 46 47 48 ;\r\n  1 2 19 4 21 6 7 24 9 10 11 12 13 14 15 16 17 18 43 20 45 22 23 48 30 28 25 31 26 32 29 27 8 34 35 5 37 3 39 40 41 42 38 44 36 46 47 33 ;\r\n  6 4 1 7 2 8 5 3 17 18 19 12 13 14 15 16 25 26 27 20 21 22 23 24 33 34 35 28 29 30 31 32 9 10 11 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  27 29 32 4 5 6 7 8 3 10 11 2 13 1 15 16 17 18 19 20 21 22 23 24 25 26 48 28 47 30 31 46 38 36 33 39 34 40 37 35 41 42 43 44 45 9 12 14 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 38 39 40 17 18 19 20 21 14 15 16 25 26 27 28 29 22 23 24 33 34 35 36 37 30 31 32 46 44 41 47 42 48 45 43 ;\r\n  41 2 3 44 5 46 7 8 16 15 14 13 12 11 10 9 40 18 19 37 21 35 23 24 25 26 27 28 29 30 31 32 33 34 22 36 20 38 39 17 1 42 43 4 45 6 47 48 ;\r\n  1 2 3 4 5 43 42 41 9 10 30 12 28 14 15 25 24 23 22 21 20 19 18 17 16 26 27 13 29 11 31 32 33 34 35 36 37 38 39 40 8 7 6 44 45 46 47 48 ;\r\n  1 2 43 4 45 6 7 48 9 10 11 12 13 14 15 16 17 18 38 20 36 22 23 33 32 31 30 29 28 27 26 25 24 34 35 21 37 19 39 40 41 42 3 44 5 46 47 8 ;\r\n  8 7 6 5 4 3 2 1 25 26 27 12 13 14 15 16 33 34 35 20 21 22 23 24 9 10 11 28 29 30 31 32 17 18 19 36 37 38 39 40 41 42 43 44 45 46 47 48 ;\r\n  48 47 46 4 5 6 7 8 32 10 11 29 13 27 15 16 17 18 19 20 21 22 23 24 25 26 14 28 12 30 31 9 40 39 38 37 36 35 34 33 41 42 43 44 45 3 2 1 ; \r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 30 31 32 17 18 19 20 21 38 39 40 25 26 27 28 29 14 15 16 33 34 35 36 37 22 23 24 48 47 46 45 44 43 42 41 ];\r\n\r\nr=ones(1,48,'uint8'); \r\n r(1:8)=0; %5;     %Left % straight numeric mapping\r\n r(9:16)=1; %2;   %Up\r\n r(17:24)=2; %3;   %Front\r\n r(25:32)=3; %4;   %Down\r\n r(33:40)=4; %6;   %Back\r\n r(41:48)=5; %7; %Right\r\n \r\nmix=10;\r\nrmov=randi(18,[mix,1]);\r\n for i=1:length(rmov) \r\n  if i\u003e1 % Eliminate move undos\r\n  % f2 f2 or f f'  or f' f\r\n   if (rmov(i)\u003e12 \u0026\u0026 rmov(i-1)==rmov(i))||(rmov(i-1)\u003c7 \u0026\u0026 rmov(i)==rmov(i-1)+6)||...\r\n       (rmov(i-1)\u003e6  \u0026\u0026 rmov(i)==rmov(i-1)-6)    \r\n    rmov(i)=rmov(i)+1;   % 1:17 map to 2:18  18 map to 1\r\n    if rmov(i)==19,rmov(i)=1;end\r\n   end\r\n  end\r\n  r=r(vf(rmov(i),:));\r\n end\r\n\r\n\r\n%assert(isequal(your_fcn_name(x),y_correct))\r\n\r\nt0=clock;\r\nsolv_vec=Rubik_Solve_10(r)\r\ndt=etime(clock,t0)\r\n% Dubious Code Check\r\nif all(r(1:8)==r(1)) \u0026\u0026 all(r(9:16)==r(9))  \u0026\u0026 all(r(17:24)==r(17)) \u0026\u0026 ...\r\n     all(r(25:32)==r(25))  \u0026\u0026 all(r(33:40)==r(33)) \u0026\u0026 all(r(41:48)==r(41))\r\n Pass=0;\r\nend\r\n\r\nPass=Pass \u0026\u0026 length(solv_vec\u003c11);\r\n\r\nlength(solv_vec)\r\nrt=r;\r\nfor i=1:length(solv_vec)\r\n   rt=rt(vf(solv_vec(i),:));\r\n end\r\n if all(rt(1:8)==rt(1)) \u0026\u0026 all(rt(9:16)==rt(9))  \u0026\u0026 all(rt(17:24)==rt(17)) \u0026\u0026 ...\r\n     all(rt(25:32)==rt(25))  \u0026\u0026 all(rt(33:40)==rt(33)) \u0026\u0026 all(rt(41:48)==rt(41))\r\n   fprintf('Cube Solved\\n')\r\n  Pass=Pass; % No change to Pass status\r\n else\r\n  fprintf('Cube Solve Failure\\n')\r\n  Pass=0;\r\n end\r\n\r\nassert(isequal(Pass,1))\r\n\r\ngPass=Pass;\r\n\r\n%%\r\n\r\nglobal gPass vf\r\nPass1=gPass;\r\n\r\n\r\nr=ones(1,48,'uint8'); \r\n r(1:8)=0; %5;     %Left % straight numeric mapping\r\n r(9:16)=1; %2;   %Up\r\n r(17:24)=2; %3;   %Front\r\n r(25:32)=3; %4;   %Down\r\n r(33:40)=4; %6;   %Back\r\n r(41:48)=5; %7; %Right\r\nrbase=r;\r\n\r\nsum_dt=0;\r\nfor cases=1:10 \r\n r=rbase;\r\n mix=10;\r\n rmov=randi(18,[mix,1]);\r\n  for i=1:length(rmov) \r\n   if i\u003e1 % Eliminate move undos\r\n   % f2 f2 or f f'  or f' f\r\n    if (rmov(i)\u003e12 \u0026\u0026 rmov(i-1)==rmov(i))||(rmov(i-1)\u003c7 \u0026\u0026 rmov(i)==rmov(i- 1)+6)||...\r\n       (rmov(i-1)\u003e6  \u0026\u0026 rmov(i)==rmov(i-1)-6)    \r\n     rmov(i)=rmov(i)+1;   % 1:17 map to 2:18  18 map to 1\r\n     if rmov(i)==19,rmov(i)=1;end\r\n    end\r\n   end\r\n   r=r(vf(rmov(i),:));\r\n  end\r\n\r\n\r\nt0=clock;\r\nsolv_vec=Rubik_Solve_10(r)\r\ndt=etime(clock,t0)\r\nsum_dt=sum_dt+dt;\r\n\r\nPass1=Pass1 \u0026\u0026 length(solv_vec\u003c11);\r\n\r\nrt=r;\r\nfor i=1:length(solv_vec)\r\n   rt=rt(vf(solv_vec(i),:));\r\n end\r\n if all(rt(1:8)==rt(1)) \u0026\u0026 all(rt(9:16)==rt(9))  \u0026\u0026 all(rt(17:24)==rt(17)) \u0026\u0026 ...\r\n     all(rt(25:32)==rt(25))  \u0026\u0026 all(rt(33:40)==rt(33)) \u0026\u0026 all(rt(41:48)==rt(41))\r\n   fprintf('Cube Solved\\n')\r\n  Pass1=Pass1; % No change to Pass1 status\r\n else\r\n  fprintf('Cube Solve Failure\\n')\r\n  Pass1=0;\r\n end\r\n\r\nend\r\n\r\n\r\n\r\nassert(isequal(Pass1,1))\r\n\r\nif Pass1\r\n feval(@assignin,'caller','score',floor(sum_dt))\r\nend\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":2,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-08-19T03:27:10.000Z","updated_at":"2012-08-26T03:40:30.000Z","published_at":"2012-08-19T07:18:19.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\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/media/image1.gif\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/media/image1.png\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId3\",\"target\":\"/media/image2.gif\"}],\"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\u003eA set of cubes will be scrambled with 10 Face moves. The Challenge is to Solve all Cubes in 10 Moves or Less. Score will be by cumulative time of cubes 2 thru 11. The first cube may be used to load arrays but is still required to solve the cube. Ten moves relates to worst case 18^10 configs - 3.6e12. In actuality there are only 2.4e11 cubes at 10 turns. Brute force might not work.\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:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId2\\\"/\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\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId3\\\"/\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\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\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 Cube vector (1x48](see Figure) with values 0:5, eight of each\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 Rotation Vector of 10 or less values. Values range from 1:18\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\u003eValues 1:18 represent the standard cube moves:ufdlbru'f'd'l'b'r'u2f2d2l2b2r2\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 Move of FL[2 4] requires L'F' solv_vec=[10 8] at a minimum to solve\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\u003eCube=[00303003 44410110 11022222 22253533 53344444 11155555] as integer 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:t\u003esolv_vec=[10 8]\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\u003eActual solutions will be 8 to 10 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Cube sites claim a capability of solving 10 moves in only 40 hrs. Not sure if they have Matlab, which can achieve 10 moves in \u0026lt;0.15 sec. Matlab with a 16GB/i5 can solve 12 moves in \u0026lt; 1.8 seconds. Unfortunately, Cody appears to have a memory/processing speed issue which makes the 11 and 12 move Challenges impossible.\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:hyperlink w:docLocation=\\\"http://kociemba.org/cube.htm\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCube Org\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and\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.speedcubing.com/CubeSolver/CubeSolver.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpeed Cubing\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:t\u003eThe next Cube Challenge will be to solve a fully randomized cube in as few moves as possible. With this next challenge I'll post my 3D-Cube Viewer Tool used for algorithm development.\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\"},{\"partUri\":\"/media/image1.gif\",\"contentType\":\"image/gif\",\"content\":\"data:image/gif;base64,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\"},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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\"},{\"partUri\":\"/media/image2.gif\",\"contentType\":\"image/gif\",\"content\":\"data:image/gif;base64,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\"}]}"}],"term":"tag:\"persistent\"","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:\"persistent\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"persistent\"","","\"","persistent","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f45dd7cf838\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f45dd7cf798\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f45dd7ceed8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f45dd7cfab8\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f45dd7cfa18\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f45dd7cf978\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f45dd7cf8d8\u003e":"tag:\"persistent\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f45dd7cf8d8\u003e":"tag:\"persistent\""},"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":"search","password":"J3bGPZzQ7asjJcCk","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:\"persistent\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"persistent\"","","\"","persistent","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f45dd7cf838\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f45dd7cf798\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f45dd7ceed8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f45dd7cfab8\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f45dd7cfa18\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f45dd7cf978\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f45dd7cf8d8\u003e":"tag:\"persistent\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f45dd7cf8d8\u003e":"tag:\"persistent\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":1836,"difficulty_rating":"easy-medium"},{"id":815,"difficulty_rating":"easy-medium"},{"id":2443,"difficulty_rating":"easy-medium"},{"id":42805,"difficulty_rating":"easy-medium"},{"id":42291,"difficulty_rating":"medium"},{"id":44237,"difficulty_rating":"medium"},{"id":44236,"difficulty_rating":"medium"},{"id":937,"difficulty_rating":"hard"},{"id":916,"difficulty_rating":"unrated"}]}}