{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2026-04-06T14:01:22.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2026-04-06T00:00:00.000Z","image_id":null,"published":true,"community_created":false,"status_id":2,"is_default_group_for_player":false,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"description_opc":null,"description_html":null,"published_at":null},"problems":[{"id":44675,"title":"Find prime number couples","description":"Given a vector a, which will always contain at least one pair of prime numbers couple, return a matrix called 'couple' in which each row contains one pair of prime couples. A prime number couple pair are two prime numbers with a difference of two between them. Keep in mind that the numbers 2, 3, 5, and 7 are prime numbers.\r\n\r\nFor example, if a=[1 2 3 6 11 13 101 103], the output should be couple=[11 13; 101 103].","description_html":"\u003cp\u003eGiven a vector a, which will always contain at least one pair of prime numbers couple, return a matrix called 'couple' in which each row contains one pair of prime couples. A prime number couple pair are two prime numbers with a difference of two between them. Keep in mind that the numbers 2, 3, 5, and 7 are prime numbers.\u003c/p\u003e\u003cp\u003eFor example, if a=[1 2 3 6 11 13 101 103], the output should be couple=[11 13; 101 103].\u003c/p\u003e","function_template":"function couple = find_prime_couples(a)\r\n\r\nend","test_suite":"%%\r\na=[1 4 6 7 8 11 13 16 23 29 31];\r\ncouple=[11 13; 29 31];\r\nassert(isequal(find_prime_couples(a),couple))\r\n%%\r\na=[16\t97\t88\t49\t41\t13\t93\t1\t19\t33\t6\t15\t73\t49\t34\t24\t46\t19\t33\t27\t84\t70\t34\t59\t29\t27\t26\t68\t52\t8\t6\t26\t44\t29\t68\t95\t78\t64\t76\t75\t59\t78\t40\t61\t25\t30\t2\t35\t15\t42\t16\t83\t74\t10\t83\t23\t11\t67\t96\t82\t63\t33\t28\t44\t36\t88\t1\t70\t34\t31\t65\t93\t90\t100\t8\t13\t99\t10\t69\t93\t15\t89\t2\t35\t24\t99\t85\t80\t91\t79\t84\t33\t75\t67\t29\t34\t91\t4\t70\t21];\r\ncouple=[11 13; 29 31; 59 61];\r\nassert(isequal(find_prime_couples(a),couple))\r\n%%\r\na=[2 3\t5 7\t11\t13\t17\t19\t23\t29\t31\t37\t41\t43\t47\t53\t59\t61\t67\t71\t73\t79\t83\t89\t97\t101\t103\t107\t109\t113\t127\t131\t137\t139\t149\t151\t157\t163\t167\t173\t179\t181\t191\t193\t197\t199];\r\ncouple=[3\t5;\r\n5\t7;\r\n11\t13;\r\n17\t19;\r\n29\t31;\r\n41\t43;\r\n59\t61;\r\n71\t73;\r\n101\t103;\r\n107\t109;\r\n137\t139;\r\n149\t151;\r\n179\t181;\r\n191\t193;\r\n197\t199];\r\nassert(isequal(find_prime_couples(a),couple))","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":183778,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":26,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-06-06T14:10:53.000Z","updated_at":"2026-01-09T19:11:22.000Z","published_at":"2018-06-06T14:10:53.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\u003eGiven a vector a, which will always contain at least one pair of prime numbers couple, return a matrix called 'couple' in which each row contains one pair of prime couples. A prime number couple pair are two prime numbers with a difference of two between them. Keep in mind that the numbers 2, 3, 5, and 7 are prime numbers.\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\u003eFor example, if a=[1 2 3 6 11 13 101 103], the output should be couple=[11 13; 101 103].\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":1509,"title":"Fast Fourier transform algorithm","description":"Your task is to implement the Fast Fourier transform algorithm, without using builtin MATLAB fft commands e.g. fft, fft2, or hardcoded numeric answers in the test case. The test suite employs regular expression matching to reject such solutions.\r\nCreative hacking attempts are appreciated. While I will update the test case accordingly, I'll send you some MathWorks swag if you're the first to demonstrate a new way to get the Test Suite to pass (maybe a t-shirt or coffee mug, you'll have to try and see :-) Jose', yours is on the way.\r\nreference: http://en.wikipedia.org/wiki/Fast_Fourier_transform","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: 144px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 72px; transform-origin: 407px 72px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 381.5px 8px; transform-origin: 381.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYour task is to implement the Fast Fourier transform algorithm, without using builtin MATLAB fft commands e.g. fft, fft2, or hardcoded numeric answers in the test case. The test suite employs regular expression matching to reject such solutions.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 373.5px 8px; transform-origin: 373.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eCreative hacking attempts are appreciated. While I will update the test case accordingly, I'll send you some MathWorks swag if you're the first to demonstrate a new way to get the Test Suite to pass (maybe a t-shirt or coffee mug, you'll have to try and see :-) Jose', yours is on the way.\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: 32.5px 8px; transform-origin: 32.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003ereference:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/1509-fast-fourier-transform-algorithm/edit#null\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003ehttp://en.wikipedia.org/wiki/Fast_Fourier_transform\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = fast_fourier(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nassert(isequal(exist('fast_fourier.m'),2))\r\n%%\r\n%%\r\nfiletext = fileread('fast_fourier.m');\r\nassert(isempty(strfind(filetext, 'fft')))\r\nassert(isempty(strfind(filetext, 'regexp')))\r\n\r\n%%\r\nfor k=5:50\r\n  x = [11;k;2];\r\n  y_correct = fft(x);\r\n  assert(all(abs(fast_fourier(x)-y_correct)\u003c1e-4))\r\nend","published":true,"deleted":false,"likes_count":0,"comments_count":3,"created_by":5657,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":14,"test_suite_updated_at":"2022-01-02T19:35:37.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-05-14T14:47:34.000Z","updated_at":"2022-01-02T19:35:37.000Z","published_at":"2013-05-14T14:47:34.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\u003eYour task is to implement the Fast Fourier transform algorithm, without using builtin MATLAB fft commands e.g. fft, fft2, or hardcoded numeric answers in the test case. The test suite employs regular expression matching to reject such solutions.\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\u003eCreative hacking attempts are appreciated. While I will update the test case accordingly, I'll send you some MathWorks swag if you're the first to demonstrate a new way to get the Test Suite to pass (maybe a t-shirt or coffee mug, you'll have to try and see :-) Jose', yours is on the way.\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\u003ereference:\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\u003ehttp://en.wikipedia.org/wiki/Fast_Fourier_transform\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\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":1032,"title":"compare strings","description":"Given 2 strings and 3 actions (Insert,delete,replace) on characters. Find the difference between two strings.\r\n\r\nExample:\r\n\r\nstring1 = 'spring'\r\n\r\nstring2 = 'strange'\r\n\r\nreplace(p,t), replace(i,a), insert(e) = 3 actions = 3 differences\r\n\r\nso the answer is 3","description_html":"\u003cp\u003eGiven 2 strings and 3 actions (Insert,delete,replace) on characters. Find the difference between two strings.\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cp\u003estring1 = 'spring'\u003c/p\u003e\u003cp\u003estring2 = 'strange'\u003c/p\u003e\u003cp\u003ereplace(p,t), replace(i,a), insert(e) = 3 actions = 3 differences\u003c/p\u003e\u003cp\u003eso the answer is 3\u003c/p\u003e","function_template":"function d = findDifference(str1,str2)\r\n  d = length(str1)-length(str2);\r\nend","test_suite":"%%\r\nstr1 = 'spring';\r\nstr2 = 'strange';\r\nd_correct = 3;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'this';\r\nstr2 = 'has';\r\nd_correct = 2;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'acgtacgtacgt';\r\nstr2 = 'acatacttgtact';\r\nd_correct = 4;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'fractapertornisem';\r\nstr2 = 'alfracchaperitonism';\r\nd_correct = 7;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'spring';\r\nstr2 = 'spring';\r\nd_correct = 0;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'qazwsxedcrfvtgb';\r\nstr2 = 'qazwsmedcvfr';\r\nd_correct = 6;\r\nassert(isequal(findDifference(str1,str2),d_correct))","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":4320,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":32,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-11-14T11:22:25.000Z","updated_at":"2025-12-14T16:53:53.000Z","published_at":"2012-11-14T11:22:25.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\u003eGiven 2 strings and 3 actions (Insert,delete,replace) on characters. Find the difference between two strings.\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\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003estring1 = 'spring'\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\u003estring2 = 'strange'\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\u003ereplace(p,t), replace(i,a), insert(e) = 3 actions = 3 differences\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\u003eso the answer is 3\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":886,"title":"Rubik's Cube: Solve Randomized Cube  - Score : Moves","description":"The Challenge is to Solve a thoroughly scrambled Rubik's Cube.\r\n\r\nThe Performance metric is average number of moves for solving 200 cubes.\r\n\r\nA standard 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 loaded function r_new=rubick_rot(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/cube_small.gif\u003e\u003e\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/Cube_Map28_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 54\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] DU' which are the complements in reverse order. \r\n* Scoring is average face moves for 200 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(mov,r) is available for intermediate processing\r\n\r\n\r\nThe Function Template Contains a 3D Cube Viewer and the first part of the Beginner's Solution at the bottom in a comment block.\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\r\n\r\nComing Soon: The Mini-Cube  (2x2x2)  Not as easy as it looks","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: 1195.12px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 597.567px; transform-origin: 407px 597.567px; 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: 199.733px 7.91667px; transform-origin: 199.733px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Challenge is to Solve a thoroughly scrambled Rubik's 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: 235.333px 7.91667px; transform-origin: 235.333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Performance metric is average number of moves for solving 200 cubes.\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: 340.283px 7.91667px; transform-origin: 340.283px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eA standard 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: 374.7px 7.91667px; transform-origin: 374.7px 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 loaded function r_new=rubick_rot(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: 134.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 67.4667px; text-align: center; transform-origin: 384px 67.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/gif;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 246.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 123.467px; text-align: center; transform-origin: 384px 123.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 54\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: 341.067px 7.91667px; transform-origin: 341.067px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eIf the cube was randomized by [1 9] UD', one solution is [3 7] DU' 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: 140.033px 7.91667px; transform-origin: 140.033px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eScoring is average face moves for 200 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: 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: 212.267px 7.91667px; transform-origin: 212.267px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function rubik_rot(mov,r) is available for intermediate processing\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: 382px 7.91667px; transform-origin: 382px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Function Template Contains a 3D Cube Viewer and the first part of the Beginner's Solution at the bottom in a comment block.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cul style=\"block-size: 81.7333px; 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 40.8667px; transform-origin: 391px 40.8667px; 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\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: 189.433px 7.91667px; transform-origin: 189.433px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eComing Soon: The Mini-Cube (2x2x2) Not as easy as it looks\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function solve_vec = rubik_solve(r)\r\n% Expect Numeric representation of moves (1:27):\r\n% 1:27 are ufdlbr upfpdplpbprp u2f2d2l2b2r2 xyzxpypzpx2y2z2\r\n solve_vec=[]; \r\nend\r\n\r\n% Convert Standard cube notation into numeric solv_vec values\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\r\n\r\n% This function is already loaded and hashed. This is primarily for info\r\nfunction r=rubik_rot(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 54 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 54\r\n%\r\n% Perform Rubik Cube face rotations and cube rotations\r\n% L 1:9 U 10:18 F 19:27 D 28:36 B 37:45 R 46:54 \r\n% \r\npersistent vf\r\nif isempty(vf) %\r\nvf=[19 2 3 22 5 6 25 8 9 12 15 18 11 14 17 10 13 16 46 20 21 49 23 24 52 26 27 28 29 30 31 32 33 34 35 36 37 38 7 40 41 4 43 44 1 45 47 48 42 50 51 39 53 54; \r\n  1 2 3 4 5 6 28 31 34 10 11 9 13 14 8 16 17 7 21 24 27 20 23 26 19 22 25 48 29 30 47 32 33 46 35 36 37 38 39 40 41 42 43 44 45 12 15 18 49 50 51 52 53 54 ;\r\n  1 2 43 4 5 40 7 8 37 10 11 12 13 14 15 16 17 18 19 20 3 22 23 6 25 26 9 30 33 36 29 32 35 28 31 34 54 38 39 51 41 42 48 44 45 46 47 21 49 50 24 52 53 27 ;\r\n  3 6 9 2 5 8 1 4 7 37 38 39 13 14 15 16 17 18 10 11 12 22 23 24 25 26 27 19 20 21 31 32 33 34 35 36 28 29 30 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  16 13 10 4 5 6 7 8 9 52 11 12 53 14 15 54 17 18 19 20 21 22 23 24 25 26 27 28 29 1 31 32 2 34 35 3 39 42 45 38 41 44 37 40 43 46 47 48 49 50 51 36 33 30 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 25 26 27 19 20 21 22 23 24 34 35 36 28 29 30 31 32 33 43 44 45 37 38 39 40 41 42 16 17 18 48 51 54 47 50 53 46 49 52 ;\r\n  45 2 3 42 5 6 39 8 9 16 13 10 17 14 11 18 15 12 1 20 21 4 23 24 7 26 27 28 29 30 31 32 33 34 35 36 37 38 52 40 41 49 43 44 46 19 47 48 22 50 51 25 53 54 ;\r\n  1 2 3 4 5 6 18 15 12 10 11 46 13 14 47 16 17 48 25 22 19 26 23 20 27 24 21 7 29 30 8 32 33 9 35 36 37 38 39 40 41 42 43 44 45 34 31 28 49 50 51 52 53 54 ;\r\n  1 2 21 4 5 24 7 8 27 10 11 12 13 14 15 16 17 18 19 20 48 22 23 51 25 26 54 34 31 28 35 32 29 36 33 30 9 38 39 6 41 42 3 44 45 46 47 43 49 50 40 52 53 37 ;\r\n  7 4 1 8 5 2 9 6 3 19 20 21 13 14 15 16 17 18 28 29 30 22 23 24 25 26 27 37 38 39 31 32 33 34 35 36 10 11 12 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  30 33 36 4 5 6 7 8 9 3 11 12 2 14 15 1 17 18 19 20 21 22 23 24 25 26 27 28 29 54 31 32 53 34 35 52 43 40 37 44 41 38 45 42 39 46 47 48 49 50 51 10 13 16 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 43 44 45 19 20 21 22 23 24 16 17 18 28 29 30 31 32 33 25 26 27 37 38 39 40 41 42 34 35 36 52 49 46 53 50 47 54 51 48 ;\r\n  46 2 3 49 5 6 52 8 9 18 17 16 15 14 13 12 11 10 45 20 21 42 23 24 39 26 27 28 29 30 31 32 33 34 35 36 37 38 25 40 41 22 43 44 19 1 47 48 4 50 51 7 53 54 ;\r\n  1 2 3 4 5 6 48 47 46 10 11 34 13 14 31 16 17 28 27 26 25 24 23 22 21 20 19 18 29 30 15 32 33 12 35 36 37 38 39 40 41 42 43 44 45 9 8 7 49 50 51 52 53 54 ;\r\n  1 2 48 4 5 51 7 8 54 10 11 12 13 14 15 16 17 18 19 20 43 22 23 40 25 26 37 36 35 34 33 32 31 30 29 28 27 38 39 24 41 42 21 44 45 46 47 3 49 50 6 52 53 9 ;\r\n  9 8 7 6 5 4 3 2 1 28 29 30 13 14 15 16 17 18 37 38 39 22 23 24 25 26 27 10 11 12 31 32 33 34 35 36 19 20 21 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  54 53 52 4 5 6 7 8 9 36 11 12 33 14 15 30 17 18 19 20 21 22 23 24 25 26 27 28 29 16 31 32 13 34 35 10 45 44 43 42 41 40 39 38 37 46 47 48 49 50 51 3 2 1 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 34 35 36 19 20 21 22 23 24 43 44 45 28 29 30 31 32 33 16 17 18 37 38 39 40 41 42 25 26 27 54 53 52 51 50 49 48 47 46 ;\r\n  7 4 1 8 5 2 9 6 3 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 48 51 54 47 50 53 46 49 52 ;\r\n  19 20 21 22 23 24 25 26 27 12 15 18 11 14 17 10 13 16 46 47 48 49 50 51 52 53 54 34 31 28 35 32 29 36 33 30 9 8 7 6 5 4 3 2 1 45 44 43 42 41 40 39 38 37 ;\r\n  30 33 36 29 32 35 28 31 34 3 6 9 2 5 8 1 4 7 21 24 27 20 23 26 19 22 25 48 51 54 47 50 53 46 49 52 43 40 37 44 41 38 45 42 39 12 15 18 11 14 17 10 13 16 ;\r\n  3 6 9 2 5 8 1 4 7 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 52 49 46 53 50 47 54 51 48 ;\r\n  45 44 43 42 41 40 39 38 37 16 13 10 17 14 11 18 15 12 1 2 3 4 5 6 7 8 9 30 33 36 29 32 35 28 31 34 54 53 52 51 50 49 48 47 46 19 20 21 22 23 24 25 26 27 ;\r\n  16 13 10 17 14 11 18 15 12 52 49 46 53 50 47 54 51 48 25 22 19 26 23 20 27 24 21 7 4 1 8 5 2 9 6 3 39 42 45 38 41 44 37 40 43 34 31 28 35 32 29 36 33 30 ;\r\n  9 8 7 6 5 4 3 2 1 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 54 53 52 51 50 49 48 47 46 ;\r\n  46 47 48 49 50 51 52 53 54 18 17 16 15 14 13 12 11 10 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 1 2 3 4 5 6 7 8 9 ; \r\n  54 53 52 51 50 49 48 47 46 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 45 44 43 42 41 40 39 38 37 9 8 7 6 5 4 3 2 1 ];\r\nend\r\n\r\nr=r(vf(mov,:));\r\n\r\nend\r\n\r\n\r\n\r\n\r\n\r\n\r\n% Cube Viewer and Cube Solver Development Environment\r\n%{\r\nfunction Rubik_3D_2754_Solver_viewer\r\n%Rubiks Cube Play\r\n%Creator: Richard Zapor\r\n% 09/01/12\r\nclear all\r\nglobal pmap plate zCmap r  % For 3D  viewer\r\n\r\n% initialize cube\r\n r(1:9)=0;     %Left   0 R\r\n r(10:18)=1;   %Up     1 W\r\n r(19:27)=2;   %Front  2 B\r\n r(28:36)=3;   %Down   3 Y\r\n r(37:45)=4;   %Back   4 G\r\n r(46:54)=5;   %Right  5 O\r\n rnorm=r;\r\n \r\n % Map 3D platelettes and surfaces\r\n [pmap plate]=cube_faces; % One time association of array to 3D surfaces\r\n  % zCmap=[0,0,0;1,1,1;0,0,1;1,1,0;1,0,0;0,1,0;1,.6,0]; \r\n  % 1-Blk,2-Wht,3-Blu,4-Yellow,5-Red,6-Green,7-Orange\r\n  \r\n  zCmap=[0,0,0;1,0,0;1,1,1;0,0,1;1,1,0;0,1,0;1,.6,0]; \r\n  % 1-Blk,2-Red,3-Wht,4-Blu,5-Yellow,6-Green,7-Orange\r\n\r\n% Initialize 3D figure\r\nfigure(2);set(gca,'CameraPosition',[6 -2 7]); % Initial 3D setup\r\n   axis ([-1 4 -1 4 -1 4]);\r\n   axis equal % This is slow but needed for free rotate 1.2 sec\r\n   axis off\r\nview3D % Calls subroutine that produces a 3D image in figure 2\r\n\r\n% r=rubik_rot2(r,mov)\r\n% mov is 1:27;  1-6 UFDLB 7-12 U'F;D'L'B' 13-18 U2F2D2L2B2 \r\n%             22-27 XYZ X'Y'Z' X2Y2Z2  \r\n% X cube-R, Y cube-U,  Z cube-F\r\n\r\nfprintf('Move Entry (UFDLBRXYZ) eg U U2 U'' (or Up) or G=GoReset P=Play Q-Quit  :\\n');\r\nwhile 1 % Infinite loop\r\n str1=input('Enter Move(s):','s');\r\n if isempty(str1),continue;end\r\n movestr1=regexp(upper(strtrim(str1)),'\\s*','split');\r\n if movestr1{1}=='P',break;end\r\n if movestr1{1}=='Q',return;end\r\n if movestr1{1}=='G'\r\n  r=rnorm;\r\n  view3D\r\n  continue;\r\n end\r\n \r\n move_vec=decode27_movestr_rev001(str1);\r\n \r\n for i=1:length(move_vec) \r\n  r=rubik_rot(move_vec(i),r);\r\n end\r\n view3D\r\n%  pause(0.1)\r\n \r\nend % while move manipulation practice loop\r\n\r\n% Setup Cube and Play\r\n\r\nfprintf('\\n\\nSolve Multiple Cubes\\n')\r\nzcnt=0;\r\nsum_solve=0;\r\nmin_solve=1000;\r\nmax_solve=0;\r\ntic\r\nwhile 1 % Games loop\r\n    mix=40; % Very random cube\r\n    zcnt=zcnt+1;\r\n    if zcnt\u003e10,break;end\r\n% mix=input('\\n\\nHow many random face rotations? (0=Exit) : ');\r\n% if isempty(mix),continue;end\r\n\r\n r=rnorm;\r\n % Initial mix\r\n mov=randi(18,[mix,1]);\r\n for i=1:length(mov) \r\n  if i\u003e1 % Eliminate move undos\r\n  % f2 f2 or f f'  or f' f\r\n   if (mov(i)\u003e12 \u0026\u0026 mov(i-1)==mov(i))||(mov(i-1)\u003c7 \u0026\u0026 mov(i)==mov(i-1)+6)||...\r\n       (mov(i-1)\u003e6  \u0026\u0026 mov(i)==mov(i-1)-6)    \r\n    mov(i)=mov(i)+1;   % 1:17 map to 2:18  18 map to 1\r\n    if mov(i)==19,mov(i)=1;end\r\n   end\r\n  end\r\n  r=rubik_rot(mov(i),r);\r\n end\r\n \r\n r_reset=r;\r\n \r\n solve_vec=[];\r\n \r\n % Check cube for Good face and Edges\r\n % Place on Up; Solve Cross/Corners with u u' or u2\r\n % Assures single move i solved in 1 move, may solve at bottom solid face\r\n % check\r\n \r\n% Insert Solution Code Starting Here\r\n \r\n   \r\n  for icross=1:4 % Solve cross\r\n   movestr=solve_cross_str(r);\r\n   move_vec=decode27_movestr_rev001(movestr);\r\n   \r\n   move_vec=[move_vec 23]; % add a Y to get to next face\r\n   solve_vec=[solve_vec move_vec];\r\n   \r\n   for i=1:length(move_vec) \r\n    r=rubik_rot(move_vec(i),r);\r\n   end\r\n  end % cross\r\n  \r\n  view3D\r\n% No further moves are implemented\r\n  \r\n  % Solve Top Corners\r\n  for corners=1:4 % Solve Top corners TLFC\r\n   movestr='';\r\n   %movestr=solve_corners_str(r); % Function deleted from template\r\n   move_vec=decode27_movestr_rev001(movestr);\r\n   \r\n   move_vec=[move_vec 23]; % add a Y to get to next face\r\n   solve_vec=[solve_vec move_vec];\r\n   \r\n   for i=1:length(move_vec) \r\n    r=rubik_rot(move_vec(i),r);\r\n   end\r\n  end % corners\r\n  \r\n  % Solve Middle Edges\r\n  for edges=1:4 % Solve Edge MLFE\r\n   movestr='';\r\n   %movestr=solve_edges_str(r); % Function deleted from template\r\n   move_vec=decode27_movestr_rev001(movestr);\r\n   \r\n   move_vec=[move_vec 23]; % add a Y to get to next face\r\n   solve_vec=[solve_vec move_vec];\r\n   \r\n   for i=1:length(move_vec) \r\n    r=rubik_rot(move_vec(i),r);\r\n   end\r\n  end % MLFE\r\n  \r\n  % Solve Bottom by flipping to Top and running SpeedCube Sequences\r\n  \r\n  % Position Bottom to Top\r\n  r=rubik_rot(25,r);\r\n  solve_vec=[solve_vec 25];\r\n\r\n  \r\n\r\n  \r\n  if all(r(1:9)==r(5)) \u0026\u0026 all(r(10:18)==r(14))  \u0026\u0026 all(r(19:27)==r(23)) \u0026\u0026 ...\r\n     all(r(28:36)==r(32))  \u0026\u0026 all(r(37:45)==r(41)) \u0026\u0026 all(r(46:54)==r(50))\r\n   fprintf('Cube Solved Prior to Bottom Corrections Moves=%i\\n',length(solve_vec))\r\n  else\r\n   %view3D\r\n    movestr='';\r\n  % movestr=solve_bottom_str(r); % Function deleted from template\r\n   move_vec=decode27_movestr_rev001(movestr);\r\n   \r\n   solve_vec=[solve_vec move_vec];\r\n   \r\n   for i=1:length(move_vec) \r\n    r=rubik_rot(move_vec(i),r);\r\n   end\r\n  end\r\n   \r\n % Normal Cube Return Point\r\n  \r\n % Verify Solution and Generate Statistics\r\n  if all(r(1:9)==r(5)) \u0026\u0026 all(r(10:18)==r(14))  \u0026\u0026 all(r(19:27)==r(23)) \u0026\u0026 ...\r\n     all(r(28:36)==r(32))  \u0026\u0026 all(r(37:45)==r(41)) \u0026\u0026 all(r(46:54)==r(50))\r\n   solve_vec(solve_vec\u003e18)=[]; % \r\n   lsolve=length(solve_vec);\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   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   view3D \r\n   pause(30) % Big Long pause\r\n  end\r\n  \r\n\r\nend % Games Loop\r\ntoc\r\n\r\nview3D % appearance of final cube\r\n\r\nfprintf('\\n\\nThank You for Playing\\n\\nPlease come again.\\n')\r\n\r\nend\r\n\r\nfunction  movestr=solve_cross_str(r)\r\npersistent m\r\nif isempty(m) % all moves leave possibly valid cross members unscathed\r\n m={[15 22  ''];\r\n    [22 15 'f2drfprp'];  \r\n    [17 49 'r2dpf2']; \r\n    [49 17 'rpfp'];\r\n    [13 42 'b2d2f2'];\r\n    [42 13 'b2dprfprp'];\r\n    [11  4 'l2df2'];\r\n    [ 4 11 'lf'];\r\n    [26 47 'rpdprf2'];\r\n    [47 26 'fp'];\r\n    [53 44 'r2fpr2']; \r\n    [44 53 'rdprpf2'];\r\n    [38  2 'lpdlf2'];\r\n    [ 2 38 'l2fl2'];\r\n    [ 8 20 'f'];\r\n    [20  8 'ldlpf2'];\r\n    [24 31 'drfprp'];\r\n    [31 24 'f2'];\r\n    [51 35 'rfprp'];\r\n    [35 51 'dpf2'];\r\n    [40 33 'dprfprp'];\r\n    [33 40 'd2f2'];\r\n    [ 6 29 'lpfl'];\r\n    [ 29 6 'df2']};\r\nend\r\n u=r(14); % value of top\r\n f=r(23); % value of front face\r\n for ptr=1:24\r\n  if r(abs(m{ptr}(1)))==u \u0026\u0026 r(abs(m{ptr}(2)))==f, break;end\r\n end\r\n \r\n movestr=m{ptr}(3:end);\r\nend % solve cross\r\n\r\n\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\r\n\r\n\r\n\r\nfunction view3D\r\n global pmap plate zCmap r\r\n  hold on;\r\n  for i=1:54\r\n    idx=pmap(i);\r\n    fill3(plate(i,1:4),plate(i,5:8),plate(i,9:12),zCmap(r(idx)+2,:),'LineWidth',2) \r\n   % fill3(plate(i,1:4),plate(i,5:8),plate(i,9:12),zCmap(r(idx),:),'LineWidth',2) \r\n  end\r\n  hold off\r\n\r\nend\r\n\r\n\r\n\r\nfunction [pmap plate]=cube_faces()\r\n%global pmap plate\r\n% Sequence that cube faces are filled\r\n pmap=[3 6 9 2 5 8 1 4 7 21 24 27 20 23 26 19 22 25 ...\r\n       54 51 48 53 50 47 52 49 46 ...\r\n       37 40 43 38 41 44 39 42 45 ...\r\n       10 13 16 11 14 17 12 15 18 ...\r\n       30 33 36 29 32 35 28 31 34 ];\r\n plate=zeros(54,12);\r\n % Could optimize creation or load from mat\r\n % Four 3D corners x1 x2 x3 x4 y1 y2 y3 y4 z1 z2 z3 z4\r\n plate(1,:)=[0 1 1 0 0 0 0 0 0 0 1 1];\r\n plate(2,:)=[1 2 2 1 0 0 0 0 0 0 1 1];\r\n plate(3,:)=[2 3 3 2 0 0 0 0 0 0 1 1];\r\n plate(4,:)=[0 1 1 0 0 0 0 0 1 1 2 2];\r\n plate(5,:)=[1 2 2 1 0 0 0 0 1 1 2 2];\r\n plate(6,:)=[2 3 3 2 0 0 0 0 1 1 2 2];\r\n plate(7,:)=[0 1 1 0 0 0 0 0 2 2 3 3];\r\n plate(8,:)=[1 2 2 1 0 0 0 0 2 2 3 3];\r\n plate(9,:)=[2 3 3 2 0 0 0 0 2 2 3 3];\r\n \r\n plate(10,:)=[3 3 3 3 0 1 1 0 0 0 1 1];\r\n plate(11,:)=[3 3 3 3 1 2 2 1 0 0 1 1];\r\n plate(12,:)=[3 3 3 3 2 3 3 2 0 0 1 1];\r\n plate(13,:)=[3 3 3 3 0 1 1 0 1 1 2 2];\r\n plate(14,:)=[3 3 3 3 1 2 2 1 1 1 2 2];\r\n plate(15,:)=[3 3 3 3 2 3 3 2 1 1 2 2];\r\n plate(16,:)=[3 3 3 3 0 1 1 0 2 2 3 3];\r\n plate(17,:)=[3 3 3 3 1 2 2 1 2 2 3 3];\r\n plate(18,:)=[3 3 3 3 2 3 3 2 2 2 3 3];\r\n \r\n plate(19:27,:)=plate(1:9,:);\r\n plate(19:27,5:8)=repmat(3,9,4);\r\n \r\n plate(28:36,:)=plate(10:18,:);\r\n plate(28:36,1:4)=zeros(9,4); %repmat(0,9,4);\r\n \r\n plate(37,:)=[0 1 1 0 0 0 1 1 3 3 3 3];\r\n plate(38,:)=[0 1 1 0 1 1 2 2 3 3 3 3];\r\n plate(39,:)=[0 1 1 0 2 2 3 3 3 3 3 3];\r\n plate(40,:)=[1 2 2 1 0 0 1 1 3 3 3 3];\r\n plate(41,:)=[1 2 2 1 1 1 2 2 3 3 3 3];\r\n plate(42,:)=[1 2 2 1 2 2 3 3 3 3 3 3];\r\n plate(43,:)=[2 3 3 2 0 0 1 1 3 3 3 3];\r\n plate(44,:)=[2 3 3 2 1 1 2 2 3 3 3 3];\r\n plate(45,:)=[2 3 3 2 2 2 3 3 3 3 3 3];\r\n \r\n plate(46:54,:)=plate(37:45,:);\r\n plate(46:54,9:12)=zeros(9,4); %repmat(0,9,4);\r\n  \r\nend\r\n\r\n\r\n\r\nfunction r=rubik_rot(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 54 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 54\r\n%\r\n% Perform Rubik Cube face rotations and cube rotations\r\n% L 1:9 U 10:18 F 19:27 D 28:36 B 37:45 R 46:54 \r\n% \r\npersistent vf\r\nif isempty(vf) %\r\nvf=[19 2 3 22 5 6 25 8 9 12 15 18 11 14 17 10 13 16 46 20 21 49 23 24 52 26 27 28 29 30 31 32 33 34 35 36 37 38 7 40 41 4 43 44 1 45 47 48 42 50 51 39 53 54; \r\n  1 2 3 4 5 6 28 31 34 10 11 9 13 14 8 16 17 7 21 24 27 20 23 26 19 22 25 48 29 30 47 32 33 46 35 36 37 38 39 40 41 42 43 44 45 12 15 18 49 50 51 52 53 54 ;\r\n  1 2 43 4 5 40 7 8 37 10 11 12 13 14 15 16 17 18 19 20 3 22 23 6 25 26 9 30 33 36 29 32 35 28 31 34 54 38 39 51 41 42 48 44 45 46 47 21 49 50 24 52 53 27 ;\r\n  3 6 9 2 5 8 1 4 7 37 38 39 13 14 15 16 17 18 10 11 12 22 23 24 25 26 27 19 20 21 31 32 33 34 35 36 28 29 30 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  16 13 10 4 5 6 7 8 9 52 11 12 53 14 15 54 17 18 19 20 21 22 23 24 25 26 27 28 29 1 31 32 2 34 35 3 39 42 45 38 41 44 37 40 43 46 47 48 49 50 51 36 33 30 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 25 26 27 19 20 21 22 23 24 34 35 36 28 29 30 31 32 33 43 44 45 37 38 39 40 41 42 16 17 18 48 51 54 47 50 53 46 49 52 ;\r\n  45 2 3 42 5 6 39 8 9 16 13 10 17 14 11 18 15 12 1 20 21 4 23 24 7 26 27 28 29 30 31 32 33 34 35 36 37 38 52 40 41 49 43 44 46 19 47 48 22 50 51 25 53 54 ;\r\n  1 2 3 4 5 6 18 15 12 10 11 46 13 14 47 16 17 48 25 22 19 26 23 20 27 24 21 7 29 30 8 32 33 9 35 36 37 38 39 40 41 42 43 44 45 34 31 28 49 50 51 52 53 54 ;\r\n  1 2 21 4 5 24 7 8 27 10 11 12 13 14 15 16 17 18 19 20 48 22 23 51 25 26 54 34 31 28 35 32 29 36 33 30 9 38 39 6 41 42 3 44 45 46 47 43 49 50 40 52 53 37 ;\r\n  7 4 1 8 5 2 9 6 3 19 20 21 13 14 15 16 17 18 28 29 30 22 23 24 25 26 27 37 38 39 31 32 33 34 35 36 10 11 12 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  30 33 36 4 5 6 7 8 9 3 11 12 2 14 15 1 17 18 19 20 21 22 23 24 25 26 27 28 29 54 31 32 53 34 35 52 43 40 37 44 41 38 45 42 39 46 47 48 49 50 51 10 13 16 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 43 44 45 19 20 21 22 23 24 16 17 18 28 29 30 31 32 33 25 26 27 37 38 39 40 41 42 34 35 36 52 49 46 53 50 47 54 51 48 ;\r\n  46 2 3 49 5 6 52 8 9 18 17 16 15 14 13 12 11 10 45 20 21 42 23 24 39 26 27 28 29 30 31 32 33 34 35 36 37 38 25 40 41 22 43 44 19 1 47 48 4 50 51 7 53 54 ;\r\n  1 2 3 4 5 6 48 47 46 10 11 34 13 14 31 16 17 28 27 26 25 24 23 22 21 20 19 18 29 30 15 32 33 12 35 36 37 38 39 40 41 42 43 44 45 9 8 7 49 50 51 52 53 54 ;\r\n  1 2 48 4 5 51 7 8 54 10 11 12 13 14 15 16 17 18 19 20 43 22 23 40 25 26 37 36 35 34 33 32 31 30 29 28 27 38 39 24 41 42 21 44 45 46 47 3 49 50 6 52 53 9 ;\r\n  9 8 7 6 5 4 3 2 1 28 29 30 13 14 15 16 17 18 37 38 39 22 23 24 25 26 27 10 11 12 31 32 33 34 35 36 19 20 21 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  54 53 52 4 5 6 7 8 9 36 11 12 33 14 15 30 17 18 19 20 21 22 23 24 25 26 27 28 29 16 31 32 13 34 35 10 45 44 43 42 41 40 39 38 37 46 47 48 49 50 51 3 2 1 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 34 35 36 19 20 21 22 23 24 43 44 45 28 29 30 31 32 33 16 17 18 37 38 39 40 41 42 25 26 27 54 53 52 51 50 49 48 47 46 ;\r\n  7 4 1 8 5 2 9 6 3 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 48 51 54 47 50 53 46 49 52 ;\r\n  19 20 21 22 23 24 25 26 27 12 15 18 11 14 17 10 13 16 46 47 48 49 50 51 52 53 54 34 31 28 35 32 29 36 33 30 9 8 7 6 5 4 3 2 1 45 44 43 42 41 40 39 38 37 ;\r\n  30 33 36 29 32 35 28 31 34 3 6 9 2 5 8 1 4 7 21 24 27 20 23 26 19 22 25 48 51 54 47 50 53 46 49 52 43 40 37 44 41 38 45 42 39 12 15 18 11 14 17 10 13 16 ;\r\n  3 6 9 2 5 8 1 4 7 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 52 49 46 53 50 47 54 51 48 ;\r\n  45 44 43 42 41 40 39 38 37 16 13 10 17 14 11 18 15 12 1 2 3 4 5 6 7 8 9 30 33 36 29 32 35 28 31 34 54 53 52 51 50 49 48 47 46 19 20 21 22 23 24 25 26 27 ;\r\n  16 13 10 17 14 11 18 15 12 52 49 46 53 50 47 54 51 48 25 22 19 26 23 20 27 24 21 7 4 1 8 5 2 9 6 3 39 42 45 38 41 44 37 40 43 34 31 28 35 32 29 36 33 30 ;\r\n  9 8 7 6 5 4 3 2 1 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 54 53 52 51 50 49 48 47 46 ;\r\n  46 47 48 49 50 51 52 53 54 18 17 16 15 14 13 12 11 10 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 1 2 3 4 5 6 7 8 9 ; \r\n  54 53 52 51 50 49 48 47 46 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 45 44 43 42 41 40 39 38 37 9 8 7 6 5 4 3 2 1 ];\r\nend\r\n\r\nr=r(vf(mov,:));\r\n\r\nend\r\n\r\n\r\n\r\n%}","test_suite":"%%\r\n% Load function rubik_rot.m\r\ntic\r\n%urlwrite('http://tinyurl.com/matlab-rubik-rot','rubik_rot.m') ;\r\nfname='https://sites.google.com/site/razapor/matlab_cody/rubik_rot.m?attredirects=0\u0026d=1';\r\nurlwrite(fname,'rubik_rot.m');\r\n%urlwrite('http://rmatlabtest.appspot.com/rubik_rot.m','rubik_rot.m') ;\r\nrehash path\r\ntoc\r\n%%\r\nfeval(@assignin,'caller','score',0);\r\n%%\r\nPass=1;\r\nr_fail=0;\r\n% Execute 200 cubes and verify completeness and count moves\r\n r(1:9)=0;     %Left   0 R\r\n r(10:18)=1;   %Up     1 W\r\n r(19:27)=2;   %Front  2 B\r\n r(28:36)=3;   %Down   3 Y\r\n r(37:45)=4;   %Back   4 G\r\n r(46:54)=5;   %Right  5 O\r\n rnorm=r;\r\n\r\nzcnt=0;\r\nsum_solve=0;\r\nmin_solve=1000;\r\nmax_solve=0;\r\nasolve=199;\r\nmix=40;\r\n\r\nwhile zcnt\u003c200\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=rubik_rot(mov(i),r);\r\n end\r\n\r\n r_reset=r; % Used in assert\r\n\r\n solve_vec=rubik_solve(r);\r\n\r\n for i=1:length(solve_vec) \r\n  r=rubik_rot(solve_vec(i),r);\r\n end\r\n\r\n if all(r(1:9)==r(5)) \u0026\u0026 all(r(10:18)==r(14))  \u0026\u0026 all(r(19:27)==r(23)) \u0026\u0026 ...\r\n     all(r(28:36)==r(32))  \u0026\u0026 all(r(37:45)==r(41)) \u0026\u0026 all(r(46:54)==r(50))\r\n   solve_vec(solve_vec\u003e18)=[];  \r\n   lsolve=length(solve_vec);\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('%i ',r_fail)); % Output Non-Solved Cube Start\r\nif Pass\r\n feval(@assignin,'caller','score',min(200,floor(asolve)));\r\nend\r\n\r\nfprintf('Moves: Avg %i   Min %i   Max %i\\n',asolve,min_solve,max_solve)\r\n \r\n\r\n\r\n\r\n\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":2,"test_suite_updated_at":"2020-09-29T17:59:35.000Z","rescore_all_solutions":true,"group_id":1,"created_at":"2012-08-09T05:09:30.000Z","updated_at":"2025-12-23T14:48:57.000Z","published_at":"2012-09-03T07:19:16.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 Solve a thoroughly scrambled Rubik's 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 Performance metric is average number of moves for solving 200 cubes.\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 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 loaded function r_new=rubick_rot(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 54\\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] DU' 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 average face moves for 200 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(mov,r) is available for intermediate processing\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Function Template Contains a 3D Cube Viewer and the first part of the Beginner's Solution at the bottom in a comment block.\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=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eComing Soon: The Mini-Cube (2x2x2) Not as easy as it looks\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.gif\",\"relationshipId\":\"rId1\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.png\",\"relationshipId\":\"rId2\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image2.gif\",\"relationshipId\":\"rId3\"}]},{\"partUri\":\"/media/image1.gif\",\"contentType\":\"image/gif\",\"content\":\"data:image/gif;base64,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\",\"relationship\":null},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADxCAIAAAABT2+sAABWzElEQVR42uydB1gUSdPHi2DAgBkVMSuYMGHOemZRMefzDHfqqWc4PQPmrKgoOQgSzQlUFHNWJIhkyUEl5xz/3/SyJGURdu97Xnnfmacf3e3pqZ3d/lFVXV3dQxYWFqampueq7aGvrx8UFATJjtTU1BMnTkgo5PXr1zY2NhIKCQwM5L6RmZlZ9e0RDicOKuL+M6jOh7a2dkBAgITdmZKScvDgQQmFvHjx4vz58xIK8ff3576RoaFhte4UDiriEOPB4sH6dw8OKh4sHiwerKqAFeL28MDu7a98o0tXRvm93LFp7e9/rDmmeyk2s+CHYDnfMdM8cDokJqu4Jj0h0kZn3++//75uy66H70N+DFZuiv35E/tOXU7/xquLCtLb988ff/yxZt0mByd/HqxqAFZedty5PavbNKtLJHP2tndxfei7C91byk/8dcOJI5p9WzfsPW9nbLZIsFJjff5ZOKlRLaJ6XV98Si6sLEgO+32SWu8R046dPrFkrFqdxp1ufIwSDVZBsMvDuSP6yhI16bIgrtSJaB/H4Z0U+06Yd+zE8R2bVq87eSmvgAfrpwfrmdWegeMXXLhkOUCl7Rk7r6JeTvp9hELPOXvyBe8+v7VuKit91vGTCLAyT2+dNXrxjuum+1q07vv6U0phbVZ82JMnTzMKIYj3HdRKbtpWK5FgZYSvnDH09106xruXtOk6P7ZYP+ZEz+/XrM+8fcU6LL+ggNdY1QCsjJSETO6/BPf+HRW0bwnBygp/0lauzoHrbkXkREzqqTTz8DURYOWnJMVzCMa91m/QQrUYrDJHTsgvnRppbLsgEqy8nIQkpuoenPpNofO8uCJ4vryyqCff/o5PKu9jVUsfK/fr+/4dmxeDFfnGqkndDledI4sUWPyygcoDl2kXVOhjhT/VaVgWrNz0RA93d/cPLsf+nq06fPqroMQfOu/2x5c2LwXWY+O/G3Tuf/Xu3U1//LZ4ybJ9Jy1i0/N4sKorWKHPTBs1VrnrVezqJK8d2W3AQq2KwYr4DqxED7tuHdu0a6skQzR29YmknIIfgnW7LFgPTDfLyMoOmrjwyIlTJw5u7ahQY/TqUxk8WNUUrIiX5o1qtbnwNqLI1sUuGdB5yBp9VBGsgvzcNMHh+cimR7N6A+ftTsmtGlj39dc36KDmFlno7OGt9XYpqTZPQ9J5sKolWFlBD1rKSu+75io8nR0xtqvCQq3bVQWr9GG3e07tJl1dIzKrBJbnjROyzXu8DheOSAMe6zSgJnZeiTxY1SRAmuE7WLml8ePPRaAlLBvWsve03YX9+e7SoSZ1FO/6xFcMVpqLWSPFPp5FIYUw3zeml+8kFnpEmVF/jOzcsvfsz6kFFYP1TO+PFl2W5BffV9jLTvXlNp1zLARce8XwRj1mR2bxpvCnB8vnxYVZGhrq40fUqyndrf9oDY0ZVo88mJvldLObQsP+IyfO0BivpNDkrzM3c0UGSPNunjs4TUNj/ODuJC03dPSkWUv+eBuSkBj4fFjXlt0H/TJr1qxRasrNlHrbvg4W6WMVJJ3etUpDQ2NgF0XpWs0nTtVYsn5XBHOm8q4dXV67ocL4aTMmjezftFUPy6efeOe9GoAV4fX86KH9h48e1zcwPK11/MDBw08/hgpd72C3M0cP7Tt4xP7dpwqndPLfPbx88MCBYydOGxkaHD9y6PBJXe/IJAZFZqS19vH9Bw8c1zULi8uoKPJekGZno7//wCEtbR1DA92jhw6eMrGJKwrJujheOnxg3+Fjel5f0/lwQ7UyhfxcIQ8WDxYP1k93nD59OiwsTMLuzMnJOXbsmIRCnJycbG1tJRTCfZczZ87wYP3nD11d3Tt37jx58uSpBIeDg8PKlSufPXsmtgTu2rNnz+7YsUMSIdzBoamlpWVkZMSD9R8+9PX1LS0tL126dFGCw9zcfO7cudeuXRNbzo0bN/bu3bt69eqrV6+KfRtXrlzh7ODx48eNjY15sP7zPlZ4eLiEBig7O1tyU/ju3TvJTSH3XbhvZFDND9555513HiweLB4sHiwerP9esPJS3JzeRSZmfOdPxbm+ex+bml0ZsLISwpxc3FMy876X7uf29rWTa2Lmj9NmYkK8nd0DiqeP4j/7O96/90BwODo6Pn767K2bV0p2AQ9WNQAr+K3DnNGqNaXk9O/6lq73e3Zt8kAVWWpywenLD8F6cUl/SJdWNZqqvvb/NrvhyyvrhtJEso3v+GVXBFZW2sVTWzq1rK/Y+7f4IgKdbmqrduvSU3D06dOns1JDatDz7eccHqyfHSwXu5MdVbrOXfpbJyUlHfuSxRRPLXa1Ue6+aPlvHVq0sy5OzCofrByzw78pdh64fIlGs1Zqr8qmzRRkhy0c0GXydI0WjZvaeWWKBCsnZuO8YT36jf91+oi2PRYUp80U5OfnFh0Fuen75vbqMHp9Uh5vCn96sMK9373xiUCyz2DlFsX5WGz1uvtLl8DY3GiXPm0ULV9XDFbuhzePfKIzk51Nv8/HunX8N+Ux61zfXVOsX/+Wd5ZIsLKTnj97lJCD5/qrFDrNjSsox1wneds3qln31F0f3seqNj5WXtlEv+IjOeixqpKi1ZuIyvhY3yf6pYU9Um3e8rJ3TIS7TdM6FYJVkuj3a+lEv9K6T2/1mKY9J4Vn8M579QEr9/8FrPQtM/qOXXOWgyTwtVnTuvXtfXOqmvNekon4xalv09p/nnHkR4X/62A53zjevvMoX4Fb5f/OUqGe/G1/8cG6ffI3qtfNLSaXB+t/HKwCzbm9ajXrOH78+LHjxg3so1JDRrZ7/5HHrB0rA1bsN2Clh4xsI/fLJpN8Po5VzeJYyZ6DlRUNH4R+U50f+aZP29ZXPyZVBqyk9yaNW/VxjxBCEeLj+vDB/Tu3b9+7d8/45KaGcnV2GdzwDPxSMViPdX5X7LIk55scG6ttUnJKt73j+ABptQErOsjN0uK8mfauVg1k56w/amFh4eL/lS2r93lnbn7e8PiWZnVqLN911sLC0iNU1GKKAk+nh+bnLc5um0+1mu08Ymh18WpwXJm1ywFvzOtJSd0JFB0gLch4fu/qeQuLDXMGytbvY2h2/sLNe0k5hWe+zlRt1HXipowCPvJefcD6+ODcqJHcMXripMljR7NXhndcWPbBNW32ZtQYrv4X1mKU7XN/UeEG27NbBTLGTpk8kWs7avLsR75fymbW3184a87bUNE+VkHCgb/mcjLG/DJ+8uTxI0aOnLJkfUiaQBEGv/l15rSr78L4KZ1qaAr5uUIeLB4sHqyfEazg4GAJuzMjI+PIkSMSCnn9+rWVlZWEQrjvwoP1Uxxnz5798OFDlGRHYGDg7t27o6OjxZbAXWtnZ2dsbCyhEFdXVx6sn+Lg+uD48eMHDhw4KMGxa9euMWPGHD16VGwJ3LUrVqyYMWMGp/nEFnL48OENGzZwovic9//8cebMGT8/v3TJDk5VcJ3KGUSxJXDXPnz4kDOFkgjhjk+fPnHfyKCaH7zzXrTjaGqq5M77y5cveeedB4sfFfJg8WDxYP1UYGWkJmfn5n87/ZeUmJiUVHmwUlJS80pkFGRlpicyAexITEzOysmrBFi5KanfTd7kZycmJnx/JzxYPzdYeYnmxzYO6qd28UVJiCvE/cmGpTN69VTt3qPHnLXHvyRmVwxWZoz/vlVT+o+e7RZaPEuYfvKfxb17FSas91RV7aVz80PFYH32fLps+rAxc/YklSIr6P2thZNGqqr26NFDdd6m09GpuTxY1QCsSL/H0/p3a9euTc0aDXWKHyBQkHNs1biZa454+gU+vKTXoobUyJVHi5bGlLPx2tt7Rn3btm7XRqF2414vix4gwDVcNlZ11PxDPv6+Hh4eHz08IhPSRYKVl26jtbFT69atFORbdS95gEDmV+cBbeqprznm9SngjYOtaqM66huNC3iwfn6w3tsbaupe+hzgNLRrK+2bRflY+XnxcbHFbXRWDqTWI/xTRYGVaX1296nrb4OfGDRT7FVqMUXq7xP7L/znaqV8rIyvR3b/fcfJ74HO6pbKc4vzsfxun6IGKq+/Ct+bbBzcfODqbB6sauNjxbiWfoDAN8epFYPkemh8yfyBjxX5QrfsAwRSV07qN3ONSXxCXEx8UiWdd4cTS0s/QCA94m3f5g2mbdaPS8n64mXfq1nDdWfu8Kaw2oAlKoOUKa8Et171afo2i6rnvKduXTikVv1m3bp37dylx5KN+/3jc8VITQ53dRzRSaFjD7VW7TtsOWWXxzvv/xVgZR9bNqxu26HuXzKqDlZBSmJsWGhwSEjo+/uWqq3q9JuzLTGnqmDlvbmg16tXl5kLF/RTbtNr+KI3QZE8WNUerMtHl0vXVrR4Fize8q/Sh6v1RrnmKu9C06sEltd9PQX55gZ32UbOGdGflo3p1qzvvK+ZPFjVBKz8KJcBnZqftS+9xL7A/tT6OvKttAWdWhmwvj7Xa9iy57uAtHLBema4sk6Lbm5Fmk8UWHe1fmveeX7xM3fO/D6g87DVxfor9KFeTVJ6GsYvsf/pwcrLyU7PyEoKfNarTeOjl1xysjIKw5gvrPfWl6m9y+oFkJOWyo6covDp92DlZGWmZ2T7O5yo20Tl0YeorCymUr56PzW/cjs5LTMrKyvgrV2/tvLT/tLNyBdlCgsyM9KyszKuHpjfuJ1GeEpGejoT4qC7WqqOgt5t18yc3PTogM0a3ZuqzojI4DcF+fnDDbdOqaioKHfuqNiyRbsOnbjXx668BRKWD2/fqKlitx49u3ZRYQ2UVYzue4vKeTfav4xr0LlDuxYtWnbs1LlLn5H3/SLjAh5PH6yqzJ1QVu7cSWXx32dKhz2/BSs/dtOCEcoqKh3atm7RUqmzsnKf8QsCUlGQE3Ni62Lldu2UVbood+rQd/Tsx16feR+rGoCVnhzj7eXp5e3j9+mTr4+Pp5dXdCLnBuV9CQv29fPz8fEuPLgWcSmZolbpxEWFe3p6+vj4fvr0ycfby9vXPymDBZtykxO8PD08PT0CQqN/FG7I+xwa4OHp5evr98nPj7slv8DQrCL19iXUn5Pi6e2TlsdP6VSvOBY/Cc2DJSFYoaGhEnYn5zNJnvP+5s1ba2trCYWEhIT8l4Clf+GCtqVlVctpS0s9S0t9wQttcQt3rYGlpa4EQk5bWR03MnJycoqICImICBa7+Pp6ampu//xZfCHctdevXzEw0JXsTkKcnN4d1zY6Y2itbWApZtG3NDS1PGtoeVpfTAmnDSzPGFgamVqKfQ/65y6Q69y579XVq1rc1NUvqKufU1f/UPVri4uLurqxuvoNgTTxJHhMm2Y9cqSSYovWrdtKUpSUWsvLN2jbtp3YEtq2ba+g0KJx48Zt2ogvpE2bNi1bNr+4f9QH82nvjdTFKYbqTqbqZ7aqO2iru5qoiyfExVj9ub661mb1NyZMoBgSXM3nEuTlQSRGuU9kJdaFpcs5oreSSXAhkiYVokiiKAlKINEOySRw5RaRjmQSwol6ee4jWBCMxSpG7NoT08j/KMFcXCHnKEWH9kykPDOBQDEknJcXH6x7RJb/BlhvJJPgRFSbekt8I2lEhyQW8lLinyRXigZ/kAysgvN0Yhb5HpMIrHhd2jeVsniwiAokE5NCdFDib/OC6LxkErKlaBAPFg8WDxYPVnUHy4BwlqBXXmVhMawEWPqClvrf1XBFtxRD5YJV+rMKhZgUeXW6pSp/BFZtLFyHfX9CSjKwVIZB1xAbFqJGFcGSqov1B2BlhfPnBcUcurpYO7fyYLXvjUMnMLpLmcqeI2BiwaRyd1QxWDXqYubvrKWlMTRGlNTLNcDivwT3pY9x/X4AVh0FrN/HGhtro2+Hovo6WLEVJudgYQELTr4R1Nr+CCyOp2uT4G2Mp1NKeprrzksj4XkO/lbwOQFrecZWBWBx7R+shrcu7vQpbMnEXlGHryWT8GwmQ8dIBFjcqbtL4GOMTxascO0fjmIYcWdNmuLZdlbjZ4CbKkymUflgSaH7UDxwQ1Yu4t5DRgKwZBqgcJv1T3aoW1Ww5PDrJpw+jRMnWDmohXTguUFlwJJrhHVHEC1IZtmlXtJ29hbEJOGqCY7pIToF1w6U/nJlwJKug/OP4PIaxw/AzhF5udiuweplG+PmG7x/jGMHcf8F8nKwarRIsBq0x/NQ3LfG4UNw+4SMMEzqLjilANdkuNzG0SPQOomTB6HaqkKwGAStECnYTOuzrlAz6Unj/k5kxyHABO8Pwt8OD0cydIxFgMWRYTUKhTNY7stZ9+tJ4cku5CTAzxBuxshMh+cWISvfg8W193yODF+8PwY3LbifhMMgAYhNEeqFiKt4exRf/FEQg/tD2W2UA5ZsA9x8h1NbccAIkU6QlQCsZSfg9wRmd+F3E3UkM4XtJiAtBbMHVgassWvh8hCLfoVHOHZNFVbWagXvdNjsFr4duRIFuRjToXywZOth7C9oUEuoYB4H46szmtREzQYYNwZ1pAXwKcAtCv73UVdaBFgtMWG0UOM37IqoAtifEpxqBpcYbB1daVPImZi3Voi+iU+v8PksA4vr/gu/IAd4OwPaxApDSkakKWTWqi6CnBCgi5hguC+DDsFMBSlp8FyH04SThHu7kR+Fq4pMeLlgeTxF4FEcJ3ZtsSk0bYI7v7A2nBADBSRn4asRe2v+PVhSMmjQgL1YeQxxzuKD1aIPIhMxZwA0LyBAQrBkYPYCoU/RULpSGqseasuAmsM9AruLwFIcwlTeqiIya7SBRyyOLa6EjyUFw5eI9IBi7W+dhWueCHyGBjKV8LEa430yHugVgRWN7SMrBxbXfzbjkZWAm13h/hRfBGBx/fraBJlOrL+1BT2tW6GPxTW4vwMZ7rDqjNgIfFyGMxyao5AFOKixs0xLdWNvX41iosoH6wmCjkNLIE2vlO9V+NpEcKthkYi2ZpXmFTjv604j9r24YEnD0BGPjNgfrNZd+EsGVrthSMjHgTlVct7rdIDH5xKNVb8rIgGr7cK38r3wKR6mm38MllxreMfhoc63v0TjrgjPwIU9pb1QkWB1FOiXnTOFpvB9PLyewoxzs4wwpIdosJimkUOQMwIPMpXg4yLUWFxf+rrhiykerWDOjb8FHk4QWrHvwWK93gaJMXjB2coWSIhiGotD06IfMoCPqxiapwiWw5ihdJtXEVgZAfA1h78lHo4Vemml7bX5QORydnYVI+/8/xNYQ5bgawi61Wevj9nB7xqkJQBrmy2yg9BMShKwOMXzhxYy8vDgNi5ewhNnpGfj7Nofg7X8LLg/5Qldvq3/xwZ5SRioVIlRoRTM3iDeA+0aCFXd9CXYuQu79+DaC6QmY91UEWBxfeywFSkfYC7N+t7bCREnWSVX/F2R/QUBxni1A952yMvGa41Ctr4FS1cKrjfw2UJgv1oh7ivcFjONpSuDt+eQl4FwroNsEeWKvAK8n1E+WBw3N6bg7Q447YHnRWSnwfcfGEgJzxoJlOgHB+QE42ILdhv/L2DVVoRzNC7vR8fO6Nod554i9CF6qaBebXHAqtcREdkw21zVcMO3YAnKmJnQ3IWd2zBiElwjcGjuD8AaOhepgNaKb+unrGIaaPuMSoUb/tQCZ4YXDBSh2Z8g6jkaSn0HllGhG5SKjxtgoQyb7gjyQJQlbDrCsAb8PRFpJDSFp6TwyQWJD2EizTnUZcDi+vjKXORk4elYWHbF5QlMdflqwkJJOAK4MwfOu/B+C+wmIz1LoNVEhBuKAxOc7nx0AEjDlWZCT4vD1HEfkI+nwwoHEBWCtV5bTLCa9ca7ILg5w8UFzi6ISUZWMtxffDv0ryRYK7WRF4N+imKCNa3865THIjMf4ztVBFZ/DaTlw2LvtyGXscuZN3Lmr0rFsX7bBc5AbJwh8vv9ZYwcL7T6HixuzGX7CxICEeuMOBfEuiIrHTmxiL4Da86a3kLiTdbGRMCWmyNS3+NcjW/B4shz2IRkf8Q4MY85zosNcTPCEW7K0cOw0BP4TJzndOU35MfgeuvynXcjEn6WqUBfXp2NAuBWG9aYu/zuekaV8yIhVT8Aa/kRxL4TK0Aqjdp1UK8eK3J1oX0PgfZoKAdp6SqDVacFXCLx2KgCvkUGSFvCLRz/jC0ak8iiZXPh67qKuOcPr6uQkxEJVo+x+BIP/Y3ffuCAWYhNxv5llQqQztyMjCSsGlv2704JLRsWeX5t4RSFe2dRs3znXQYmdWBSD6b1YFgPfq74og+jWqz/7m9lOuOGIhvQmXZCQhwCDpRvCo1lYVKXSTCWg1l35mNxfpV+DZjUhmULJorj0qQzoj4jwlToOX0DFqtpDGslxhCnnHTk4PkA6e9hVpvV2C1FTiZeT2d3ckag0kTEsWpjjwFu28E3HMjG7duwNSj+gxIn8n72Eb44VDlAWlhmbWdxl5m9qhR57zoRN+zh8IRZq2Bn3LbH6imgGjB/gDeOuHYTHkFwfoBuDUUGSOsowV2QeHz7Oq7egJ097l7B6E6o1w6BgvDYjcu4ztXfht0FDGxfPlhth4NlHSfC1ga3bjEhV02gWAPTtsDXG7du4Pot+IXjzZ0i36vcUaFhUeG68JM3ogwYPWwA2AIB75AdhYDriA9FzB3YNCqMcJbjvBdKYGHx9khOgedKRoBRKwS9RMQ9BNkhPghfr+F8fSbh+wApV3lpPGI9EHYLgdcR7YkkV9j1ZFCaqQpiY+kIsEHQLQTbIfgyLtXHuXLAqoHpS/H3Jqz+HUuXYeMmrFmKRhKApTYGGqNEBVp/AFafkVgyvapTOoo9sWEzNv6FZUux6k9s2YwxfQQ9rYZNf+PvvzF/4vcasAxYtRpAYy6WL8e6v7BxA/sNNq9DtxasftZCVr/+L2wQ1G9cjY7NygerUVss/Q3LVrCWhY3XLYOCnMDVm87uavNmLFT/5i9O9JQOR8atybjTv8Q2cTrs4Qq824Kns2EsJZxOqSDyzi6sj/tzcL2jELWLQ/BmM979DcexzCYaFM3SlBt5vzgMb7fg7Sa8+g3nagsnl861wuNf8XQ5Xm/AG65sxJu1sK4NM36usBpNQuuXneYrnqTTKQpiVWYSWpeEaqkQF53vJgornivUKftxhQJ1yhYjfhKaz274CbMbnhFdlrgrbIncJJPwkUiO1CS+kVwiLYmFOEn+k0jRMH+OicsEK7GKJbtWZz6Fcl7URXGF2FLmOTo2k3BBIFAMCRfl6YG8vANRVYsj0VGifwQvHMQtnM7bSnRaAiHchWeJalEnCe6isFwnWi7Zt3EUoLlNkLMt9u9xV4q6G/9G97eTw99ilc10dzutHkGmq+j+P2IKubeVrv1Fy4aQ3VYmUAwJDzTl6aK8vJUge71KxVZA1Wqii1W/trjYEP1BtIfogrgSuE/fT1ST2kpwF4XFmGiO4GuJLYH7EppEqyQQYiOwpJ2PzCLb1WS1QsxiuYoWDqATC8h2lZgSbP4go6U0S43M/xBTwsV1/2lTeEGwGkISCR/+HVOY/W+YwneS/yTSNOwTZwqvEKzFKlbMFOrOp2DO0b4krpALlFFoCguNqRgSLkkAlsO/4byb/kTO+4F/w3k3l9x5d9vLOb9FkcmqFkMqMKfjnPN+lGAmrhBTitehvZzzfo6EIdOqFnN+VMiPCvmc9/9psAwFESP9UjEt3bJFTzRYhuW1LJ33rFsqh72COFZpIQal2hffjOEPweoxCBrTMXa4qKmYH4BVuz4Gj8SUKYKijkmjUbemWGDJYthYTJvG7kS6CmDJNsLkqZiqDpVW38obMQEaGujf7cdgNWmP6TMwdQIU6papb92DSVAfh4a1fgyWSj9M18D4kaj93b13H4jp0zB1Cto2+RFYLNupFewm4FJH4RTN5aG4MxW3pwiL3Thc6VbYspwpnfNtcGu8sOWdabimWhJPN6yNmxNxdzoudyqZQi53EtqmB+wmCoSo4646LrYVYsRdZdsXd6bDfhxMpYXolwNWjaawdISPF1zcEJMCeyMo1KkyWG0HIigF/j5wdYXbBzjfRruGVQarXkuWYR4SwLIkvsbhljaa16kMWGOW4aMvPrrCNwDx0Vgxqoj2Fjj/AJ+D4OKKmK/Q2VJ6YqcMWFKy2KAF309wc0XoZwS5YVQbgWddE1tOIyQCbi4I/QKP5+jVUCRYNRpC1w7+Xuz2oxPwxBbtigCVrYWjFoiOgKsLPHxw6WhxAoUIsHRkWGYgChB6Qjjr52KN+A+Ic0OcK2LdkJWG2BuFrHwLlp4gpyU3GXGC9txVvruZEKZy2iHgGVL9EOuOrBg4/V7+JHShEDd7NjUZ6yIU8nquQG/VgtN5pIUgxgVpMYi6AZtmIvKxFNRgpIOOTQWZ4WvYjKvWb1UGq81AhMVjUHuJTOEOGyT4QUVwJ10ns1SVP9V/DJYUVu3EJsEinFoNYe+BjEB0Fszy7rRBShBUBTkO8zazb7aob/lg1WiMw9pQF2RQKfZCSDI8brLc9lotoHUGEwWLc9oORkwGLmiKBKt5F+gaoVcLYV5XDooSVqWgaY70UPxSmDtaC926QEZKNFhc/9mvQYovIgMRcUaoJwyLZnh0OD46ISmNpW7qlmcKOSYeHkP8C6Et0y+a0tGTwUcHZHrCuj5LTHh6miU03lYRnfP+DMGnBbntVDQRzrn5rfHRADdU2Ky29S8sg/TDahEZpFKlklukGyIIuHtEHLBCotFHUSKwDF8gwFE4ey3VAknA+umV0Vil06cWHGUAjWjP1j74pMNkQ9GphnANK41FWY1Vds7d4BVifNG6DmOidF7oXV+8My1tosuAVfqH5D7OKRnPzrHXTXsgAdCcWjkfiw2y2iAhBq+m44MjvuiUnhZkhevFpydQEA3b2uUv/yoEK+4xa6ld5GBxLc91YVmEbouFaxINWiM5Fx+Xi05NforAYzgh+MTi2UZj6ZIZTE7OV85M7RexSqfMgohBSAMOL6m6KRyMr1nYsw6z52Dc0AoWJ1YEVq/p+JKCc9sxdBSsXsDZHkoNq+q8H7zKErXb1EbLwSxrb/3IkvUZt93w1rz41kQ679LyeBSAj9eFi3OKy+AFiIrHpimVct4bdEdcAQzXsdcjViIrHP27YLwG5s/DsD4VgsX1lpMt4u1Zb3m/F+a8l3G/GiAxHQGaIp13BtZxpAfj3mw4zMHl9owMDoWLY5FdAMdBAp3H4SKPz18QfJK1L3/51zPEOcJ+Fu7NgFXDEofMqChb0H4FslLwaNSPct65svcC8iLRW7HKYDVXwaUHcP/A3BnOv3hqg1ZiOe/Df2XaNScf4W/Qo0lVR4WNVPEVuLBXYEu5nzEds/qW6BsbV3jcKPapRYI14Fem8zYXASTfD69c4eqG/AJcPfZN+o1IsNbrAckYIlhtNu5v5Obg/Uu8coKbFxISoL22WO2VBYvrMNuxyIiHvTKzNb7O34LF9e7dbeA04I32wp7+HixOu9xajKj3iHFGvA9y4uG8ikm+PIfdh30PdqGJwDIG+yLCuHyNxYH47ADLYo11RlIwWyT5aLgw0+bCSHzm6j3Zz+TxpzBRoiKwhi9niWr75kkabug7BZHpsNhcZbBUxsHFBzZamLMAr/zh9xb921ceLNl6uOSESBe0lxeClZOFRf1KslyvcHzYFvdo+WA16wjvBLw5B7niVC0FzJqHuXOxUwtpGTDYVnrcXD5YfTXYyrOzfwrfTtiG7ESsmCh8u+oUkIr+LcsDy7ApQjzgtZF5NmcLF1OcKklxYaqiPsL9EX1RML6jitYVFsYUdKXxjPu8DNi3ge0U5OXjTm8hWLq1ERaEsLPla6xC61koxKAJyyDNCYB1PQYcN1y9Ow935sJZFznpcPmjwsUUnBlKBaz2/jtxrEvv4X2j3Fw/kWDJNsbTADzQEdqq2q3wOhb3tSoJllQtGNghKxIjVYrGJAM4lYH9s0ryZJ944MHZisIN8m3xKhxBz6FUr/yvtf08CmKh1qIisLqMYUtVb5wp+fbDl7GVob2L4iBdRrJhyaL+5ea8T2ap5UmeiOEGdO7IzEBeMiLvClfCcN18fS5r8HBgacNUUYCUk2naho0jXv+C8/3YBz8fV6SxmiA6EZ80RYJlXGqV4pXpyAfs27HGxUGsUwTnW+CMhKWoRD+V4QhPgem2fydAKtsM3jG4cbBqGqtRR4QnQm91SY2RMz5YVwosWRy9gARfDO5QZsnoq2jcPS1821QVUdnYPlUkWHItcN8T7vfQXK7UTSmhW9tSYFmxAXjv5iLBajcI/vG4dLyMk6k0ANncAHe88O3ULUxj9WtR3iqdc01xczxuT2VxJvvpCPuEODvYjYWZnDDLz/sV0p4WZYeKBsugKC7KOe9X5nG+Be73hF4zxMUhYJdwLbX1GOTn4clwkWAVoqwnWKXzlFN7MbCpB7O2uNBauGL2tACsgjBY1ioPrBaqiMhHuj/mTcWsuZg3D3OmQr6Kqcm7TKC/FzM1MHsuHFwR4YSuzaq4d0NtnLZHXjx2r2GBzsOmSEvE75MqE27YZMjMvcVRTJzMbp8rAwXrg8ZvQHomTm3GdIFpdbeHgojFFLINYesi2PphDSZPEwiZizYNWRr7pwiYHcWUqdA8i8xsnNtWWhGXAatJN/imMR910UzMms2EzJ2OxrXZuEHrNvLCsXYxVv2DuHSY7hYRxyoxYYJu8/NCpI5wtQJnmGwnCXa1n8f6VdSUDtfMrAP8HfBqMe7PxJNNSE1gC5qNpNhVD/YgNwNO6+HwG+IiEWnBFpAZlpvzPgEht/B4Ou5p4O0pZsudljAJF6YiIxIfd+POFDjrITcNbqtFmELOs7lxHdeuw+Ee7t9n5bY12khXDaweo2B+DQ8f4IEj9I6iXVNxRoW1G+P3Lbj7AI7cYOQ6pvYvN/j+PVibtXD9KlvpUHj73NV/zxH6VZN+hb0DHjpC9zAU5UVG3usr4ex5XLuGO3eLhNyBem8mfOhYXLJnX8vhJn6fjVqinfc2g3D9Oq6W+iEdLkC5seCbKWCvNu4/wP272DwHNaQqt43RSy24LC8Zpt1dgwAjWDUoNfgvdzGFHO6uQvg9RDgi4g6eL2ZUFTpk+tJwWIvw+/j8AB+2sEx2w/Ii72wtdTO8OIjPj5iQ8Ou4M1S4NY1hLdxagEA7RDxAmB0cRwhDrPxcYXWahDYom/NuKPVtrrooU6hXVL6Z0TMqe8qgwikdvSJ7qvfd3g3f1/Ng8dkNP112gyORtcRdYS7xrsnODKw+/0Wb2w76uF+QXmcqVjFhWepas+nTcQGd4gkxp0R92j+Ncs4XrX6uarGQpwx5+XSiqpZsIjuBvsmp+rXFJYvIkOiJQJp4EnIEWqI29RSQkS5BiSbaK7iRDAnu5QGRieBriSchkyhJiga820VZppSuJ1bRpTQTOqxB7oco21hMIVmG9OU0aU6hBCMmUAwJGSbydFhefo8g8bxKZT/RIiINQdrlHnEL15PTiJYJpIkngfv0lUSy1EKCuygs24hGS3AjhfeylGg60T4Jfg9NIqVVo2jfdNqjLm6ZTmO70dqxTOWIJ2HvNPpnEo1SoZ3iSjg8VwJT+FiQsS6h8bAS2DIJc95rU99/I+f9mMRC3gpWUki4/GuIz2HBuqvzYhVztnhLey4FnSLYiCvEitKMmdpj2evmYkmw4Z133nnnU5N5sHiweLD+H8AyKidq9W2lKLC+WUXzveQfgmVUCSFGlQFLVraCPKqqzBXKQkZaArCkUENWDLBkZCr42MqCJVujOLezXH+oUmB980NKSQnuTVC4U2V3Dasw8m4oVaY7dQU1JrLCeUOjCrMbjKQE2yrLsO2yjKW/XaNhWIlNQZgQacHlAjlMYFmqDKmksjywZDBxJd64wsMTEQFYN0PUDkQ/AksGizbjgw88PRAYgt/HVRks6RpYdRCe/vDyxXsH9OtU2W2MVHDYmE2sBQTjsS2UFcrk0mzYj0/BmKv6A7B6jYHFLXh5ICQE546iUVm2ZVvjhQ8iPmFyD9FgyWD0Itx7AQ8PfAnBtqXCBJvBS+HtLSyenvD0RbAn+ravEKyzhKdHkfEF3tuEEBjWwL3VbF+rBE8ke7MMdAMRYOkTbq9BchgSvZHohUQf+B8SCtEXbNT+9jTSvGDXtSSsX24+1hsDpAYLJHiz8nZhSUoFS57piehPSHbCjbaict4HwNkL6+ahd1/stWUz4ep9qg6WDDYbsn0NV82EWh9MnIVZY6oIlhT+NgDisHIG+g3BxZeIdkObBpWZK9xljHvWGNYPv0xFUDwC76KpYPdT5RF47oWYL2w38lUDKgKrRiNcfQ79A+jXC0vWseyS6weLN91jH8H9MLExyMzEwgEiwVLojtd+2DgPfXpjnxGbL94i2LdSvjkGDsKAAaz06YPD15EbgU6NRIOlxw3ThiM5GmnJwpx3rkfvrEVeKl4tgFVfPD/MtqN8Mqr8BwgUpianeODKQFwegKuDYNtOqKsuTkR0IFsKwYly6FuyLExUanLkJdj0w9WBrFgplCgzjnuPe8iIRm4kbndmjcsBq2ZdNCheDNMUscDhRVUGq/0wpADrJ4rvY9VtBb9YWBZtny2ngsQ8/D2tMhqrUaOS83/osLUtwwX5MxNWYu9qtO0D7yj8ObgisKRl0agUw9auiPOFYlH+TO9piArH7GWISMPigSLBqimHBvVKfkivDDwx/u72m+JjIs5tqdAU6tZA4Ef47sXHB8Kcd64jXeyR5sjSSrW5t/IsKd5zPXtrXGHO+5lSc4KcXnHciNe/4cIgZCXhXp+Kln8Jc96Ps5z3byYcuVO3ViLdCw/XICsC9p1EgFW6dJuInDz8OrzKYC08xh6P0UgKdeqhXl1xwGrSCWFxOFZqr8+H0bDeWFXnfS2n9eLRu5Q1bNgVn+Lw56BKO+81cdEFwS/QWFaYIfg0BDoL0HoA4vKwaEClnPca3J9JJq4e+LZ+9m7kJ2JoO9FgsR25dyDLB+YN4PlGmJrMNNYa5Gfi2RiGy6NDyI2BnXL5e5AW5rwnvIVpfbYZqWGpBav6AtSsBiMnpRJgPUeYIfRr41wdhmbxogz9pmwxnZMGbGcjL7pCsJQHY4cmjpzG5xic+UMc533fRcR7w9QUHz7ALwDP7dBHqWpgSTfEPW98fYVebdG0KUbPRVgWbh2qGliN8C4K763KZKY36V41sJQGcWTCuGiP5JVa+OyGJpxSHo+4XCwaWCmwxq5lpnB+WfsrUw9PAvHUuLRrXxYstvSvAxKj8HYqy8fydcFnnaKelsb9jSy3OD0SqR643YUhYiICrHvbWdZUggcSPyH6Hts+tPSmflZDkF0JsJwvse2W492RHIogA9gqCDcEfGWIpIeMsKu//Qis3hNhYgxdU3iF4/UtDOxUdbAuIP0zdq1A504YMBrOX/DhGupJVc157zwML7yQGofQYDx/iJBEWFZNY60xZMmZk3qUVYVVAksK596zhQJtBM9CUOwH/wjM7SpItxqG6BzM7PZjsOq3hnsiXluhnkzZ7b4Xsfze+RWs0tGTgvNlhJ8TPu7G6y3CjzOACp+O5GyKZA94mSM9Gj5HYSZb/vIvlonaCDZdYduFbToa8Aa5/risIHTVKwkW2+ejJS50g00XXJuCmHAk3mIcWw1DcgSut8NRwoW5yPuK662Ydbao2BQ27gC3VHhcKndgWBFY262Q+LpkVfmCE+wPq2eLKocbatZDh45QVkbdxviQiANLKg/WzL9QkI9t3z2IrgpgSWG/FXv8RPHQb78dM6x7tmHvXuhbIz0Pt8wx95eKwJJpALuPiH6PTvLfLva3ckHoI8iLimNxlFiNYYouxBRvd8NpPxt3pDjh3QaY1YfTBWR9gI08Y+7KDGTlwX9n+bsmGxcNAPUEzplZV7ZG5s1kIUaVBKt4MUVhfvPNJezGLjfGx5fI/4x3/7AnVnjfRH4aPunDYVh5qcmyNcq81XqATA/UqyJYUzRZTnSHor0N/tBDYhA6y4sfIO3LfZMUjOtSSbDGLkdKHg79Xt4Svy4MrNX9fwzWRh1kJ2DOkJKayX9ATw+m52BkiKuO7BEEz+yxZoZIsGo0gOUjpvBUW303vBnD9rEufFqdSLAse8Bdlz2m0O8cfEyRGIt0b3gdho0iM8Ouy5ga47qcc6jdHyHlMVMhBuVprEKHvfDF+f5s/cXLsUKMOOAsBzKwHHoKk56NRTzypDhUdkawMpuTcrkp7q2Blz58udszRMhzFGQi/CqeTC5vO+5Ja2BvBtXOaNaMZfJy395Ks8qmsGVffMmHxTa0UEDPkfichOuHy00sFg1WbUyZBZXWUGiOPpMQloobp8vdoeR7sIbOQ0IBzPeiaWM0b44WLSAvGObWqsteq4xEYCK2TWCn6smJWAldAysOs4ct/KWBhg3YVS2aQ67sysjWI9mnzBYdx6pRH3p3kB/NltI3asyENG+KGtLCJOnTd5Hqj/Z1Koy8GxXtanxWsAbGm/OxTgpWM0sh0BcZbrjSHsYKuDweaVnlP0CAbXbVAs/WwLYVTBVwXgX+Tkh5DSt5gQNXn529OBG56ey5S0bNca5mOXs3cFRZ98LTJTivwITYDkdsFCKMWLxUr+gOOcV5YT7yY4WmsBwfizMVtnfxJQohwUiOheEu4d7kVQ2QTvqdrbL/Go7oKFifKHc/jwrBqondFkiIRmg4W++mvxt1ZSoVIJWCyWP2qISgQAQFIzQUkV9wWDC4HLkOkdwP8gVJKcyqfAnHllkict47wDUUWakICEBwMMIi8MUP88tGKJQnIiwJ8/uJBKvzBGTksAdB+PkjJJQJ+fQSqoLs/yac1owULoyu7JQOB433S4QVbQpi0x+BT5Adg5QwZHxG4Cmcr1PokpcD1sebyOTMaAiyotlDKy+3Exo1R02kfUXaF+SmMl8lPRxPh5SzSocZ5d4Ic0JGBJKD2fYhvsdKnjZQPAi4uhiZIT8KN7TpABUVtG4p0ZROo+ZQVkF7JTHnCqVroUNn5mC1UqjSlE5jBbRWYr5Z586sKHeGgmBpfp3GTFinjlBqhXYdWX2T+iLiWDXQvCVat0bHTkIh3CBEvuzfl2xttFT8Ro2V1VhyaKWE1m2KJHRGp3aoJfjrqFGbnaolXcW5QvNmON+ghDMDWfbApgvKsG5VstVHuc67vjRsOsNWGbbtS8IN7CFQTVmlTQdYtmKiuNfmcuXvNsMsaV3YqgjaKwmXE35zeyZ1YNkSprL8YopqPgltVOqBKD+chC5uKUpC6bOi5gq//7jvd4f778pukDzRL1Owv7iEQt4Idj6WNNHvfz1t5qHkvyKRhYAMSSS4ENUgVaIoQd662CWIaBdRrAQS4gTLAAwlEBJD9IWon5dkYOE8nZ5JAZKBlaJLB9UpTxKwXObPd5o2rarlw8yZ+sOGHR4w4OOsWWJcXlhcNTT2qqlZjh7tpqEhnoQPMzSsRo1p0VSuRYvmkhwKCgp169Zt2bJlC3EFcdc2btxYXl6+hfi3wi5t2qTOxX2/uJnPcDKaJk4xnOZiprFpruqNY+Pdzk0XT4iz6fTHOlP+1Oj+1nQ6J1AMCS7m80nv4sXTVlZVLtbWp83MtE1NtbkXYlwuKNy1p0xMTpubnxZbiLXNMaNLLq69Y2IoOlr8EhREu3ZRbKz4EuLiyM6ODA0lEsJ9C2fnvse0L2sbWp82sBK3WJ/WMT6tb8FeiC3BwOqUjpG2uBL0zl0kM1NTQ339qhYDfX0jQ0OuGFT92m+EGBoYSCDB4Iy2RVhYP4AkKZmZdPQoSSjkzRuysZFUSGjooDNnLAwN9bhfVrxiYKBvZMR6RmwJhcWYEyLutWbnTOncuXMG1fgw1Na2CAhQk7A7U1Lo4EFJmXjxgs6fl1SIv/8A7hsZGupX504x4KDiweLB4sHiweLB+g+ClZtFb+7Qork0ex7pXaGcUqcC3tAfC2jWLNq4h8JTKgIrM4VszpLGDJq3lG69/rb7H1+ibXvpa9IPwEqKokPbaOZM+nU9uYZ9KyQ5jLavJ83jFJfNg1UdwDLbRW1USHMPbVxGckTLj1KuoP71FWpcj5aspb17aXhXaj+EwpJEgJVOf8+krgNp9176XYNkZcjwufBUVDCtmUQ1iOSU6OPnisBKj6RJ3WjUTPZxUwZQg3bkVLb94YVE0tRMlQJTebB+frAKyPUF+X8Vvj06n6gZeSSw1yt705A/hfUJntSqFp1/Wz5Y+an07BHFZwje5tAUFRr6q1D4rt9pymq6dJYUVcj7a0VgpX6lp0+ETOeGkhLRTuuSs953SFmVDm2njv0oJJ0Hq7r5WDcPEcmTcwx7vWMKdZxAifmC0IA1NWhAz4Ir5WMt7k/DllGBAKwMAW0Bt0mh4w/AKlPiqVMd2mNbBG4SqauS5iV6YUpKPXmwqiFYq4ZR27GUXiCwYj40nlNa42m3Jg0cQDrXBKyIAKsgh4IC6dMn0t9NnfqRo0+Zs143KgVWZioF+JOfB/01n9SmUXCR5bXeTR2GUBbH/SlqxYNV7cDyuEG1pOjM7ZKaq0eoTm1SbEydh9PbTxU577khNKA7tWtHdWrR4AUUniAOWG4OpNyO2rYhkqLVhyhJ4KQn+FLntnTNg722O0NKvSgihwer+oAV5UHKDUhjK+UV+V5G20mxC9m7UmwEbZhO9ZrRfS/RpjCP4mLZ/Iy/Ew1qTj3GU2R2lcHixqexMRQbR89sqKUszTvAxK6dRP1nkm8A+frQ2a3UXJkcXSghjQerOoAV60cDWtPA34QeFRujBVCLGqTnWNQmn8Z2oUl7K+VjPT9LVIcelbKG3jcZWD6RVYhjHV9MdbtQegr9PpO6qFCnjtSpMzVvQjI1SbEtXXjBg/XTg5UaThO709h1Rbqq0N0JptYy9OfZojZhpNqcfj1TPlhRwaRnQTGZwlHh9qkk34k+xZc0CLlHLVUoMKEisLxekvEtyha8zo6hcR2p5zzKLqD0NEpIYCUxiS4epda9yCOKsnN5sH56sLZOJu4YpUHLf6UFC2j+fDr/UOAyHyH5RjRxFi1dQn1VqN9YCkkoH6yUCJo+hDr0pBXLaOIgUmhDZo+Ep86fogWLaOJgFoKaMI2WrCK38PLBCn1DXVrT0HG0bBn170hdB9OLgG/V2JWj1KAThWTyPlZ1AOvlPbKyImND0tMjfX3278siX8rnHRnoka4OXbhFybkVOe/ZaXTHgs7qkKEZ+UWUEn6fXW5oQtZWZKhP+ucoNEGkKUwMIVsT0tEhMxtKzCjHPoZ50/U7lJrLg1Xdwg38XCEPFg8WD9ZPBlZoqKRgZWT8C4l+r1//W4l+lgYGPFj/abB0dS3u3FF79YopDLGLoyOtXElv39LLl2JKePeOdHVpxw6Gl9i3wV174UJXLa3CvFoerP8oWPr6FubmamZmzAyJXQwNac4csrAQXwJ3LUfVqlUSCeGKllbHEyf0jIyMeLD+w2CdPm3x5YukprCggOtRSa2YiwtdviypkMjIwWfOWPE+Fu+88847DxYPFg8WDxYP1s8IVnYyPXlEj55SUFSZ+rw0evGEHj4iv6gfgxUVRg8c6ckLikktU/81hB7cp2dvKCHzx2B5uTMhL5yEqaSF899+nvT8KT16JCjPKDaFB6s6gPX8GvXrSQOGU6/OVK89XX5aNH/iShP7UHtVGt6fGrahS08rAsvmMHXtQMPGkEor6jyIXCKFE9LH/qEePWjUGGrVhHqPIb9okWDlpdOBpdS+C40eQ83r0fgVFFWY0JdGQzpQy840YiQNGUJDxtErfx6snx+sArp4hoyuUVYupSXSfDWq3Z3CMgi5NFeV+sym+FSWJnVqFcm1pdDU8sHKTaITmnT3DeUWUKw3dW1A6v+wdNPsSDqgSc8+Un4BBb8hRVkau7Ekh+IbsBICaNdW8opgjT3sSJpI20FwKpX6tiXtW5SXRzk5lJNbksjKg1VtfCy7wyyV6m0sZfuSgiyZPhPWpwWTchMyeFwpH2vNCFKbTfnf58IPoPbjKaUyPlY29alHf5sUgdWG9B/wPlZ1BuvoQpLvQVF5lO5DzaToxN2iUwmk1om2mlcEFqdRcnPJ8wl1bUeHvwtQ5cfTkLY0aXMJcN+DVVBAeblMQdrpU4uO9NBHCJZqc1q8nRwcyOERpeXxYFU3sBL9SKkmrTwleJtF68aQvDIZW9HFC7RlCclI0xYz0TnvYTRhOA0aQPVq0vi/yhH+0JBIhq59qMh593hEQwdR/54sP2yPVVF9JmmupQnjacIE6tyc+o4j53AerGoEVib91odaD6bPRYlQGfG0ZyX16U0DBtOR46Tang5fFb1KJ40e3aeHj8noALVqRr/uoYyCkrPRH6hjDZq3v4x7VE4+ViTdv0ePn9De36h5Czp+rZT8wgafaWwnGrqixFHjwfq5wcqi7eok34GcI8o3kcm+1L4RXXGrlI91eTtJN6DXRYsQEwJpoAINWUyJeVWIY20aR43VKLHg2/rz/1D9HhTPg1UNwMqnI8uonSp5xpZxd0q3ObSIdXNsnojU5ETyKbXVgi0HVkN6J6jJ/EyTutLEVT8OkMZ8poCYkrcbxlHTAZQE5nWVvmrlCOo5U5gaz4P1U4Nlto35NIt3kK0VmZuT6Tly9qf8XDr8N500IovztHEJyTegG84i41jRPtRbmRZsIEsLOr2P5ImW7GHrSzPjaH4/Nsw8YUxWFmRmSucv0Jek8sFyu0HNlGifFhOydSnJyNBpe1Z/15gWrhHkMpjTunlUvw099uV9rOoA1qktNG4ijR1Dw4bS0KE0YCAZCgaDN3SpXz8aNJDmrSSvkAoj73n06T39Oo4GDqLBo8ngGmUVCHPYf5tNEybSqBFM+OCBNGIqOYeVD1Z+Fj25QFO4EcAgGqVO912F9XHhbOgwYBC7fOZS8ozgR4XVMNzAzxXyYPFg8WD9ZGAFBkoKVloaHTokKRMvX7L0UQmFBATwYP0cYJ05Y+Hurla4l7XYJTiY9uyhwj29xRZib08mJhLdBlfc3Pppa5+v5inv/xVgGRpaHD+uduAASVI0NWnMGLZQhzOI4kngrl2+nGbMoMOHxb8NTmtu2KB09Ki2sbExD9ZP4WOxNAEJSnw869TcXPElcNc+eUKWlhIJ4YrAx+KXf/E+Vqny6tW/4GMFBvI+Fj8q5EeFPFg8WDxY/w5YSYlsA6qC71fTp7K9qbLzKgVWQjwlpXxXny+oT60UWHlZ7ONSyttqJj9buEsWn0FaPcCKCWZzc63bUitFmrCk1LqJfLp5llTakJIS9R1F9z9WBJbXK5o7gRSVSLEdrdhJMUXbhLo8oqkjqZUStepAm45ScoVgPb5Mg9WodRtSVKbj1my2seSJTtdpVC92k4qKtN2UB6s6gGW8nSYvoncfyPkhqcrRkJXCFTL39ahGLTK4Qe7utHka1WxB7pEi9nlPorUzaNUe+uBODmbsKQRrDQWLf6Jo6RT6+xh9+EjXT7PHCOy9IhKspACaOoiOWbGP09vK5sUvuxQBZ0byNWinATv19hlZOlBeAQ/WTw5WAUt6KX5rvY3qdqQoQYbWmHY0a7+wPucLqSrQP1YiwMopYwFXDKV+s5nBKsii5FIWcHoPGv+nSLByMiiteJ/tNOopR5uMBbmpcdS7Mf2uzftY1dl5Xz+FVNSZDUr1oeY1Sfdh0alcmtWXftn2Y+c9J4at1pq791t3LSWUurektbqVct6/OFEDOTIS7DfpdYvkWpFzFCXHs12ZM3N4sKoLWNlkY0KHDtPS6aQyij4INs2OeEmNG5C9e6lnCwyl/guEuHwPVl4cnTxMhw/ShEE0bCnFFnV/xhc6tJ8OHaARfWnK+pIlOuWCFeHNWh7YSV070Wot4eOiHI2pviKtXU9qyqTYgnoMpIcePFjVAqwsOr6L5i2gmROpZVvaY8gW0oQ9o0YN6I5nqUVdw2nQUpFg5X6lP5fR4iU0dgi17Uy2RaouLYiWLaIli2lEP2rfm269qQisACf6dSEt+ZX6dKB+I+iVYHPb+8ZUQ47WHiRPL/LyoF/Hknxv+prFg1WtTKHNfpIiuuVNKW7URJaMnpSYwjl9acTGSsSxMunvcVSvLfnEl11tkUxLB1KznhSe/mNTmBpCv7Sm7rOY0npiSvKdySdZeMrvAdUlsvfmwfq5wSrIp5z8kh6N/0jNiI7dJCSTcn1ab1yyrrB3K9oiwnnPyyuzPPWFDktHfuLH6kt7Wjd3U60m5BYhwnkv6zydWEK1O1MCpzsfU436dM+vKK5xi2rL0LNQHqyfG6z8dFq9mE5epahY+hJIa8dTvVbkLthhQWctNexAb30oNopOrKDmbcg3rnywPnvR7IV05TUlJtAnVxrVgVQnszU5we9p1gK660qJ8SzQ1VuBhi6klLzywXK6QeoryNmPCXG2I6VaNL/wI5JpYkcauISCvlKoD03uRb3mUwbvY/38ptDekPp0o169SVWFeo+kR0WB0OwE2rKAlDpSn17UZTA99BQZIM1JojOapKxIan2pczuasJi8BQt+MmPoyAbq0IbVd2hHM1ZTSLJIHyslgv6cQV07k5oatW5Ff+4retQFKPAdDVGhLqrUrSONW0afYnjnvZr4WFmJFBpCoWGU+d06vi/hFBxKyTk/ntJJjqTgEAr/+t08zxcKCaGIyEpN6UR/Zo2/xHxbn5tGYSEUFvFtFIMHq3o47/wkNA+W+GAFBf0sOe+Wlnw+1n8LWGfOWHi6qyXFkSTlcyh77KqEQu7dJiN9SYW4vu976pR5Nd+N+78CrPPmFsNGqzVoSI2biV8aNSW5utRYQQIhCiTfkOrKSyakGTVsWmv/vgPVvFOqP1iGBoYWRha99qrRJqK/JSjriYYSbZNAAnftIqKJRNslELKJemr2MTcwNzDgNdZ/HCxDC7XjanSQJCq7icYSHZdAAnftGqKZkgnZTwO1BloaW+rziyl+CrCOqtFeon0SlJ1EY4gOSyCBu/YPIg3JhOyhAUcHcDqYB4sHiwfrfwesPUQ7BE7PNsGLwlN7Bd7PtrJl14/A2lvUck+pmp2lhO+pBFi7BY23U8lNapZ3DzxYPzVYe0lqT93hl9YbupoYu+hvuj6xzi5B9x9uv+OVkbGLcWExctbXfnty+YVBrI8r0lhN1j7ROv3m+JAzdRkfXM0OmeG2C/VcTE3dDNZcmlhHs4gtUWDtJnmtXvten9J6sq7NESnWeBcpnBqk+VLH1M1E5/WunqcbC++BB+unBmuH1MonNtGJHtoPt2s5Xc8ryNC7O1uK0xaHWq24t3vf0z17nuzZ/Wjn/ldmWYDds4VMkYgCaxsNvnYMgmPD+Was+zWl1W/rJGVEWb46cPDZ+YTMjMvPVtbUFKiicsHazwmR2vTuIROR5jbwpDT3cQpnJjknfn7kYbTNYe/7pOSoSIduR+SEdPJg/bxg7akx0mKa8olatJVos9Rhb4+smFut95Q1hRto0NVjuVlBo0/JM0u0vzywNEnu2ID3iaEnX578lJqxngNrG9U/OcovI//igxksurGRpjlaIytk7OmGjLlywdpBHc1XhSS673lpExf3pp+WNPdBzbUHTDHrw8zoBmpluCQbeXtt+7Ab4MH62X2snQLvR5NFhra4vsuOvt5yd5H+2F/YRtE+LsP1406ZHaJ9rG203e2du8cBRd3JQVn463xTTlr/K9vTClJnnZVlZnE31dWelVqQtM6mJ/u478Hi2uxtbf810vSeusrlY6lJLv1OSLPKPQLEudv7h+R0pqUgW9NKlQerOoC1v3anMz37nVWbe+eEV6z7WtshJU7MPtapahf2Ij9hqUlrYXd+D5YmKZv/FZcZ9Mvxug315oRlF6wXgKXhaJCX5ax6QKD/dlOtY8MCCvK07cYzLfg9WNtptqNNfOy9lttpoJ1BejFYe6n+sbZqOmqDjCZZB7g9dD/R8oAsbwp/flPIuVMdzAPehyaFpOYVJETfHX6mRWnvmHY2Mg0ODQsxbbSz1DCtNFis75VufA42c1CnddRQf3ZIVsEqEznOcs1/bJOX9rzTfsGFe0j2mJpnbp6e/USmgb4BS5PkT4/1Sg5ZadKGE6J282xaolOPQwJFtZMG3zwSmhQalhwLZOrdnyO3q+hOeLB+7jiWlMwBWZl9Uk2P9bYICshL8xzK+VK7hQApmS6Nz8eBy2q0o7w41n5mRqfds8hIc51m0Kufdv/JV//5kl1w0m5Mx31NZz8wKsh1739IqLFqHx8dipwjN0Z9CxZ3dld9LV/3sFCLwad799fu/9uTK+mpnkvNByodrs/GrQdkauyXkdpdb9Ktg9zNWD1aILWdB+unDzcIHSzu9VZS1FucAhy5NIj1PQfNdql/Prhlx91vvV+6JAT1DVi7aOmLqzHJgX7xAf4J/qEp0bkF4EaCRvdmDbj4VxZy5urIMJdfk+qdXZiZn/SHZZdvfSxO8oF2xn7vviQFfkrw54R8Tk8pyM+KSQ765+IAzrUSRtf2sxGAXtDnxAjbppo8WD8zWHtI6kjbP+5u6nuiIW1hYC15chkFiXMMFAXBAmqoPTEyHxb3pjOvaL/oyPteVmQ4paIppWSyKCwLG84rcEqlwalRPhm4+mQJBwRtrfW389OUuBddD9Zk6vB7H4sJkWJCdkoNszfkfKz+J2SkdlA/21//sB1eOFfd8NRojzS8dNlWs5B7HqyfFCzm+jTX9f4YlfjJwffOgzDXpOwEk/tzaxY6MTuk1zs9RabfiBN1y8S7KwiQ7qTW55ZH5WOLRVOBeyQzye5YYnbyqwDHxyHuiWlB6y1VhCOACiLvO2jE3fN5qe6DtKQ5ddX/ws6vqfGvQ57c9nXwT4kNDLs6+GR9oaXmwfqpTeFO2RG2i7c7bt/msHmkjqIwBMr0R+0xFxbNshggrVnpucI9VOd4p/lXV3TXqi00ndtJxXDiFscdO++uVT3VsMRRqwCsPdRcZ+jSS9ObHpRit8EpTq3eax22bbu/fc3lKfX2EB95ry7Ou8CJ+UdQdpU1eTuojM9emUnoPWXnCvcLQ1Cs7K70JPSusnOFu4skbOcnoasXWHx2Aw/WvwCWlhrrziMSFK5TxxFpSSCBu3Yt0WzJhByiwacGWxlb8WD9BGCZWKhtUqPFREslKAuJ+hAtl0DCCiJ1QX7zCgmE/EpdVnYxOmtkaGTIg/UTgLVOjWYRzZWgzCTqQbRAAgkLBMnNAyQTMoc6Leqkr63Pg/UzmUJJyt4iUyi2BO7aP4nxLYmQgzTo1CA+55133nnnnQeLB4sH618Aa3dRyGrXd0GpwvqdlQZrZ6nE+dJxqZ2VBqswTX7nd0JKT2vyYFUDsDRJ7rjyNNtZM23Ue5xsXEKAJskcaD7eWmPWhZmjDHuQqLSZMoDKqhqNmmg+utXRGiWNt1Njre6jTQfJ75cpqRQFFptzbDDEbOIYk371D1Dp9J6aB5uOOD95pFHvOvv5tJmfH6ydUiMv/eMeH/Hp64dPibHxKZ7LzHoyrbCLWuuPf/I1MCLB1+2rd3J2vO3zVbV3VwjWTmpmsCA2H0DWGvMmVJjbrll75u2DfikJGYmuA4+UmnMUBdY2Gmt3Mg/ISXw5QEuainNZ/6GZD8wLgPjoe90OEz9X+HODxeZbaq58cOSvSyNYhtOutteikqJDzZswy1XnlH9wWJh5M46PLTTm+uFsZC/WV2K4lJvzzhnN3c2tQ3xeBD36nJ7Oct65Nnsa7HB68jXmiaX3k4R41wGH6/wALE2qc2Koe3zYHf83SXGvhRmkgvpmZ6d6J4XdCXSLjHrUlQerOphCKeHE3D6Wl7L81T0k3G/PvJwmV6JSXrlsoc0snaatyeKkgvxfDUSDtY0mORh/ibzR3Xi6f2Y+y3nn2uyX62c+uu0+2a62+5ISvQYcqRAs5kLJ7fNweu22q8+Vw0kJ70ty3nc21AvwvPN69cjbJlExz7vwYFUPH2uvcNK3+ZlfnsXEXX+5RnYnUxLDr+2Ly447e3/eCKPZtyNCHjhryu8ucm6+AWs31T0+1C89ZZNZ+wZnNcKywXLeNUvWmva/eiw50fMHYO2gHhYb4zOChx2R7n1dtyTnfQcNuXQoMcW9216a5Hg5LpYHq1qAJVibevLj3eehz4LSMkOCz7XdL0uF+VhbaPY9I85jyimAr//ZFrup/MUUbKFY7f0e7z28jtT4m5oaLgjLKlhn3qh04x+DxbIh2t6JibRyVKcNNNhe///auxKopq40fNkHIQFE1IJVkQEB10pFnVpGxwWlrq2jjrS2StHRqVTbgoCBJC8hhC0gm0CIZS0VBBUBZVHQTkEFwo4sAkFAtkCAAGURXt/LIosgDJw5J3hezj0n79zk/Xnn5Dv//9/7f/f7ezqyN7igqJJ2WpPV3uoVtxVcBAcfxHBbM/SoGLAkH1jIBYTbzDI9GPLZV7G2pR2tuRWBH1JkEQe2NdKmoqPc5/7pQze+z2lvLK6MMHAWnxQdTU22B+vDrF51FvydLoXEzUX+R2v6hs8z8SMUlymBhUZeOfP0yOraXxbaAcSI8S1vPu/pehqSsytYZSUWV3jjbND5fSk3Wloe6pLE2yIYsCQ6FBLEm1U/AKOwywMwbB2iLwWtK+rti0jaJ6Qsq3rtqewdjkg5KKJnjQXWdzlPBvvqHnMyHtVmPGuq6BuCq1ue+Sabv4mGxkJgOc8boWSNBhYyCenENze3dz7PqEGMpBe2Nw695ufXp52OPpbc2NTcXpjOycioffS8gzs42MmuT/+GpSdcdWLAkkhgEYEUVXW1r4GcUHXjB/BRuD0CLKtgHQWvg73wH9bXDdBDzNZIsNNKb+WlZllOACwi0PJav4O1c2+omSlrt3mCU9PA8LXko0ae2kL+J2LB8BcKrz1vtSMaXifQbkAPSiga+m3eeX23GWIkePfF3+/2dpdZRe1Z4aa52m/TruumZqF7TYNNSbkZvI78MxG7ltNxqB3MY0kusCCdKE7tb8XXTv365fkkYmVPV0G5zwdEKUBaGlRd1cnPtb5j8eWNU34l/+3pKfun3xJRDBqXvI/yeQv8jrXC8AWmIkr4JCpsDDlsEXOSkpMGD7Y53T339a+Hl9EF8fTt5P2K2MglYHwnCO4pWuck3oIXz+9Pu93bkaXzhp2MAUtyQ6ED0PLY4vwsLLEyMbEyySXpqDpRRrjIl6cu+S49IKkyMaEyMTrP18Rr4Ug5ZdKdd6DubRJYGPuZv0DlwRFnmeGPWE4oj497fiuhIjGhJGirlxr60TtKOgSgH3Y2KsdNx1lqzJkzAtgUbR36lLqECrCT0BIPLPIoV2E3VsLKYew8YXq1QuJYI+OM200lYzT6pyect8dqhXMleRcfDJyY8jDhR+9mNxAnun2cnSnZDcRpzGPAkixguRgBaNbitjsAoM/CAnLvvwVMVPrsxG1dMXFbCQFWQIgRxQjdZLKfxUAWdybCYstMB3LvKQD2z86ILTAiGf3s/7P/HH+9F8BihhidNAKfArB9FgNBlbbAac3YAnLvxwDoC5jvMzayDWjt1PJ08wwMDMSAJRmhkIKenZr5cBTrvM/Ywmid9xkbgcBmdwHn3Q8LhRKSvDtOlFZPf9gJknfqLCxQxcn7bIw4AGMalrxL8qoQ47xjwPp/bTc4CLX5pjf/bu2G0d8ni2cc/hdgjfu+w9hBxIA1J4CF8kWlVCA1NUhVlgBG2MCCygkeUkXm5Qhj/+nJGwjIk3BqEF6OJDUiK0KQn48YJyuNYc2/U21GiayKJyvLiGak55FwqpCKCqSiCqmqQjg5kjQGrDlQ0lnsuZlRkJrXyC5oLkot9lxFxwsdgwKkaZcZW9icx24uTC3xXeWMm6IzBXIXbX1CQ0lpC/t4oEBzm6iwLdzyRkUmYrykpcD74bf4KTnvdmBF0Mmc1rL8qtA1rtKoEZo+qyKvoImd25jLbmKz6+/t9VmC0WYkG1iogqisTdadtHzXLZ5/NQ46Udk39CyPrGAnEAUtzWvvzDwUsEHXe1dcE5dTHTh/MgapiO4nf+nJvbaetr7BAZRBagsU6UZ3a564JJrr0HQskoMGYfh60hcy7xBeQyPvoqia8mY+r5/3ZKMQWM5G+d091+KP6LnrGfqsWuWti6fIYad0JD8UymjQBdVlB5Q+cDYrFeYla18BSlf3NA4PQlEbUM6MDVjOsuwY6j0ZoDlpyxNbsDzYsq6z8EiM5fPuASsBNVmWgtNwUhIdS3TUSuK21XL8VYU09gmBdRnsu8eqqI85EO/R3vb0YxGwNuR0tdgKCTzCkiWWY82NHEvYFAkB0BV1Zs3Lmsqryj+BxYFHeuCOC0wd0X9JW/O0o9/7lrGoBvy2BqmDxq2mpoikfaqeZpx+2OoN511MQ5CGdFK4bfkllHmTtTxB8jn3HVXdHeeZSw1iGN1CzrsAWNldXFrUtvlE9QVUZdGuPQYsSQcWqlis8XWCnUu6c2xNYVXdzY9c1RAwyTmvz+TDpc/dljnhcETc/nh61+sh5j2z8UQ/sbs6lBzewk1ZRgALrp2o7Ru+IOylM8oVGYT8pw+GKdHGIgvjgIXujSk4FecXlFDlfgSfCMRtRcCirbnf0t7IK2c35ZVySzyST6uTMNqM5AMLuaBo2vwWcLMwKuFFNq+7ihZ/WFFQv1sbeq6wva6Z/7K6rSzlRVp7/x/ucRN5LAKYz/hHflu1hb8mOAdw3geq+4Yt/GVQFyj2iLKkFXeaefXVARqO4kA2Dlj2YF2kTQ330RoSqkKz9iaDz8vSFy4qyXLqrlrLGSuWuWt/fpvOHYAj0o5J22HAkvxQKBRoQHMp+dPp0TDMNw9YKmwJgXdeuvbqurVu+gsZnxR1D1iHCDSPyeMbCJzJegwPVrs/hJwf0nzZcbzXww8K/b4NN0GDLKrwruFTXtzf9funHrgRNzZO552oGfeqlc995JRKdX5AC63I7e9riMhy2euvDQijdsJ+Ata5WX80xix2FHW7wIAlocCSIsspkqRFfsgGaPp+1QXD1KhNaNZlL4QF2nbrQHLkcF+OIU1+glM6DsAk2oqZHRiSFxbGDo0pf9z9GmbX3LG7aSYQi1dzKc7k8/N3XV00RixkHOcd0jh9H2LmsELzw8NyQ+/VlQ32c1NKw48H66MU5zdwtAZQUTGvLhRrICDZwEIbCOgFlaRdublXGVLScFvN4nCGurI3us4DJM0jN46soCsrUXA7ogmtAwPMhM+lJ+v+ZS9WNb4IlH0O1w/CZwJkwI9Aiqh2OScFHqozD9aVISqq0FVUaDg5SGqyA6siI9+DdXHeA525K8kokrZEWnwTvlmJoqREUTaNI/MG+6DYbVJY9y9JD4UExX/Fu+dzq+o6XzbwG/I4sYeR6IMu3D5wKsx8xa+v7ax/0com3f5CwW4aO+9XgGbg8dz2hrMsdcTnLfY5mM1raezilHErOB2cl10NL5vSdvmoT8F5twebbjM4r+5vQJJ3O/C3iEuCx6tFnqSaW+QYu1/GHlObmRM5li1QpmkZMAwMPPRwRPCmFaAMpKaPTDIMNZ3moZGRNK2SjiykvMxVR4WCKhbJktFrXXfdlR4rBcNgpbu2MiQzaYdVsZG/UBdouyxRIIt+C0/70IChr88wRHs22b6nRWgmk/m+AUu4lSVonjPmVIyjeNJhbFeBKQ9TEEZ1LCeIEzXhIEyyKny7kk2Y6PHGPcn7AiwEVCAkJAR5C56bL1YwK5IVacIwwdPweOdZDDIevw+Pd5+FBeReKzz+xOyMOOG3M7ZHXo9kBs/VfwR5IXBCQPUnAs8Qbn2QZ+cAAAAASUVORK5CYII=\",\"relationship\":null},{\"partUri\":\"/media/image2.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":2191,"title":"Order of things - 3","description":"This problem is closely related to \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2189-order-of-things-1 Problem 2189, Order of things - 1\u003e and \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2 Problem 2190, Order of things - 2\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other. \r\n\r\n* However, this time the tasks are grouped, and groups of tasks should be executed at once.\r\n* It may (still) be impossible to find a solution, since dependencies may be cyclic. But this may now also be due to the grouping of tasks. In any case, return an empty vector if no order is found.\r\n* There are still multiple orders possible, return them as multiple rows of the output vector.\r\n* The tasks within a group should of course be specified in the right order, when interdependent.\r\n\r\nThe dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency. \r\n\r\n   A  B  C  D  E\r\nA  0  0  0  0  0\r\nB  0  0  0  0  0\r\nC  0  1  0  0  0\r\nD  0  1  1  0  0\r\nE  1  0  0  0  0\r\n\r\nThe |1| on row |C|, column |B|, indicates that task |C| depends on task |B|. \r\n\r\nThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u003e 0, e.g.\r\n\r\n [ 1 1 2 3 3 ] \r\n\r\nReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\r\n\r\n [ \r\n   1 2 3 4 5\r\n   1 2 3 5 4\r\n   2 1 3 4 5\r\n   2 1 3 5 4\r\n ]\r\n\r\nIf no order fulfilling the dependencies exists, return an empty vector.","description_html":"\u003cp\u003eThis problem is closely related to \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2189-order-of-things-1\"\u003eProblem 2189, Order of things - 1\u003c/a\u003e and \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2\"\u003eProblem 2190, Order of things - 2\u003c/a\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other.\u003c/p\u003e\u003cul\u003e\u003cli\u003eHowever, this time the tasks are grouped, and groups of tasks should be executed at once.\u003c/li\u003e\u003cli\u003eIt may (still) be impossible to find a solution, since dependencies may be cyclic. But this may now also be due to the grouping of tasks. In any case, return an empty vector if no order is found.\u003c/li\u003e\u003cli\u003eThere are still multiple orders possible, return them as multiple rows of the output vector.\u003c/li\u003e\u003cli\u003eThe tasks within a group should of course be specified in the right order, when interdependent.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eThe dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency.\u003c/p\u003e\u003cpre\u003e   A  B  C  D  E\r\nA  0  0  0  0  0\r\nB  0  0  0  0  0\r\nC  0  1  0  0  0\r\nD  0  1  1  0  0\r\nE  1  0  0  0  0\u003c/pre\u003e\u003cp\u003eThe \u003ctt\u003e1\u003c/tt\u003e on row \u003ctt\u003eC\u003c/tt\u003e, column \u003ctt\u003eB\u003c/tt\u003e, indicates that task \u003ctt\u003eC\u003c/tt\u003e depends on task \u003ctt\u003eB\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u0026gt; 0, e.g.\u003c/p\u003e\u003cpre\u003e [ 1 1 2 3 3 ] \u003c/pre\u003e\u003cp\u003eReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\u003c/p\u003e\u003cpre\u003e [ \r\n   1 2 3 4 5\r\n   1 2 3 5 4\r\n   2 1 3 4 5\r\n   2 1 3 5 4\r\n ]\u003c/pre\u003e\u003cp\u003eIf no order fulfilling the dependencies exists, return an empty vector.\u003c/p\u003e","function_template":"function order = calculation_order(dependencies,groups)\r\n  order  = 1:size(dependencies,1);\r\nend","test_suite":"%%\r\ndependencies = [\r\n0  0  0  0  1\r\n0  0  1  1  0\r\n0  0  0  0  0\r\n0  0  1  0  0\r\n0  0  0  0  0\r\n];\r\ngroups = [ 3  3  1  2  1 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n5  3  4  2  1\r\n5  3  4  1  2\r\n4  3  5  2  1\r\n4  3  5  1  2\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  1  0  0  0\r\n0  0  1  0  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n1  0  0  1  0\r\n];\r\ngroups = [ 2  2  2  1  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n4  3  2  1  5\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  1  0  0  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n1  0  0  0  1\r\n0  0  1  0  0\r\n];\r\ngroups = [ 1  1  2  3  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n2  1  3  5  4\r\n4  3  1  5  2\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  0  0\r\n0  0  1  0  0\r\n0  1  0  0  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n];\r\ngroups = [ 5  1  2  3  4 ];\r\norder = calculation_order(dependencies,groups);\r\nassert(isempty(order));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  0  0\r\n1  0  0  0  0\r\n0  0  0  1  0\r\n0  1  0  0  0\r\n0  0  1  0  0\r\n];\r\ngroups = [ 1  1  2  3  2 ];\r\norder = calculation_order(dependencies,groups);\r\nassert(isempty(order));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  0  1\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n1  0  0  0  0\r\n];\r\ngroups = [ 2  2  3  1  1 ];\r\norder = calculation_order(dependencies,groups);\r\nassert(isempty(order));\r\n\r\n%%\r\ndependencies_ = ones(10+randi(10));\r\ndependencies_ = dependencies_-triu(dependencies_);\r\norder_ = randperm(size(dependencies_,1));\r\ndependencies = dependencies_(order_,order_);\r\norder_ = 0;\r\norder = calculation_order(dependencies,1:size(dependencies_,1));\r\nordered = dependencies(order,order);\r\nassert(~nnz(triu(ordered-diag(diag(ordered)))));\r\norder = calculation_order(dependencies,ones(1,size(dependencies_,1)));\r\nordered = dependencies(order,order);\r\nassert(~nnz(triu(ordered-diag(diag(ordered)))));\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":2,"created_by":6556,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1,"test_suite_updated_at":"2014-02-21T15:59:05.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2014-02-18T08:50:55.000Z","updated_at":"2014-02-21T15:59:05.000Z","published_at":"2014-02-21T09:38:58.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 problem is closely related to\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.nl/matlabcentral/cody/problems/2189-order-of-things-1\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2189, Order of things - 1\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.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2190, Order of things - 2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other.\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eHowever, this time the tasks are grouped, and groups of tasks should be executed at once.\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIt may (still) be impossible to find a solution, since dependencies may be cyclic. But this may now also be due to the grouping of tasks. In any case, return an empty vector if no order is found.\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThere are still multiple orders possible, return them as multiple rows of the output 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe tasks within a group should of course be specified in the right order, when interdependent.\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 dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency.\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[   A  B  C  D  E\\nA  0  0  0  0  0\\nB  0  0  0  0  0\\nC  0  1  0  0  0\\nD  0  1  1  0  0\\nE  1  0  0  0  0]]\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\u003eThe\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e on row\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, column\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, indicates that task\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e depends on task\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u0026gt; 0, e.g.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ [ 1 1 2 3 3 ]]]\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\u003eReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ [ \\n   1 2 3 4 5\\n   1 2 3 5 4\\n   2 1 3 4 5\\n   2 1 3 5 4\\n ]]]\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\u003eIf no order fulfilling the dependencies exists, return an empty vector.\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":2192,"title":"Order of things - 4","description":"*This is the last assignment in the _Order of Things_-series. If that past incompleteness kept you from solving it, you may start now.* Open that bottle of wine, and spend an entertaining evening coding.\r\n\r\nThis problem is closely related to \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2189-order-of-things-1 Problem 2189, Order of things - 1\u003e, \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2 Problem 2190, Order of things - 2\u003e, and \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2191-order-of-things-3 Problem 2191, Order of things - 3\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other. \r\n\r\nHowever, this is the most complex case, as \r\n* Calculations are preferably grouped, but may, due to their dependencies, not all be clustered. So groups of events may be split over different clusters. The number of clusters per group should be kept to a minimum. \r\n\r\nThe same complications as in problem 3 may apply:\r\n* It may (still) be impossible to find a solution, since dependencies may be cyclic. But this is now no longer due to the grouping of tasks, as you may, if necessary, break the rule of grouping. In any case, return an empty vector if no order is found.\r\n* There are still multiple orders possible, return them as multiple rows of the output vector.\r\n* The tasks within a group should of course be specified in the right order, when interdependent.\r\n\r\nThe dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency. \r\n\r\n   A  B  C  D  E\r\nA  0  0  0  0  0\r\nB  0  0  1  0  0\r\nC  1  0  0  0  0\r\nD  0  0  1  0  0\r\nE  1  0  0  0  0\r\n\r\nThe |1| on row |C|, column |B|, indicates that task |C| depends on task |B|. \r\n\r\nThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u003e 0, for every task, e.g. \r\n\r\n [ 1 1 2 2 3 ] \r\n\r\nReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\r\n\r\n [ \r\n   1 3 4 2 5\r\n   1 3 4 5 2\r\n   1 5 3 4 2\r\n ]\r\n\r\nIf no order fulfilling the dependencies exists, return an empty vector.","description_html":"\u003cp\u003e\u003cb\u003eThis is the last assignment in the \u003ci\u003eOrder of Things\u003c/i\u003e-series. If that past incompleteness kept you from solving it, you may start now.\u003c/b\u003e Open that bottle of wine, and spend an entertaining evening coding.\u003c/p\u003e\u003cp\u003eThis problem is closely related to \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2189-order-of-things-1\"\u003eProblem 2189, Order of things - 1\u003c/a\u003e, \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2\"\u003eProblem 2190, Order of things - 2\u003c/a\u003e, and \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2191-order-of-things-3\"\u003eProblem 2191, Order of things - 3\u003c/a\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other.\u003c/p\u003e\u003cp\u003eHowever, this is the most complex case, as \r\n* Calculations are preferably grouped, but may, due to their dependencies, not all be clustered. So groups of events may be split over different clusters. The number of clusters per group should be kept to a minimum.\u003c/p\u003e\u003cp\u003eThe same complications as in problem 3 may apply:\r\n* It may (still) be impossible to find a solution, since dependencies may be cyclic. But this is now no longer due to the grouping of tasks, as you may, if necessary, break the rule of grouping. In any case, return an empty vector if no order is found.\r\n* There are still multiple orders possible, return them as multiple rows of the output vector.\r\n* The tasks within a group should of course be specified in the right order, when interdependent.\u003c/p\u003e\u003cp\u003eThe dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency.\u003c/p\u003e\u003cpre\u003e   A  B  C  D  E\r\nA  0  0  0  0  0\r\nB  0  0  1  0  0\r\nC  1  0  0  0  0\r\nD  0  0  1  0  0\r\nE  1  0  0  0  0\u003c/pre\u003e\u003cp\u003eThe \u003ctt\u003e1\u003c/tt\u003e on row \u003ctt\u003eC\u003c/tt\u003e, column \u003ctt\u003eB\u003c/tt\u003e, indicates that task \u003ctt\u003eC\u003c/tt\u003e depends on task \u003ctt\u003eB\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u0026gt; 0, for every task, e.g.\u003c/p\u003e\u003cpre\u003e [ 1 1 2 2 3 ] \u003c/pre\u003e\u003cp\u003eReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\u003c/p\u003e\u003cpre\u003e [ \r\n   1 3 4 2 5\r\n   1 3 4 5 2\r\n   1 5 3 4 2\r\n ]\u003c/pre\u003e\u003cp\u003eIf no order fulfilling the dependencies exists, return an empty vector.\u003c/p\u003e","function_template":"function order = calculation_order(dependencies,groups)\r\n  order  = 1:size(dependencies,1);\r\nend","test_suite":"dependencies = [\r\n0  1  0  0  0\r\n0  0  0  0  0\r\n0  0  0  0  1\r\n0  0  0  0  1\r\n0  1  0  0  0\r\n];\r\ngroups = [ 3  1  2  1  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n3  2  5  4  1\r\n3  5  2  4  1\r\n5  4  2  3  1\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  1  0  0  0\r\n0  0  0  0  0\r\n0  0  0  1  0\r\n0  1  0  0  0\r\n0  0  0  1  0\r\n];\r\ngroups = [ 3  1  1  2  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n3  4  2  5  1\r\n3  4  5  2  1\r\n5  3  4  2  1\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  0  1  0  0\r\n0  0  0  1  0\r\n0  0  0  1  0\r\n0  0  0  0  0\r\n0  0  1  0  0\r\n];\r\ngroups = [ 1  3  2  1  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n2  1  4  5  3\r\n5  1  4  2  3\r\n4  1  3  2  5\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n    0 0 0 0 0\r\n    0 0 0 0 0\r\n    0 1 0 0 0\r\n    0 0 1 0 0\r\n    1 0 0 1 0\r\n    ];\r\ngroups = [1 2 2 2 2];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n    1 2 3 4 5\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  1  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n1  0  0  0  0\r\n0  0  0  0  0\r\n];\r\ngroups = [ 1  3  4  2  5 ];\r\norder = calculation_order(dependencies,groups);\r\nassert(isempty(order));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n0  0  0  1  0\r\n0  0  1  0  0\r\n0  0  0  0  0\r\n];\r\ngroups = [ 1  3  2  1  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n1  2  4  5  3\r\n1  2  3  5  4\r\n1  5  4  2  3\r\n1  5  3  2  4\r\n1  4  3  2  5\r\n1  3  4  2  5\r\n5  4  3  2  1\r\n5  3  4  2  1\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies_ = ones(randi(10));\r\ndependencies_ = dependencies_-triu(dependencies_);\r\norder_ = randperm(size(dependencies_,1));\r\ndependencies = dependencies_(order_,order_);\r\norder_ = 0;\r\norder = calculation_order(dependencies,1:size(dependencies_,1));\r\nordered = dependencies(order,order);\r\nassert(~nnz(triu(ordered-diag(diag(ordered)))));\r\norder = calculation_order(dependencies,ones(1,size(dependencies_,1)));\r\nordered = dependencies(order,order);\r\nassert(~nnz(triu(ordered-diag(diag(ordered)))));\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":6556,"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":"2014-02-18T08:57:21.000Z","updated_at":"2014-03-04T07:49:56.000Z","published_at":"2014-03-04T07:49:56.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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eThis is the last assignment in the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOrder of Things\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e-series. If that past incompleteness kept you from solving it, you may start now.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Open that bottle of wine, and spend an entertaining evening coding.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is closely related to\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.nl/matlabcentral/cody/problems/2189-order-of-things-1\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2189, Order of things - 1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2190, Order of things - 2\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.mathworks.nl/matlabcentral/cody/problems/2191-order-of-things-3\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2191, Order of things - 3\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other.\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\u003eHowever, this is the most complex case, as * Calculations are preferably grouped, but may, due to their dependencies, not all be clustered. So groups of events may be split over different clusters. The number of clusters per group should be kept to a minimum.\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 same complications as in problem 3 may apply: * It may (still) be impossible to find a solution, since dependencies may be cyclic. But this is now no longer due to the grouping of tasks, as you may, if necessary, break the rule of grouping. In any case, return an empty vector if no order is found. * There are still multiple orders possible, return them as multiple rows of the output vector. * The tasks within a group should of course be specified in the right order, when interdependent.\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 dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency.\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[   A  B  C  D  E\\nA  0  0  0  0  0\\nB  0  0  1  0  0\\nC  1  0  0  0  0\\nD  0  0  1  0  0\\nE  1  0  0  0  0]]\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\u003eThe\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e on row\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, column\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, indicates that task\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e depends on task\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u0026gt; 0, for every task, e.g.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ [ 1 1 2 2 3 ]]]\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\u003eReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ [ \\n   1 3 4 2 5\\n   1 3 4 5 2\\n   1 5 3 4 2\\n ]]]\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\u003eIf no order fulfilling the dependencies exists, return an empty vector.\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\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":44675,"title":"Find prime number couples","description":"Given a vector a, which will always contain at least one pair of prime numbers couple, return a matrix called 'couple' in which each row contains one pair of prime couples. A prime number couple pair are two prime numbers with a difference of two between them. Keep in mind that the numbers 2, 3, 5, and 7 are prime numbers.\r\n\r\nFor example, if a=[1 2 3 6 11 13 101 103], the output should be couple=[11 13; 101 103].","description_html":"\u003cp\u003eGiven a vector a, which will always contain at least one pair of prime numbers couple, return a matrix called 'couple' in which each row contains one pair of prime couples. A prime number couple pair are two prime numbers with a difference of two between them. Keep in mind that the numbers 2, 3, 5, and 7 are prime numbers.\u003c/p\u003e\u003cp\u003eFor example, if a=[1 2 3 6 11 13 101 103], the output should be couple=[11 13; 101 103].\u003c/p\u003e","function_template":"function couple = find_prime_couples(a)\r\n\r\nend","test_suite":"%%\r\na=[1 4 6 7 8 11 13 16 23 29 31];\r\ncouple=[11 13; 29 31];\r\nassert(isequal(find_prime_couples(a),couple))\r\n%%\r\na=[16\t97\t88\t49\t41\t13\t93\t1\t19\t33\t6\t15\t73\t49\t34\t24\t46\t19\t33\t27\t84\t70\t34\t59\t29\t27\t26\t68\t52\t8\t6\t26\t44\t29\t68\t95\t78\t64\t76\t75\t59\t78\t40\t61\t25\t30\t2\t35\t15\t42\t16\t83\t74\t10\t83\t23\t11\t67\t96\t82\t63\t33\t28\t44\t36\t88\t1\t70\t34\t31\t65\t93\t90\t100\t8\t13\t99\t10\t69\t93\t15\t89\t2\t35\t24\t99\t85\t80\t91\t79\t84\t33\t75\t67\t29\t34\t91\t4\t70\t21];\r\ncouple=[11 13; 29 31; 59 61];\r\nassert(isequal(find_prime_couples(a),couple))\r\n%%\r\na=[2 3\t5 7\t11\t13\t17\t19\t23\t29\t31\t37\t41\t43\t47\t53\t59\t61\t67\t71\t73\t79\t83\t89\t97\t101\t103\t107\t109\t113\t127\t131\t137\t139\t149\t151\t157\t163\t167\t173\t179\t181\t191\t193\t197\t199];\r\ncouple=[3\t5;\r\n5\t7;\r\n11\t13;\r\n17\t19;\r\n29\t31;\r\n41\t43;\r\n59\t61;\r\n71\t73;\r\n101\t103;\r\n107\t109;\r\n137\t139;\r\n149\t151;\r\n179\t181;\r\n191\t193;\r\n197\t199];\r\nassert(isequal(find_prime_couples(a),couple))","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":183778,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":26,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-06-06T14:10:53.000Z","updated_at":"2026-01-09T19:11:22.000Z","published_at":"2018-06-06T14:10:53.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\u003eGiven a vector a, which will always contain at least one pair of prime numbers couple, return a matrix called 'couple' in which each row contains one pair of prime couples. A prime number couple pair are two prime numbers with a difference of two between them. Keep in mind that the numbers 2, 3, 5, and 7 are prime numbers.\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\u003eFor example, if a=[1 2 3 6 11 13 101 103], the output should be couple=[11 13; 101 103].\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":1509,"title":"Fast Fourier transform algorithm","description":"Your task is to implement the Fast Fourier transform algorithm, without using builtin MATLAB fft commands e.g. fft, fft2, or hardcoded numeric answers in the test case. The test suite employs regular expression matching to reject such solutions.\r\nCreative hacking attempts are appreciated. While I will update the test case accordingly, I'll send you some MathWorks swag if you're the first to demonstrate a new way to get the Test Suite to pass (maybe a t-shirt or coffee mug, you'll have to try and see :-) Jose', yours is on the way.\r\nreference: http://en.wikipedia.org/wiki/Fast_Fourier_transform","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: 144px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 72px; transform-origin: 407px 72px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 381.5px 8px; transform-origin: 381.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYour task is to implement the Fast Fourier transform algorithm, without using builtin MATLAB fft commands e.g. fft, fft2, or hardcoded numeric answers in the test case. The test suite employs regular expression matching to reject such solutions.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 373.5px 8px; transform-origin: 373.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eCreative hacking attempts are appreciated. While I will update the test case accordingly, I'll send you some MathWorks swag if you're the first to demonstrate a new way to get the Test Suite to pass (maybe a t-shirt or coffee mug, you'll have to try and see :-) Jose', yours is on the way.\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: 32.5px 8px; transform-origin: 32.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003ereference:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/1509-fast-fourier-transform-algorithm/edit#null\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003ehttp://en.wikipedia.org/wiki/Fast_Fourier_transform\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = fast_fourier(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nassert(isequal(exist('fast_fourier.m'),2))\r\n%%\r\n%%\r\nfiletext = fileread('fast_fourier.m');\r\nassert(isempty(strfind(filetext, 'fft')))\r\nassert(isempty(strfind(filetext, 'regexp')))\r\n\r\n%%\r\nfor k=5:50\r\n  x = [11;k;2];\r\n  y_correct = fft(x);\r\n  assert(all(abs(fast_fourier(x)-y_correct)\u003c1e-4))\r\nend","published":true,"deleted":false,"likes_count":0,"comments_count":3,"created_by":5657,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":14,"test_suite_updated_at":"2022-01-02T19:35:37.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-05-14T14:47:34.000Z","updated_at":"2022-01-02T19:35:37.000Z","published_at":"2013-05-14T14:47:34.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\u003eYour task is to implement the Fast Fourier transform algorithm, without using builtin MATLAB fft commands e.g. fft, fft2, or hardcoded numeric answers in the test case. The test suite employs regular expression matching to reject such solutions.\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\u003eCreative hacking attempts are appreciated. While I will update the test case accordingly, I'll send you some MathWorks swag if you're the first to demonstrate a new way to get the Test Suite to pass (maybe a t-shirt or coffee mug, you'll have to try and see :-) Jose', yours is on the way.\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\u003ereference:\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\u003ehttp://en.wikipedia.org/wiki/Fast_Fourier_transform\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\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":1032,"title":"compare strings","description":"Given 2 strings and 3 actions (Insert,delete,replace) on characters. Find the difference between two strings.\r\n\r\nExample:\r\n\r\nstring1 = 'spring'\r\n\r\nstring2 = 'strange'\r\n\r\nreplace(p,t), replace(i,a), insert(e) = 3 actions = 3 differences\r\n\r\nso the answer is 3","description_html":"\u003cp\u003eGiven 2 strings and 3 actions (Insert,delete,replace) on characters. Find the difference between two strings.\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cp\u003estring1 = 'spring'\u003c/p\u003e\u003cp\u003estring2 = 'strange'\u003c/p\u003e\u003cp\u003ereplace(p,t), replace(i,a), insert(e) = 3 actions = 3 differences\u003c/p\u003e\u003cp\u003eso the answer is 3\u003c/p\u003e","function_template":"function d = findDifference(str1,str2)\r\n  d = length(str1)-length(str2);\r\nend","test_suite":"%%\r\nstr1 = 'spring';\r\nstr2 = 'strange';\r\nd_correct = 3;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'this';\r\nstr2 = 'has';\r\nd_correct = 2;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'acgtacgtacgt';\r\nstr2 = 'acatacttgtact';\r\nd_correct = 4;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'fractapertornisem';\r\nstr2 = 'alfracchaperitonism';\r\nd_correct = 7;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'spring';\r\nstr2 = 'spring';\r\nd_correct = 0;\r\nassert(isequal(findDifference(str1,str2),d_correct))\r\n%%\r\nstr1 = 'qazwsxedcrfvtgb';\r\nstr2 = 'qazwsmedcvfr';\r\nd_correct = 6;\r\nassert(isequal(findDifference(str1,str2),d_correct))","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":4320,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":32,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-11-14T11:22:25.000Z","updated_at":"2025-12-14T16:53:53.000Z","published_at":"2012-11-14T11:22:25.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\u003eGiven 2 strings and 3 actions (Insert,delete,replace) on characters. Find the difference between two strings.\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\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003estring1 = 'spring'\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\u003estring2 = 'strange'\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\u003ereplace(p,t), replace(i,a), insert(e) = 3 actions = 3 differences\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\u003eso the answer is 3\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":886,"title":"Rubik's Cube: Solve Randomized Cube  - Score : Moves","description":"The Challenge is to Solve a thoroughly scrambled Rubik's Cube.\r\n\r\nThe Performance metric is average number of moves for solving 200 cubes.\r\n\r\nA standard 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 loaded function r_new=rubick_rot(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/cube_small.gif\u003e\u003e\r\n\r\n\u003c\u003chttps://sites.google.com/site/razapor/matlab_cody/Cube_Map28_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 54\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] DU' which are the complements in reverse order. \r\n* Scoring is average face moves for 200 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(mov,r) is available for intermediate processing\r\n\r\n\r\nThe Function Template Contains a 3D Cube Viewer and the first part of the Beginner's Solution at the bottom in a comment block.\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\r\n\r\nComing Soon: The Mini-Cube  (2x2x2)  Not as easy as it looks","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: 1195.12px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 597.567px; transform-origin: 407px 597.567px; 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: 199.733px 7.91667px; transform-origin: 199.733px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Challenge is to Solve a thoroughly scrambled Rubik's 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: 235.333px 7.91667px; transform-origin: 235.333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Performance metric is average number of moves for solving 200 cubes.\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: 340.283px 7.91667px; transform-origin: 340.283px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eA standard 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: 374.7px 7.91667px; transform-origin: 374.7px 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 loaded function r_new=rubick_rot(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: 134.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 67.4667px; text-align: center; transform-origin: 384px 67.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/gif;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 246.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 123.467px; text-align: center; transform-origin: 384px 123.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 54\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: 341.067px 7.91667px; transform-origin: 341.067px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eIf the cube was randomized by [1 9] UD', one solution is [3 7] DU' 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: 140.033px 7.91667px; transform-origin: 140.033px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eScoring is average face moves for 200 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: 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: 212.267px 7.91667px; transform-origin: 212.267px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function rubik_rot(mov,r) is available for intermediate processing\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: 382px 7.91667px; transform-origin: 382px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe Function Template Contains a 3D Cube Viewer and the first part of the Beginner's Solution at the bottom in a comment block.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cul style=\"block-size: 81.7333px; 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 40.8667px; transform-origin: 391px 40.8667px; 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\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: 189.433px 7.91667px; transform-origin: 189.433px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eComing Soon: The Mini-Cube (2x2x2) Not as easy as it looks\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function solve_vec = rubik_solve(r)\r\n% Expect Numeric representation of moves (1:27):\r\n% 1:27 are ufdlbr upfpdplpbprp u2f2d2l2b2r2 xyzxpypzpx2y2z2\r\n solve_vec=[]; \r\nend\r\n\r\n% Convert Standard cube notation into numeric solv_vec values\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\r\n\r\n% This function is already loaded and hashed. This is primarily for info\r\nfunction r=rubik_rot(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 54 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 54\r\n%\r\n% Perform Rubik Cube face rotations and cube rotations\r\n% L 1:9 U 10:18 F 19:27 D 28:36 B 37:45 R 46:54 \r\n% \r\npersistent vf\r\nif isempty(vf) %\r\nvf=[19 2 3 22 5 6 25 8 9 12 15 18 11 14 17 10 13 16 46 20 21 49 23 24 52 26 27 28 29 30 31 32 33 34 35 36 37 38 7 40 41 4 43 44 1 45 47 48 42 50 51 39 53 54; \r\n  1 2 3 4 5 6 28 31 34 10 11 9 13 14 8 16 17 7 21 24 27 20 23 26 19 22 25 48 29 30 47 32 33 46 35 36 37 38 39 40 41 42 43 44 45 12 15 18 49 50 51 52 53 54 ;\r\n  1 2 43 4 5 40 7 8 37 10 11 12 13 14 15 16 17 18 19 20 3 22 23 6 25 26 9 30 33 36 29 32 35 28 31 34 54 38 39 51 41 42 48 44 45 46 47 21 49 50 24 52 53 27 ;\r\n  3 6 9 2 5 8 1 4 7 37 38 39 13 14 15 16 17 18 10 11 12 22 23 24 25 26 27 19 20 21 31 32 33 34 35 36 28 29 30 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  16 13 10 4 5 6 7 8 9 52 11 12 53 14 15 54 17 18 19 20 21 22 23 24 25 26 27 28 29 1 31 32 2 34 35 3 39 42 45 38 41 44 37 40 43 46 47 48 49 50 51 36 33 30 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 25 26 27 19 20 21 22 23 24 34 35 36 28 29 30 31 32 33 43 44 45 37 38 39 40 41 42 16 17 18 48 51 54 47 50 53 46 49 52 ;\r\n  45 2 3 42 5 6 39 8 9 16 13 10 17 14 11 18 15 12 1 20 21 4 23 24 7 26 27 28 29 30 31 32 33 34 35 36 37 38 52 40 41 49 43 44 46 19 47 48 22 50 51 25 53 54 ;\r\n  1 2 3 4 5 6 18 15 12 10 11 46 13 14 47 16 17 48 25 22 19 26 23 20 27 24 21 7 29 30 8 32 33 9 35 36 37 38 39 40 41 42 43 44 45 34 31 28 49 50 51 52 53 54 ;\r\n  1 2 21 4 5 24 7 8 27 10 11 12 13 14 15 16 17 18 19 20 48 22 23 51 25 26 54 34 31 28 35 32 29 36 33 30 9 38 39 6 41 42 3 44 45 46 47 43 49 50 40 52 53 37 ;\r\n  7 4 1 8 5 2 9 6 3 19 20 21 13 14 15 16 17 18 28 29 30 22 23 24 25 26 27 37 38 39 31 32 33 34 35 36 10 11 12 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  30 33 36 4 5 6 7 8 9 3 11 12 2 14 15 1 17 18 19 20 21 22 23 24 25 26 27 28 29 54 31 32 53 34 35 52 43 40 37 44 41 38 45 42 39 46 47 48 49 50 51 10 13 16 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 43 44 45 19 20 21 22 23 24 16 17 18 28 29 30 31 32 33 25 26 27 37 38 39 40 41 42 34 35 36 52 49 46 53 50 47 54 51 48 ;\r\n  46 2 3 49 5 6 52 8 9 18 17 16 15 14 13 12 11 10 45 20 21 42 23 24 39 26 27 28 29 30 31 32 33 34 35 36 37 38 25 40 41 22 43 44 19 1 47 48 4 50 51 7 53 54 ;\r\n  1 2 3 4 5 6 48 47 46 10 11 34 13 14 31 16 17 28 27 26 25 24 23 22 21 20 19 18 29 30 15 32 33 12 35 36 37 38 39 40 41 42 43 44 45 9 8 7 49 50 51 52 53 54 ;\r\n  1 2 48 4 5 51 7 8 54 10 11 12 13 14 15 16 17 18 19 20 43 22 23 40 25 26 37 36 35 34 33 32 31 30 29 28 27 38 39 24 41 42 21 44 45 46 47 3 49 50 6 52 53 9 ;\r\n  9 8 7 6 5 4 3 2 1 28 29 30 13 14 15 16 17 18 37 38 39 22 23 24 25 26 27 10 11 12 31 32 33 34 35 36 19 20 21 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  54 53 52 4 5 6 7 8 9 36 11 12 33 14 15 30 17 18 19 20 21 22 23 24 25 26 27 28 29 16 31 32 13 34 35 10 45 44 43 42 41 40 39 38 37 46 47 48 49 50 51 3 2 1 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 34 35 36 19 20 21 22 23 24 43 44 45 28 29 30 31 32 33 16 17 18 37 38 39 40 41 42 25 26 27 54 53 52 51 50 49 48 47 46 ;\r\n  7 4 1 8 5 2 9 6 3 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 48 51 54 47 50 53 46 49 52 ;\r\n  19 20 21 22 23 24 25 26 27 12 15 18 11 14 17 10 13 16 46 47 48 49 50 51 52 53 54 34 31 28 35 32 29 36 33 30 9 8 7 6 5 4 3 2 1 45 44 43 42 41 40 39 38 37 ;\r\n  30 33 36 29 32 35 28 31 34 3 6 9 2 5 8 1 4 7 21 24 27 20 23 26 19 22 25 48 51 54 47 50 53 46 49 52 43 40 37 44 41 38 45 42 39 12 15 18 11 14 17 10 13 16 ;\r\n  3 6 9 2 5 8 1 4 7 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 52 49 46 53 50 47 54 51 48 ;\r\n  45 44 43 42 41 40 39 38 37 16 13 10 17 14 11 18 15 12 1 2 3 4 5 6 7 8 9 30 33 36 29 32 35 28 31 34 54 53 52 51 50 49 48 47 46 19 20 21 22 23 24 25 26 27 ;\r\n  16 13 10 17 14 11 18 15 12 52 49 46 53 50 47 54 51 48 25 22 19 26 23 20 27 24 21 7 4 1 8 5 2 9 6 3 39 42 45 38 41 44 37 40 43 34 31 28 35 32 29 36 33 30 ;\r\n  9 8 7 6 5 4 3 2 1 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 54 53 52 51 50 49 48 47 46 ;\r\n  46 47 48 49 50 51 52 53 54 18 17 16 15 14 13 12 11 10 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 1 2 3 4 5 6 7 8 9 ; \r\n  54 53 52 51 50 49 48 47 46 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 45 44 43 42 41 40 39 38 37 9 8 7 6 5 4 3 2 1 ];\r\nend\r\n\r\nr=r(vf(mov,:));\r\n\r\nend\r\n\r\n\r\n\r\n\r\n\r\n\r\n% Cube Viewer and Cube Solver Development Environment\r\n%{\r\nfunction Rubik_3D_2754_Solver_viewer\r\n%Rubiks Cube Play\r\n%Creator: Richard Zapor\r\n% 09/01/12\r\nclear all\r\nglobal pmap plate zCmap r  % For 3D  viewer\r\n\r\n% initialize cube\r\n r(1:9)=0;     %Left   0 R\r\n r(10:18)=1;   %Up     1 W\r\n r(19:27)=2;   %Front  2 B\r\n r(28:36)=3;   %Down   3 Y\r\n r(37:45)=4;   %Back   4 G\r\n r(46:54)=5;   %Right  5 O\r\n rnorm=r;\r\n \r\n % Map 3D platelettes and surfaces\r\n [pmap plate]=cube_faces; % One time association of array to 3D surfaces\r\n  % zCmap=[0,0,0;1,1,1;0,0,1;1,1,0;1,0,0;0,1,0;1,.6,0]; \r\n  % 1-Blk,2-Wht,3-Blu,4-Yellow,5-Red,6-Green,7-Orange\r\n  \r\n  zCmap=[0,0,0;1,0,0;1,1,1;0,0,1;1,1,0;0,1,0;1,.6,0]; \r\n  % 1-Blk,2-Red,3-Wht,4-Blu,5-Yellow,6-Green,7-Orange\r\n\r\n% Initialize 3D figure\r\nfigure(2);set(gca,'CameraPosition',[6 -2 7]); % Initial 3D setup\r\n   axis ([-1 4 -1 4 -1 4]);\r\n   axis equal % This is slow but needed for free rotate 1.2 sec\r\n   axis off\r\nview3D % Calls subroutine that produces a 3D image in figure 2\r\n\r\n% r=rubik_rot2(r,mov)\r\n% mov is 1:27;  1-6 UFDLB 7-12 U'F;D'L'B' 13-18 U2F2D2L2B2 \r\n%             22-27 XYZ X'Y'Z' X2Y2Z2  \r\n% X cube-R, Y cube-U,  Z cube-F\r\n\r\nfprintf('Move Entry (UFDLBRXYZ) eg U U2 U'' (or Up) or G=GoReset P=Play Q-Quit  :\\n');\r\nwhile 1 % Infinite loop\r\n str1=input('Enter Move(s):','s');\r\n if isempty(str1),continue;end\r\n movestr1=regexp(upper(strtrim(str1)),'\\s*','split');\r\n if movestr1{1}=='P',break;end\r\n if movestr1{1}=='Q',return;end\r\n if movestr1{1}=='G'\r\n  r=rnorm;\r\n  view3D\r\n  continue;\r\n end\r\n \r\n move_vec=decode27_movestr_rev001(str1);\r\n \r\n for i=1:length(move_vec) \r\n  r=rubik_rot(move_vec(i),r);\r\n end\r\n view3D\r\n%  pause(0.1)\r\n \r\nend % while move manipulation practice loop\r\n\r\n% Setup Cube and Play\r\n\r\nfprintf('\\n\\nSolve Multiple Cubes\\n')\r\nzcnt=0;\r\nsum_solve=0;\r\nmin_solve=1000;\r\nmax_solve=0;\r\ntic\r\nwhile 1 % Games loop\r\n    mix=40; % Very random cube\r\n    zcnt=zcnt+1;\r\n    if zcnt\u003e10,break;end\r\n% mix=input('\\n\\nHow many random face rotations? (0=Exit) : ');\r\n% if isempty(mix),continue;end\r\n\r\n r=rnorm;\r\n % Initial mix\r\n mov=randi(18,[mix,1]);\r\n for i=1:length(mov) \r\n  if i\u003e1 % Eliminate move undos\r\n  % f2 f2 or f f'  or f' f\r\n   if (mov(i)\u003e12 \u0026\u0026 mov(i-1)==mov(i))||(mov(i-1)\u003c7 \u0026\u0026 mov(i)==mov(i-1)+6)||...\r\n       (mov(i-1)\u003e6  \u0026\u0026 mov(i)==mov(i-1)-6)    \r\n    mov(i)=mov(i)+1;   % 1:17 map to 2:18  18 map to 1\r\n    if mov(i)==19,mov(i)=1;end\r\n   end\r\n  end\r\n  r=rubik_rot(mov(i),r);\r\n end\r\n \r\n r_reset=r;\r\n \r\n solve_vec=[];\r\n \r\n % Check cube for Good face and Edges\r\n % Place on Up; Solve Cross/Corners with u u' or u2\r\n % Assures single move i solved in 1 move, may solve at bottom solid face\r\n % check\r\n \r\n% Insert Solution Code Starting Here\r\n \r\n   \r\n  for icross=1:4 % Solve cross\r\n   movestr=solve_cross_str(r);\r\n   move_vec=decode27_movestr_rev001(movestr);\r\n   \r\n   move_vec=[move_vec 23]; % add a Y to get to next face\r\n   solve_vec=[solve_vec move_vec];\r\n   \r\n   for i=1:length(move_vec) \r\n    r=rubik_rot(move_vec(i),r);\r\n   end\r\n  end % cross\r\n  \r\n  view3D\r\n% No further moves are implemented\r\n  \r\n  % Solve Top Corners\r\n  for corners=1:4 % Solve Top corners TLFC\r\n   movestr='';\r\n   %movestr=solve_corners_str(r); % Function deleted from template\r\n   move_vec=decode27_movestr_rev001(movestr);\r\n   \r\n   move_vec=[move_vec 23]; % add a Y to get to next face\r\n   solve_vec=[solve_vec move_vec];\r\n   \r\n   for i=1:length(move_vec) \r\n    r=rubik_rot(move_vec(i),r);\r\n   end\r\n  end % corners\r\n  \r\n  % Solve Middle Edges\r\n  for edges=1:4 % Solve Edge MLFE\r\n   movestr='';\r\n   %movestr=solve_edges_str(r); % Function deleted from template\r\n   move_vec=decode27_movestr_rev001(movestr);\r\n   \r\n   move_vec=[move_vec 23]; % add a Y to get to next face\r\n   solve_vec=[solve_vec move_vec];\r\n   \r\n   for i=1:length(move_vec) \r\n    r=rubik_rot(move_vec(i),r);\r\n   end\r\n  end % MLFE\r\n  \r\n  % Solve Bottom by flipping to Top and running SpeedCube Sequences\r\n  \r\n  % Position Bottom to Top\r\n  r=rubik_rot(25,r);\r\n  solve_vec=[solve_vec 25];\r\n\r\n  \r\n\r\n  \r\n  if all(r(1:9)==r(5)) \u0026\u0026 all(r(10:18)==r(14))  \u0026\u0026 all(r(19:27)==r(23)) \u0026\u0026 ...\r\n     all(r(28:36)==r(32))  \u0026\u0026 all(r(37:45)==r(41)) \u0026\u0026 all(r(46:54)==r(50))\r\n   fprintf('Cube Solved Prior to Bottom Corrections Moves=%i\\n',length(solve_vec))\r\n  else\r\n   %view3D\r\n    movestr='';\r\n  % movestr=solve_bottom_str(r); % Function deleted from template\r\n   move_vec=decode27_movestr_rev001(movestr);\r\n   \r\n   solve_vec=[solve_vec move_vec];\r\n   \r\n   for i=1:length(move_vec) \r\n    r=rubik_rot(move_vec(i),r);\r\n   end\r\n  end\r\n   \r\n % Normal Cube Return Point\r\n  \r\n % Verify Solution and Generate Statistics\r\n  if all(r(1:9)==r(5)) \u0026\u0026 all(r(10:18)==r(14))  \u0026\u0026 all(r(19:27)==r(23)) \u0026\u0026 ...\r\n     all(r(28:36)==r(32))  \u0026\u0026 all(r(37:45)==r(41)) \u0026\u0026 all(r(46:54)==r(50))\r\n   solve_vec(solve_vec\u003e18)=[]; % \r\n   lsolve=length(solve_vec);\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   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   view3D \r\n   pause(30) % Big Long pause\r\n  end\r\n  \r\n\r\nend % Games Loop\r\ntoc\r\n\r\nview3D % appearance of final cube\r\n\r\nfprintf('\\n\\nThank You for Playing\\n\\nPlease come again.\\n')\r\n\r\nend\r\n\r\nfunction  movestr=solve_cross_str(r)\r\npersistent m\r\nif isempty(m) % all moves leave possibly valid cross members unscathed\r\n m={[15 22  ''];\r\n    [22 15 'f2drfprp'];  \r\n    [17 49 'r2dpf2']; \r\n    [49 17 'rpfp'];\r\n    [13 42 'b2d2f2'];\r\n    [42 13 'b2dprfprp'];\r\n    [11  4 'l2df2'];\r\n    [ 4 11 'lf'];\r\n    [26 47 'rpdprf2'];\r\n    [47 26 'fp'];\r\n    [53 44 'r2fpr2']; \r\n    [44 53 'rdprpf2'];\r\n    [38  2 'lpdlf2'];\r\n    [ 2 38 'l2fl2'];\r\n    [ 8 20 'f'];\r\n    [20  8 'ldlpf2'];\r\n    [24 31 'drfprp'];\r\n    [31 24 'f2'];\r\n    [51 35 'rfprp'];\r\n    [35 51 'dpf2'];\r\n    [40 33 'dprfprp'];\r\n    [33 40 'd2f2'];\r\n    [ 6 29 'lpfl'];\r\n    [ 29 6 'df2']};\r\nend\r\n u=r(14); % value of top\r\n f=r(23); % value of front face\r\n for ptr=1:24\r\n  if r(abs(m{ptr}(1)))==u \u0026\u0026 r(abs(m{ptr}(2)))==f, break;end\r\n end\r\n \r\n movestr=m{ptr}(3:end);\r\nend % solve cross\r\n\r\n\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\r\n\r\n\r\n\r\nfunction view3D\r\n global pmap plate zCmap r\r\n  hold on;\r\n  for i=1:54\r\n    idx=pmap(i);\r\n    fill3(plate(i,1:4),plate(i,5:8),plate(i,9:12),zCmap(r(idx)+2,:),'LineWidth',2) \r\n   % fill3(plate(i,1:4),plate(i,5:8),plate(i,9:12),zCmap(r(idx),:),'LineWidth',2) \r\n  end\r\n  hold off\r\n\r\nend\r\n\r\n\r\n\r\nfunction [pmap plate]=cube_faces()\r\n%global pmap plate\r\n% Sequence that cube faces are filled\r\n pmap=[3 6 9 2 5 8 1 4 7 21 24 27 20 23 26 19 22 25 ...\r\n       54 51 48 53 50 47 52 49 46 ...\r\n       37 40 43 38 41 44 39 42 45 ...\r\n       10 13 16 11 14 17 12 15 18 ...\r\n       30 33 36 29 32 35 28 31 34 ];\r\n plate=zeros(54,12);\r\n % Could optimize creation or load from mat\r\n % Four 3D corners x1 x2 x3 x4 y1 y2 y3 y4 z1 z2 z3 z4\r\n plate(1,:)=[0 1 1 0 0 0 0 0 0 0 1 1];\r\n plate(2,:)=[1 2 2 1 0 0 0 0 0 0 1 1];\r\n plate(3,:)=[2 3 3 2 0 0 0 0 0 0 1 1];\r\n plate(4,:)=[0 1 1 0 0 0 0 0 1 1 2 2];\r\n plate(5,:)=[1 2 2 1 0 0 0 0 1 1 2 2];\r\n plate(6,:)=[2 3 3 2 0 0 0 0 1 1 2 2];\r\n plate(7,:)=[0 1 1 0 0 0 0 0 2 2 3 3];\r\n plate(8,:)=[1 2 2 1 0 0 0 0 2 2 3 3];\r\n plate(9,:)=[2 3 3 2 0 0 0 0 2 2 3 3];\r\n \r\n plate(10,:)=[3 3 3 3 0 1 1 0 0 0 1 1];\r\n plate(11,:)=[3 3 3 3 1 2 2 1 0 0 1 1];\r\n plate(12,:)=[3 3 3 3 2 3 3 2 0 0 1 1];\r\n plate(13,:)=[3 3 3 3 0 1 1 0 1 1 2 2];\r\n plate(14,:)=[3 3 3 3 1 2 2 1 1 1 2 2];\r\n plate(15,:)=[3 3 3 3 2 3 3 2 1 1 2 2];\r\n plate(16,:)=[3 3 3 3 0 1 1 0 2 2 3 3];\r\n plate(17,:)=[3 3 3 3 1 2 2 1 2 2 3 3];\r\n plate(18,:)=[3 3 3 3 2 3 3 2 2 2 3 3];\r\n \r\n plate(19:27,:)=plate(1:9,:);\r\n plate(19:27,5:8)=repmat(3,9,4);\r\n \r\n plate(28:36,:)=plate(10:18,:);\r\n plate(28:36,1:4)=zeros(9,4); %repmat(0,9,4);\r\n \r\n plate(37,:)=[0 1 1 0 0 0 1 1 3 3 3 3];\r\n plate(38,:)=[0 1 1 0 1 1 2 2 3 3 3 3];\r\n plate(39,:)=[0 1 1 0 2 2 3 3 3 3 3 3];\r\n plate(40,:)=[1 2 2 1 0 0 1 1 3 3 3 3];\r\n plate(41,:)=[1 2 2 1 1 1 2 2 3 3 3 3];\r\n plate(42,:)=[1 2 2 1 2 2 3 3 3 3 3 3];\r\n plate(43,:)=[2 3 3 2 0 0 1 1 3 3 3 3];\r\n plate(44,:)=[2 3 3 2 1 1 2 2 3 3 3 3];\r\n plate(45,:)=[2 3 3 2 2 2 3 3 3 3 3 3];\r\n \r\n plate(46:54,:)=plate(37:45,:);\r\n plate(46:54,9:12)=zeros(9,4); %repmat(0,9,4);\r\n  \r\nend\r\n\r\n\r\n\r\nfunction r=rubik_rot(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 54 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 54\r\n%\r\n% Perform Rubik Cube face rotations and cube rotations\r\n% L 1:9 U 10:18 F 19:27 D 28:36 B 37:45 R 46:54 \r\n% \r\npersistent vf\r\nif isempty(vf) %\r\nvf=[19 2 3 22 5 6 25 8 9 12 15 18 11 14 17 10 13 16 46 20 21 49 23 24 52 26 27 28 29 30 31 32 33 34 35 36 37 38 7 40 41 4 43 44 1 45 47 48 42 50 51 39 53 54; \r\n  1 2 3 4 5 6 28 31 34 10 11 9 13 14 8 16 17 7 21 24 27 20 23 26 19 22 25 48 29 30 47 32 33 46 35 36 37 38 39 40 41 42 43 44 45 12 15 18 49 50 51 52 53 54 ;\r\n  1 2 43 4 5 40 7 8 37 10 11 12 13 14 15 16 17 18 19 20 3 22 23 6 25 26 9 30 33 36 29 32 35 28 31 34 54 38 39 51 41 42 48 44 45 46 47 21 49 50 24 52 53 27 ;\r\n  3 6 9 2 5 8 1 4 7 37 38 39 13 14 15 16 17 18 10 11 12 22 23 24 25 26 27 19 20 21 31 32 33 34 35 36 28 29 30 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  16 13 10 4 5 6 7 8 9 52 11 12 53 14 15 54 17 18 19 20 21 22 23 24 25 26 27 28 29 1 31 32 2 34 35 3 39 42 45 38 41 44 37 40 43 46 47 48 49 50 51 36 33 30 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 25 26 27 19 20 21 22 23 24 34 35 36 28 29 30 31 32 33 43 44 45 37 38 39 40 41 42 16 17 18 48 51 54 47 50 53 46 49 52 ;\r\n  45 2 3 42 5 6 39 8 9 16 13 10 17 14 11 18 15 12 1 20 21 4 23 24 7 26 27 28 29 30 31 32 33 34 35 36 37 38 52 40 41 49 43 44 46 19 47 48 22 50 51 25 53 54 ;\r\n  1 2 3 4 5 6 18 15 12 10 11 46 13 14 47 16 17 48 25 22 19 26 23 20 27 24 21 7 29 30 8 32 33 9 35 36 37 38 39 40 41 42 43 44 45 34 31 28 49 50 51 52 53 54 ;\r\n  1 2 21 4 5 24 7 8 27 10 11 12 13 14 15 16 17 18 19 20 48 22 23 51 25 26 54 34 31 28 35 32 29 36 33 30 9 38 39 6 41 42 3 44 45 46 47 43 49 50 40 52 53 37 ;\r\n  7 4 1 8 5 2 9 6 3 19 20 21 13 14 15 16 17 18 28 29 30 22 23 24 25 26 27 37 38 39 31 32 33 34 35 36 10 11 12 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  30 33 36 4 5 6 7 8 9 3 11 12 2 14 15 1 17 18 19 20 21 22 23 24 25 26 27 28 29 54 31 32 53 34 35 52 43 40 37 44 41 38 45 42 39 46 47 48 49 50 51 10 13 16 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 43 44 45 19 20 21 22 23 24 16 17 18 28 29 30 31 32 33 25 26 27 37 38 39 40 41 42 34 35 36 52 49 46 53 50 47 54 51 48 ;\r\n  46 2 3 49 5 6 52 8 9 18 17 16 15 14 13 12 11 10 45 20 21 42 23 24 39 26 27 28 29 30 31 32 33 34 35 36 37 38 25 40 41 22 43 44 19 1 47 48 4 50 51 7 53 54 ;\r\n  1 2 3 4 5 6 48 47 46 10 11 34 13 14 31 16 17 28 27 26 25 24 23 22 21 20 19 18 29 30 15 32 33 12 35 36 37 38 39 40 41 42 43 44 45 9 8 7 49 50 51 52 53 54 ;\r\n  1 2 48 4 5 51 7 8 54 10 11 12 13 14 15 16 17 18 19 20 43 22 23 40 25 26 37 36 35 34 33 32 31 30 29 28 27 38 39 24 41 42 21 44 45 46 47 3 49 50 6 52 53 9 ;\r\n  9 8 7 6 5 4 3 2 1 28 29 30 13 14 15 16 17 18 37 38 39 22 23 24 25 26 27 10 11 12 31 32 33 34 35 36 19 20 21 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 ;\r\n  54 53 52 4 5 6 7 8 9 36 11 12 33 14 15 30 17 18 19 20 21 22 23 24 25 26 27 28 29 16 31 32 13 34 35 10 45 44 43 42 41 40 39 38 37 46 47 48 49 50 51 3 2 1 ;\r\n  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 34 35 36 19 20 21 22 23 24 43 44 45 28 29 30 31 32 33 16 17 18 37 38 39 40 41 42 25 26 27 54 53 52 51 50 49 48 47 46 ;\r\n  7 4 1 8 5 2 9 6 3 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 48 51 54 47 50 53 46 49 52 ;\r\n  19 20 21 22 23 24 25 26 27 12 15 18 11 14 17 10 13 16 46 47 48 49 50 51 52 53 54 34 31 28 35 32 29 36 33 30 9 8 7 6 5 4 3 2 1 45 44 43 42 41 40 39 38 37 ;\r\n  30 33 36 29 32 35 28 31 34 3 6 9 2 5 8 1 4 7 21 24 27 20 23 26 19 22 25 48 51 54 47 50 53 46 49 52 43 40 37 44 41 38 45 42 39 12 15 18 11 14 17 10 13 16 ;\r\n  3 6 9 2 5 8 1 4 7 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 52 49 46 53 50 47 54 51 48 ;\r\n  45 44 43 42 41 40 39 38 37 16 13 10 17 14 11 18 15 12 1 2 3 4 5 6 7 8 9 30 33 36 29 32 35 28 31 34 54 53 52 51 50 49 48 47 46 19 20 21 22 23 24 25 26 27 ;\r\n  16 13 10 17 14 11 18 15 12 52 49 46 53 50 47 54 51 48 25 22 19 26 23 20 27 24 21 7 4 1 8 5 2 9 6 3 39 42 45 38 41 44 37 40 43 34 31 28 35 32 29 36 33 30 ;\r\n  9 8 7 6 5 4 3 2 1 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 54 53 52 51 50 49 48 47 46 ;\r\n  46 47 48 49 50 51 52 53 54 18 17 16 15 14 13 12 11 10 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 1 2 3 4 5 6 7 8 9 ; \r\n  54 53 52 51 50 49 48 47 46 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 45 44 43 42 41 40 39 38 37 9 8 7 6 5 4 3 2 1 ];\r\nend\r\n\r\nr=r(vf(mov,:));\r\n\r\nend\r\n\r\n\r\n\r\n%}","test_suite":"%%\r\n% Load function rubik_rot.m\r\ntic\r\n%urlwrite('http://tinyurl.com/matlab-rubik-rot','rubik_rot.m') ;\r\nfname='https://sites.google.com/site/razapor/matlab_cody/rubik_rot.m?attredirects=0\u0026d=1';\r\nurlwrite(fname,'rubik_rot.m');\r\n%urlwrite('http://rmatlabtest.appspot.com/rubik_rot.m','rubik_rot.m') ;\r\nrehash path\r\ntoc\r\n%%\r\nfeval(@assignin,'caller','score',0);\r\n%%\r\nPass=1;\r\nr_fail=0;\r\n% Execute 200 cubes and verify completeness and count moves\r\n r(1:9)=0;     %Left   0 R\r\n r(10:18)=1;   %Up     1 W\r\n r(19:27)=2;   %Front  2 B\r\n r(28:36)=3;   %Down   3 Y\r\n r(37:45)=4;   %Back   4 G\r\n r(46:54)=5;   %Right  5 O\r\n rnorm=r;\r\n\r\nzcnt=0;\r\nsum_solve=0;\r\nmin_solve=1000;\r\nmax_solve=0;\r\nasolve=199;\r\nmix=40;\r\n\r\nwhile zcnt\u003c200\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=rubik_rot(mov(i),r);\r\n end\r\n\r\n r_reset=r; % Used in assert\r\n\r\n solve_vec=rubik_solve(r);\r\n\r\n for i=1:length(solve_vec) \r\n  r=rubik_rot(solve_vec(i),r);\r\n end\r\n\r\n if all(r(1:9)==r(5)) \u0026\u0026 all(r(10:18)==r(14))  \u0026\u0026 all(r(19:27)==r(23)) \u0026\u0026 ...\r\n     all(r(28:36)==r(32))  \u0026\u0026 all(r(37:45)==r(41)) \u0026\u0026 all(r(46:54)==r(50))\r\n   solve_vec(solve_vec\u003e18)=[];  \r\n   lsolve=length(solve_vec);\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('%i ',r_fail)); % Output Non-Solved Cube Start\r\nif Pass\r\n feval(@assignin,'caller','score',min(200,floor(asolve)));\r\nend\r\n\r\nfprintf('Moves: Avg %i   Min %i   Max %i\\n',asolve,min_solve,max_solve)\r\n \r\n\r\n\r\n\r\n\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":2,"test_suite_updated_at":"2020-09-29T17:59:35.000Z","rescore_all_solutions":true,"group_id":1,"created_at":"2012-08-09T05:09:30.000Z","updated_at":"2025-12-23T14:48:57.000Z","published_at":"2012-09-03T07:19:16.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 Solve a thoroughly scrambled Rubik's 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 Performance metric is average number of moves for solving 200 cubes.\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 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 loaded function r_new=rubick_rot(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 54\\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] DU' 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 average face moves for 200 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(mov,r) is available for intermediate processing\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Function Template Contains a 3D Cube Viewer and the first part of the Beginner's Solution at the bottom in a comment block.\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=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eComing Soon: The Mini-Cube (2x2x2) Not as easy as it looks\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.gif\",\"relationshipId\":\"rId1\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.png\",\"relationshipId\":\"rId2\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image2.gif\",\"relationshipId\":\"rId3\"}]},{\"partUri\":\"/media/image1.gif\",\"contentType\":\"image/gif\",\"content\":\"data:image/gif;base64,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\",\"relationship\":null},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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\",\"relationship\":null},{\"partUri\":\"/media/image2.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":2191,"title":"Order of things - 3","description":"This problem is closely related to \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2189-order-of-things-1 Problem 2189, Order of things - 1\u003e and \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2 Problem 2190, Order of things - 2\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other. \r\n\r\n* However, this time the tasks are grouped, and groups of tasks should be executed at once.\r\n* It may (still) be impossible to find a solution, since dependencies may be cyclic. But this may now also be due to the grouping of tasks. In any case, return an empty vector if no order is found.\r\n* There are still multiple orders possible, return them as multiple rows of the output vector.\r\n* The tasks within a group should of course be specified in the right order, when interdependent.\r\n\r\nThe dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency. \r\n\r\n   A  B  C  D  E\r\nA  0  0  0  0  0\r\nB  0  0  0  0  0\r\nC  0  1  0  0  0\r\nD  0  1  1  0  0\r\nE  1  0  0  0  0\r\n\r\nThe |1| on row |C|, column |B|, indicates that task |C| depends on task |B|. \r\n\r\nThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u003e 0, e.g.\r\n\r\n [ 1 1 2 3 3 ] \r\n\r\nReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\r\n\r\n [ \r\n   1 2 3 4 5\r\n   1 2 3 5 4\r\n   2 1 3 4 5\r\n   2 1 3 5 4\r\n ]\r\n\r\nIf no order fulfilling the dependencies exists, return an empty vector.","description_html":"\u003cp\u003eThis problem is closely related to \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2189-order-of-things-1\"\u003eProblem 2189, Order of things - 1\u003c/a\u003e and \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2\"\u003eProblem 2190, Order of things - 2\u003c/a\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other.\u003c/p\u003e\u003cul\u003e\u003cli\u003eHowever, this time the tasks are grouped, and groups of tasks should be executed at once.\u003c/li\u003e\u003cli\u003eIt may (still) be impossible to find a solution, since dependencies may be cyclic. But this may now also be due to the grouping of tasks. In any case, return an empty vector if no order is found.\u003c/li\u003e\u003cli\u003eThere are still multiple orders possible, return them as multiple rows of the output vector.\u003c/li\u003e\u003cli\u003eThe tasks within a group should of course be specified in the right order, when interdependent.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eThe dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency.\u003c/p\u003e\u003cpre\u003e   A  B  C  D  E\r\nA  0  0  0  0  0\r\nB  0  0  0  0  0\r\nC  0  1  0  0  0\r\nD  0  1  1  0  0\r\nE  1  0  0  0  0\u003c/pre\u003e\u003cp\u003eThe \u003ctt\u003e1\u003c/tt\u003e on row \u003ctt\u003eC\u003c/tt\u003e, column \u003ctt\u003eB\u003c/tt\u003e, indicates that task \u003ctt\u003eC\u003c/tt\u003e depends on task \u003ctt\u003eB\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u0026gt; 0, e.g.\u003c/p\u003e\u003cpre\u003e [ 1 1 2 3 3 ] \u003c/pre\u003e\u003cp\u003eReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\u003c/p\u003e\u003cpre\u003e [ \r\n   1 2 3 4 5\r\n   1 2 3 5 4\r\n   2 1 3 4 5\r\n   2 1 3 5 4\r\n ]\u003c/pre\u003e\u003cp\u003eIf no order fulfilling the dependencies exists, return an empty vector.\u003c/p\u003e","function_template":"function order = calculation_order(dependencies,groups)\r\n  order  = 1:size(dependencies,1);\r\nend","test_suite":"%%\r\ndependencies = [\r\n0  0  0  0  1\r\n0  0  1  1  0\r\n0  0  0  0  0\r\n0  0  1  0  0\r\n0  0  0  0  0\r\n];\r\ngroups = [ 3  3  1  2  1 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n5  3  4  2  1\r\n5  3  4  1  2\r\n4  3  5  2  1\r\n4  3  5  1  2\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  1  0  0  0\r\n0  0  1  0  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n1  0  0  1  0\r\n];\r\ngroups = [ 2  2  2  1  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n4  3  2  1  5\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  1  0  0  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n1  0  0  0  1\r\n0  0  1  0  0\r\n];\r\ngroups = [ 1  1  2  3  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n2  1  3  5  4\r\n4  3  1  5  2\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  0  0\r\n0  0  1  0  0\r\n0  1  0  0  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n];\r\ngroups = [ 5  1  2  3  4 ];\r\norder = calculation_order(dependencies,groups);\r\nassert(isempty(order));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  0  0\r\n1  0  0  0  0\r\n0  0  0  1  0\r\n0  1  0  0  0\r\n0  0  1  0  0\r\n];\r\ngroups = [ 1  1  2  3  2 ];\r\norder = calculation_order(dependencies,groups);\r\nassert(isempty(order));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  0  1\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n1  0  0  0  0\r\n];\r\ngroups = [ 2  2  3  1  1 ];\r\norder = calculation_order(dependencies,groups);\r\nassert(isempty(order));\r\n\r\n%%\r\ndependencies_ = ones(10+randi(10));\r\ndependencies_ = dependencies_-triu(dependencies_);\r\norder_ = randperm(size(dependencies_,1));\r\ndependencies = dependencies_(order_,order_);\r\norder_ = 0;\r\norder = calculation_order(dependencies,1:size(dependencies_,1));\r\nordered = dependencies(order,order);\r\nassert(~nnz(triu(ordered-diag(diag(ordered)))));\r\norder = calculation_order(dependencies,ones(1,size(dependencies_,1)));\r\nordered = dependencies(order,order);\r\nassert(~nnz(triu(ordered-diag(diag(ordered)))));\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":2,"created_by":6556,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1,"test_suite_updated_at":"2014-02-21T15:59:05.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2014-02-18T08:50:55.000Z","updated_at":"2014-02-21T15:59:05.000Z","published_at":"2014-02-21T09:38:58.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 problem is closely related to\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.nl/matlabcentral/cody/problems/2189-order-of-things-1\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2189, Order of things - 1\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.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2190, Order of things - 2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other.\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eHowever, this time the tasks are grouped, and groups of tasks should be executed at once.\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIt may (still) be impossible to find a solution, since dependencies may be cyclic. But this may now also be due to the grouping of tasks. In any case, return an empty vector if no order is found.\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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThere are still multiple orders possible, return them as multiple rows of the output 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe tasks within a group should of course be specified in the right order, when interdependent.\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 dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency.\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[   A  B  C  D  E\\nA  0  0  0  0  0\\nB  0  0  0  0  0\\nC  0  1  0  0  0\\nD  0  1  1  0  0\\nE  1  0  0  0  0]]\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\u003eThe\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e on row\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, column\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, indicates that task\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e depends on task\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u0026gt; 0, e.g.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ [ 1 1 2 3 3 ]]]\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\u003eReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ [ \\n   1 2 3 4 5\\n   1 2 3 5 4\\n   2 1 3 4 5\\n   2 1 3 5 4\\n ]]]\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\u003eIf no order fulfilling the dependencies exists, return an empty vector.\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":2192,"title":"Order of things - 4","description":"*This is the last assignment in the _Order of Things_-series. If that past incompleteness kept you from solving it, you may start now.* Open that bottle of wine, and spend an entertaining evening coding.\r\n\r\nThis problem is closely related to \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2189-order-of-things-1 Problem 2189, Order of things - 1\u003e, \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2 Problem 2190, Order of things - 2\u003e, and \u003chttp://www.mathworks.nl/matlabcentral/cody/problems/2191-order-of-things-3 Problem 2191, Order of things - 3\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other. \r\n\r\nHowever, this is the most complex case, as \r\n* Calculations are preferably grouped, but may, due to their dependencies, not all be clustered. So groups of events may be split over different clusters. The number of clusters per group should be kept to a minimum. \r\n\r\nThe same complications as in problem 3 may apply:\r\n* It may (still) be impossible to find a solution, since dependencies may be cyclic. But this is now no longer due to the grouping of tasks, as you may, if necessary, break the rule of grouping. In any case, return an empty vector if no order is found.\r\n* There are still multiple orders possible, return them as multiple rows of the output vector.\r\n* The tasks within a group should of course be specified in the right order, when interdependent.\r\n\r\nThe dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency. \r\n\r\n   A  B  C  D  E\r\nA  0  0  0  0  0\r\nB  0  0  1  0  0\r\nC  1  0  0  0  0\r\nD  0  0  1  0  0\r\nE  1  0  0  0  0\r\n\r\nThe |1| on row |C|, column |B|, indicates that task |C| depends on task |B|. \r\n\r\nThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u003e 0, for every task, e.g. \r\n\r\n [ 1 1 2 2 3 ] \r\n\r\nReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\r\n\r\n [ \r\n   1 3 4 2 5\r\n   1 3 4 5 2\r\n   1 5 3 4 2\r\n ]\r\n\r\nIf no order fulfilling the dependencies exists, return an empty vector.","description_html":"\u003cp\u003e\u003cb\u003eThis is the last assignment in the \u003ci\u003eOrder of Things\u003c/i\u003e-series. If that past incompleteness kept you from solving it, you may start now.\u003c/b\u003e Open that bottle of wine, and spend an entertaining evening coding.\u003c/p\u003e\u003cp\u003eThis problem is closely related to \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2189-order-of-things-1\"\u003eProblem 2189, Order of things - 1\u003c/a\u003e, \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2\"\u003eProblem 2190, Order of things - 2\u003c/a\u003e, and \u003ca href = \"http://www.mathworks.nl/matlabcentral/cody/problems/2191-order-of-things-3\"\u003eProblem 2191, Order of things - 3\u003c/a\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other.\u003c/p\u003e\u003cp\u003eHowever, this is the most complex case, as \r\n* Calculations are preferably grouped, but may, due to their dependencies, not all be clustered. So groups of events may be split over different clusters. The number of clusters per group should be kept to a minimum.\u003c/p\u003e\u003cp\u003eThe same complications as in problem 3 may apply:\r\n* It may (still) be impossible to find a solution, since dependencies may be cyclic. But this is now no longer due to the grouping of tasks, as you may, if necessary, break the rule of grouping. In any case, return an empty vector if no order is found.\r\n* There are still multiple orders possible, return them as multiple rows of the output vector.\r\n* The tasks within a group should of course be specified in the right order, when interdependent.\u003c/p\u003e\u003cp\u003eThe dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency.\u003c/p\u003e\u003cpre\u003e   A  B  C  D  E\r\nA  0  0  0  0  0\r\nB  0  0  1  0  0\r\nC  1  0  0  0  0\r\nD  0  0  1  0  0\r\nE  1  0  0  0  0\u003c/pre\u003e\u003cp\u003eThe \u003ctt\u003e1\u003c/tt\u003e on row \u003ctt\u003eC\u003c/tt\u003e, column \u003ctt\u003eB\u003c/tt\u003e, indicates that task \u003ctt\u003eC\u003c/tt\u003e depends on task \u003ctt\u003eB\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u0026gt; 0, for every task, e.g.\u003c/p\u003e\u003cpre\u003e [ 1 1 2 2 3 ] \u003c/pre\u003e\u003cp\u003eReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\u003c/p\u003e\u003cpre\u003e [ \r\n   1 3 4 2 5\r\n   1 3 4 5 2\r\n   1 5 3 4 2\r\n ]\u003c/pre\u003e\u003cp\u003eIf no order fulfilling the dependencies exists, return an empty vector.\u003c/p\u003e","function_template":"function order = calculation_order(dependencies,groups)\r\n  order  = 1:size(dependencies,1);\r\nend","test_suite":"dependencies = [\r\n0  1  0  0  0\r\n0  0  0  0  0\r\n0  0  0  0  1\r\n0  0  0  0  1\r\n0  1  0  0  0\r\n];\r\ngroups = [ 3  1  2  1  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n3  2  5  4  1\r\n3  5  2  4  1\r\n5  4  2  3  1\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  1  0  0  0\r\n0  0  0  0  0\r\n0  0  0  1  0\r\n0  1  0  0  0\r\n0  0  0  1  0\r\n];\r\ngroups = [ 3  1  1  2  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n3  4  2  5  1\r\n3  4  5  2  1\r\n5  3  4  2  1\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  0  1  0  0\r\n0  0  0  1  0\r\n0  0  0  1  0\r\n0  0  0  0  0\r\n0  0  1  0  0\r\n];\r\ngroups = [ 1  3  2  1  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n2  1  4  5  3\r\n5  1  4  2  3\r\n4  1  3  2  5\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n    0 0 0 0 0\r\n    0 0 0 0 0\r\n    0 1 0 0 0\r\n    0 0 1 0 0\r\n    1 0 0 1 0\r\n    ];\r\ngroups = [1 2 2 2 2];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n    1 2 3 4 5\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  1  0\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n1  0  0  0  0\r\n0  0  0  0  0\r\n];\r\ngroups = [ 1  3  4  2  5 ];\r\norder = calculation_order(dependencies,groups);\r\nassert(isempty(order));\r\n\r\n%%\r\ndependencies = [\r\n0  0  0  0  0\r\n0  0  0  0  0\r\n0  0  0  1  0\r\n0  0  1  0  0\r\n0  0  0  0  0\r\n];\r\ngroups = [ 1  3  2  1  2 ];\r\norder = calculation_order(dependencies,groups);\r\norder_correct = [\r\n1  2  4  5  3\r\n1  2  3  5  4\r\n1  5  4  2  3\r\n1  5  3  2  4\r\n1  4  3  2  5\r\n1  3  4  2  5\r\n5  4  3  2  1\r\n5  3  4  2  1\r\n];\r\nassert(isequal(sortrows(order_correct),sortrows(order)));\r\n\r\n%%\r\ndependencies_ = ones(randi(10));\r\ndependencies_ = dependencies_-triu(dependencies_);\r\norder_ = randperm(size(dependencies_,1));\r\ndependencies = dependencies_(order_,order_);\r\norder_ = 0;\r\norder = calculation_order(dependencies,1:size(dependencies_,1));\r\nordered = dependencies(order,order);\r\nassert(~nnz(triu(ordered-diag(diag(ordered)))));\r\norder = calculation_order(dependencies,ones(1,size(dependencies_,1)));\r\nordered = dependencies(order,order);\r\nassert(~nnz(triu(ordered-diag(diag(ordered)))));\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":6556,"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":"2014-02-18T08:57:21.000Z","updated_at":"2014-03-04T07:49:56.000Z","published_at":"2014-03-04T07:49:56.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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eThis is the last assignment in the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOrder of Things\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e-series. If that past incompleteness kept you from solving it, you may start now.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Open that bottle of wine, and spend an entertaining evening coding.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is closely related to\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.nl/matlabcentral/cody/problems/2189-order-of-things-1\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2189, Order of things - 1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.nl/matlabcentral/cody/problems/2190-order-of-things-2\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2190, Order of things - 2\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.mathworks.nl/matlabcentral/cody/problems/2191-order-of-things-3\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 2191, Order of things - 3\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. For the details, see the description for those problems. Basically, we have to find the order in which to execute tasks of which the results and prerequisites depend on each other.\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\u003eHowever, this is the most complex case, as * Calculations are preferably grouped, but may, due to their dependencies, not all be clustered. So groups of events may be split over different clusters. The number of clusters per group should be kept to a minimum.\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 same complications as in problem 3 may apply: * It may (still) be impossible to find a solution, since dependencies may be cyclic. But this is now no longer due to the grouping of tasks, as you may, if necessary, break the rule of grouping. In any case, return an empty vector if no order is found. * There are still multiple orders possible, return them as multiple rows of the output vector. * The tasks within a group should of course be specified in the right order, when interdependent.\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 dependencies of the tasks on each other is expressed in a matrix, where each row corresponds to the execution of a task, and each column to the dependency.\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[   A  B  C  D  E\\nA  0  0  0  0  0\\nB  0  0  1  0  0\\nC  1  0  0  0  0\\nD  0  0  1  0  0\\nE  1  0  0  0  0]]\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\u003eThe\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e on row\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, column\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, indicates that task\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e depends on task\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe grouping of tasks is expressed as an input vector with groups assigned an integer value \u0026gt; 0, for every task, e.g.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ [ 1 1 2 2 3 ]]]\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\u003eReturn the new row/column order as a numeric row-vector, referring to the rows/columns of the input matrix. If multiple orders exist, return them all as rows of a matrix. In this example:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ [ \\n   1 3 4 2 5\\n   1 3 4 5 2\\n   1 5 3 4 2\\n ]]]\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\u003eIf no order fulfilling the dependencies exists, return an empty vector.\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\"}]}"}],"term":"tag:\"algorithms\"","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:\"algorithms\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"algorithms\"","","\"","algorithms","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007effc5d35e70\u003e":null,"#\u003cMathWorks::Search::Field:0x00007effc5d35dd0\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007effc5d35510\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007effc5d360f0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007effc5d36050\u003e":50,"#\u003cMathWorks::Search::Field:0x00007effc5d35fb0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007effc5d35f10\u003e":"tag:\"algorithms\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007effc5d35f10\u003e":"tag:\"algorithms\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"cody-search","password":"78X075ddcV44","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"algorithms\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"algorithms\"","","\"","algorithms","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007effc5d35e70\u003e":null,"#\u003cMathWorks::Search::Field:0x00007effc5d35dd0\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007effc5d35510\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007effc5d360f0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007effc5d36050\u003e":50,"#\u003cMathWorks::Search::Field:0x00007effc5d35fb0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007effc5d35f10\u003e":"tag:\"algorithms\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007effc5d35f10\u003e":"tag:\"algorithms\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":44675,"difficulty_rating":"easy-medium"},{"id":1509,"difficulty_rating":"easy-medium"},{"id":1032,"difficulty_rating":"medium"},{"id":886,"difficulty_rating":"hard"},{"id":2191,"difficulty_rating":"unrated"},{"id":2192,"difficulty_rating":"unrated"}]}}