{"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":1494,"title":"Hungry Snake","description":"Who hasn't played \u003chttp://en.wikipedia.org/wiki/Snake_%28video_game%29 the Snake game\u003e when they were little?   It's quite hard to finish this simple game; nonetheless \u003chttp://en.wikipedia.org/wiki/Chuck_Norris_facts Chuck Norris\u003e has accomplished the task in the most difficult level, naturally.  Now, since the game was _too easy_ for him, he did it with the highest number of turns possible.  We shall now inspect Chuck Norris' solution.\r\n\r\nSuppose you have a 2\u0026ordf;\u0026times;2\u0026ordf; matrix _M_ (with an integer _a_ \u0026ge; 0).  The path of the snake is denoted with consecutive numbers 1\u0026divide;4\u0026ordf;.  The matrix _M_ must obey the following conditions:\r\n\r\n# All the numbers between 1 to 4\u0026ordf; exist _once_ in a 2\u0026ordf;\u0026times;2\u0026ordf; matrix.\r\n# These numbers form a snake; i.e., each number _n_ must be adjacent to both _n_ -1 and _n_ +1 (with the obvious exception of 1 and 4\u0026ordf;).\r\n# There _cannot_ be more than 4 consecutive numbers in a row or a column.  \r\n\r\n*Hints*\r\n\r\n* Since Chuck Norris can draw an infinite fractal, you may want to check the \u003chttp://en.wikipedia.org/wiki/Hilbert_curve Hilbert Curve\u003e or other \u003chttp://en.wikipedia.org/wiki/Space-filling_curves Space-filling curves\u003e.\r\n\r\n*Examples*\r\n\r\n hungry_snake(0)\r\n ans = \r\n     1\r\n\r\n hungry_snake(1)\r\n ans = \r\n     1     2\r\n     4     3\r\n\r\n hungry_snake(2)\r\n ans = \r\n     1     4     5     6\r\n     2     3     8     7\r\n    15    14     9    10\r\n    16    13    12    11\r\n\r\n*Bad Solutions*\r\n\r\n* |a=1; eye(2^a)| \u0026mdash; doesn't have all the numbers 1 to 4.\r\n* |a=2; reshape(1:4^a,2^a,2^a)| \u0026mdash; 4 and 5 aren't adjacent.\r\n* |a=3; spiral(2^a)| \u0026mdash; has 8 consecutive numbers in a row.\r\n\r\nThe usual cheats *are not* allowed!\r\n","description_html":"\u003cp\u003eWho hasn't played \u003ca href = \"http://en.wikipedia.org/wiki/Snake_%28video_game%29\"\u003ethe Snake game\u003c/a\u003e when they were little?   It's quite hard to finish this simple game; nonetheless \u003ca href = \"http://en.wikipedia.org/wiki/Chuck_Norris_facts\"\u003eChuck Norris\u003c/a\u003e has accomplished the task in the most difficult level, naturally.  Now, since the game was \u003ci\u003etoo easy\u003c/i\u003e for him, he did it with the highest number of turns possible.  We shall now inspect Chuck Norris' solution.\u003c/p\u003e\u003cp\u003eSuppose you have a 2\u0026ordf;\u0026times;2\u0026ordf; matrix \u003ci\u003eM\u003c/i\u003e (with an integer \u003ci\u003ea\u003c/i\u003e \u0026ge; 0).  The path of the snake is denoted with consecutive numbers 1\u0026divide;4\u0026ordf;.  The matrix \u003ci\u003eM\u003c/i\u003e must obey the following conditions:\u003c/p\u003e\u003col\u003e\u003cli\u003eAll the numbers between 1 to 4\u0026ordf; exist \u003ci\u003eonce\u003c/i\u003e in a 2\u0026ordf;\u0026times;2\u0026ordf; matrix.\u003c/li\u003e\u003cli\u003eThese numbers form a snake; i.e., each number \u003ci\u003en\u003c/i\u003e must be adjacent to both \u003ci\u003en\u003c/i\u003e -1 and \u003ci\u003en\u003c/i\u003e +1 (with the obvious exception of 1 and 4\u0026ordf;).\u003c/li\u003e\u003cli\u003eThere \u003ci\u003ecannot\u003c/i\u003e be more than 4 consecutive numbers in a row or a column.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003e\u003cb\u003eHints\u003c/b\u003e\u003c/p\u003e\u003cul\u003e\u003cli\u003eSince Chuck Norris can draw an infinite fractal, you may want to check the \u003ca href = \"http://en.wikipedia.org/wiki/Hilbert_curve\"\u003eHilbert Curve\u003c/a\u003e or other \u003ca href = \"http://en.wikipedia.org/wiki/Space-filling_curves\"\u003eSpace-filling curves\u003c/a\u003e.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003cb\u003eExamples\u003c/b\u003e\u003c/p\u003e\u003cpre\u003e hungry_snake(0)\r\n ans = \r\n     1\u003c/pre\u003e\u003cpre\u003e hungry_snake(1)\r\n ans = \r\n     1     2\r\n     4     3\u003c/pre\u003e\u003cpre\u003e hungry_snake(2)\r\n ans = \r\n     1     4     5     6\r\n     2     3     8     7\r\n    15    14     9    10\r\n    16    13    12    11\u003c/pre\u003e\u003cp\u003e\u003cb\u003eBad Solutions\u003c/b\u003e\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ctt\u003ea=1; eye(2^a)\u003c/tt\u003e \u0026mdash; doesn't have all the numbers 1 to 4.\u003c/li\u003e\u003cli\u003e\u003ctt\u003ea=2; reshape(1:4^a,2^a,2^a)\u003c/tt\u003e \u0026mdash; 4 and 5 aren't adjacent.\u003c/li\u003e\u003cli\u003e\u003ctt\u003ea=3; spiral(2^a)\u003c/tt\u003e \u0026mdash; has 8 consecutive numbers in a row.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eThe usual cheats \u003cb\u003eare not\u003c/b\u003e allowed!\u003c/p\u003e","function_template":"function M = hungry_snake(a)\r\n  M = 1:4^a;\r\nend","test_suite":"%%\r\nuser_solution = fileread('hungry_snake.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'num2str')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'fprintf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nfprintf('Testing...\\n')\r\nfor a = 0:8,\r\n   % Get the matrix\r\n   M = hungry_snake(a);\r\n   %\r\n   % Check that all the numbers exist once in 2^a x 2^a matrix\r\n   assert(isequal(size(M),[2^a,2^a]),'Bad Size');\r\n   assert(isequal(1:numel(M),sort(M(:))'),'Not all numbers exist!');\r\n   %\r\n   % Find the locations of the numbers\r\n   [I,J] = arrayfun(@(x)find(M==x,1),1:numel(M));\r\n   %\r\n   % Check that the numbers form indeed a snake\r\n   assert(all((abs(diff(I))==1\u0026diff(J)==0) | (abs(diff(J))==1\u0026diff(I)==0)),'Not a Snake!');\r\n   %\r\n   % Check that there isn't a straight line longer than 4\r\n   msl = max(cellfun('length',regexp(sprintf('%d',[diff(I) NaN diff(J)]),'0+','match')));\r\n   if a\u003e0, assert( msl \u003c 4,'More than 4 consecutive numbers!'); end\r\n\r\n   fprintf('\\ta=%d : OK!\\n',a);\r\nend\r\n%\r\nfprintf('\\n.\\nChuck Norris would be proud!\\n')\r\n%\r\n%","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":"2013-05-08T14:05:30.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-05-08T13:00:50.000Z","updated_at":"2025-11-21T10:19:55.000Z","published_at":"2013-05-08T14:05:30.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\u003eWho hasn't played\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Snake_%28video_game%29\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ethe Snake game\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e when they were little? It's quite hard to finish this simple game; nonetheless\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Chuck_Norris_facts\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eChuck Norris\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e has accomplished the task in the most difficult level, naturally. Now, since the game was\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etoo easy\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e for him, he did it with the highest number of turns possible. We shall now inspect Chuck Norris' solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose you have a 2ª×2ª matrix\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eM\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (with an integer\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e ≥ 0). The path of the snake is denoted with consecutive numbers 1÷4ª. The matrix\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eM\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e must obey the following conditions:\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=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAll the numbers between 1 to 4ª exist\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eonce\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e in a 2ª×2ª matrix.\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=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThese numbers form a snake; i.e., each number\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e must be adjacent to both\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e -1 and\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e +1 (with the obvious exception of 1 and 4ª).\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=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThere\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ecannot\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e be more than 4 consecutive numbers in a row or a column.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHints\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\u003eSince Chuck Norris can draw an infinite fractal, you may want to check the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Hilbert_curve\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHilbert Curve\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e or other\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Space-filling_curves\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpace-filling curves\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExamples\u003c/w:t\u003e\u003c/w:r\u003e\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[ hungry_snake(0)\\n ans = \\n     1\\n\\n hungry_snake(1)\\n ans = \\n     1     2\\n     4     3\\n\\n hungry_snake(2)\\n ans = \\n     1     4     5     6\\n     2     3     8     7\\n    15    14     9    10\\n    16    13    12    11]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eBad Solutions\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:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=1; eye(2^a)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e — doesn't have all the numbers 1 to 4.\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:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=2; reshape(1:4^a,2^a,2^a)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e — 4 and 5 aren't adjacent.\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:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=3; spiral(2^a)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e — has 8 consecutive numbers in a row.\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 usual cheats\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:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eare not\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e allowed!\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":787,"title":"Path Optimization thru N words : Time Optimization","description":"This is an extension of\r\n\u003chttp://www.mathworks.com/matlabcentral/cody/problems/196-love-is-an-n-letter-word Cody 196 love\u003e with a more stressing test set and scoring based upon time.\r\n\r\nGreater than 10 words induces time issues with brute force combinatorics.\r\n\r\nDescription is copy of Alfonso Nieto-Castanon's problem statement for Cody 196.\r\n\r\nGiven a list of N words, return the N-letter word (choosing one letter from each word) with the property of having the least distance between each pair of two consecutive letters (if there are multiple optimal solutions return any one of them). Letters may repeat inside words.\r\n\r\nExample: s1 = {'abcd','bcde','cdef','defg'}; should return s2 = 'dddd'; (with total letter-distance = 0)\r\n\r\nExample: s1={'aldfejk','czoa','vwy','abcde'}; should return s2='love'; (with total letter-distance = 27: 'l'-'o'=3 + 'o'-'v'=7 + 'v'-'e'=17 ; compare for example to the possible word 'aave' which has a total letter-distance of 38)\r\n\r\n*Passing:* All problems correct and time \u003c 2 seconds\r\n\r\n*Output chart:* Time in milliseconds with a max of 100 ms.\r\n\r\nNote: Did consider logarithmic scale but keeping it simple for now.","description_html":"\u003cp\u003eThis is an extension of \u003ca href=\"http://www.mathworks.com/matlabcentral/cody/problems/196-love-is-an-n-letter-word\"\u003eCody 196 love\u003c/a\u003e with a more stressing test set and scoring based upon time.\u003c/p\u003e\u003cp\u003eGreater than 10 words induces time issues with brute force combinatorics.\u003c/p\u003e\u003cp\u003eDescription is copy of Alfonso Nieto-Castanon's problem statement for Cody 196.\u003c/p\u003e\u003cp\u003eGiven a list of N words, return the N-letter word (choosing one letter from each word) with the property of having the least distance between each pair of two consecutive letters (if there are multiple optimal solutions return any one of them). Letters may repeat inside words.\u003c/p\u003e\u003cp\u003eExample: s1 = {'abcd','bcde','cdef','defg'}; should return s2 = 'dddd'; (with total letter-distance = 0)\u003c/p\u003e\u003cp\u003eExample: s1={'aldfejk','czoa','vwy','abcde'}; should return s2='love'; (with total letter-distance = 27: 'l'-'o'=3 + 'o'-'v'=7 + 'v'-'e'=17 ; compare for example to the possible word 'aave' which has a total letter-distance of 38)\u003c/p\u003e\u003cp\u003e\u003cb\u003ePassing:\u003c/b\u003e All problems correct and time \u0026lt; 2 seconds\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput chart:\u003c/b\u003e Time in milliseconds with a max of 100 ms.\u003c/p\u003e\u003cp\u003eNote: Did consider logarithmic scale but keeping it simple for now.\u003c/p\u003e","function_template":"function y = min_path_cost(s1)\r\n  s2 = '';\r\nend","test_suite":"%%\r\nfeval(@assignin,'caller','score',100);\r\n%%\r\nformat short\r\nformat compact\r\nglobal net_time\r\ns1 = {'abcd','bcde','cdef','defg'};\r\n\r\ns2=min_path_cost(s1); % to get good time\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3;\r\n\r\nassert(isequal(s2,'dddd'))\r\n\r\nnet_time=dt\r\n%%\r\nglobal net_time\r\ntemp=net_time; % anti-cheat\r\ns1 = {'aldfejk','czoa','vwy','abcde'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'love'))\r\n\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\n% anti-cheat \r\ntemp=net_time;\r\n\r\ns1 = {'aldfejk','czoa','vwy','abcde'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\npause(0.2);\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'love'))\r\n\r\nif dt\u003c200\r\n net_time=2001 % cheat trap fail condition\r\nend\r\n%%\r\n% not part of the time trial\r\n% avoids look-up table hack - Castano\r\ns1 = cellfun(@(x)char('a'-1+randi(26,1,5)),cell(1,7),'uniformoutput',false);\r\nassert(all(any(bsxfun(@eq,min_path_cost(s1),cell2mat(cellfun(@(x)x',s1,'uniformoutput',false)))))\u0026all(sum(abs(diff(double(min_path_cost(s1)))))\u003c=sum(abs(diff(double(cell2mat(cellfun(@(x)x(randi(numel(x),1,1000))',s1,'uniformoutput',false))),1,2)),2)));\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'lqjfac','deamv','fkazbw','idlw','ajmf','abcwz','wxyz'}; %lmklmww\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'lmklmww'))\r\nnet_time=temp+dt\r\n\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'lwjac','demv','fkabw','idlw','pqmf','abcnq','fwxyz','mnop'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'cdfdfcfm')|isequal(s2,'cdbdfcfm'))\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'ldjac','demv','fkabw','idlw','pqmf','abcnq','fwxyz','mnop','flap'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'ddfdfcfml')|isequal(s2,'ddbdfcfml'))\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'the','goal','of','life','is','living','in','agreement','with','nature'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'hgfiiiighe')|isequal(s2,'hgffiiighe'))\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'he' 'has','all','the','virtues','idislike','andnone','ofthe','vicesi','admire'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'eaaeeeeeee'))\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\n\r\ns1 = {'history' 'will','be','kind','to','me','for','i','intend','to','write','it'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'iiekomoiiort')|isequal(s2,'iieiomoiiort'))\r\nnet_time=temp+dt\r\n\r\n%%\r\nglobal net_time\r\n% Time performance rqmt\r\nassert(net_time\u003c2000,sprintf('Net time = %s',num2str(net_time))); \r\n%%\r\nglobal net_time\r\n% net_time in ms\r\n% Create graph data\r\nnet_time=min(100,net_time) % Limit graph y-axis\r\n\r\nfeval(@assignin,'caller','score',floor(net_time));\r\n\r\n%fh=fopen('min_path_cost.m','wt');\r\n%fprintf(fh,'%s\\n',repmat('1;',[1,round(net_time/2)]));\r\n%fclose(fh);","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":8,"test_suite_updated_at":"2012-11-22T12:11:45.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-06-24T20:34:17.000Z","updated_at":"2012-11-22T12:11:45.000Z","published_at":"2012-06-25T00:03: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:t\u003eThis is an extension of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/196-love-is-an-n-letter-word\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCody 196 love\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with a more stressing test set and scoring based upon time.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGreater than 10 words induces time issues with brute force combinatorics.\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\u003eDescription is copy of Alfonso Nieto-Castanon's problem statement for Cody 196.\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\u003eGiven a list of N words, return the N-letter word (choosing one letter from each word) with the property of having the least distance between each pair of two consecutive letters (if there are multiple optimal solutions return any one of them). Letters may repeat inside words.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample: s1 = {'abcd','bcde','cdef','defg'}; should return s2 = 'dddd'; (with total letter-distance = 0)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample: s1={'aldfejk','czoa','vwy','abcde'}; should return s2='love'; (with total letter-distance = 27: 'l'-'o'=3 + 'o'-'v'=7 + 'v'-'e'=17 ; compare for example to the possible word 'aave' which has a total letter-distance of 38)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ePassing:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e All problems correct and time \u0026lt; 2 seconds\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput chart:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Time in milliseconds with a max of 100 ms.\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\u003eNote: Did consider logarithmic scale but keeping it simple for now.\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":1494,"title":"Hungry Snake","description":"Who hasn't played \u003chttp://en.wikipedia.org/wiki/Snake_%28video_game%29 the Snake game\u003e when they were little?   It's quite hard to finish this simple game; nonetheless \u003chttp://en.wikipedia.org/wiki/Chuck_Norris_facts Chuck Norris\u003e has accomplished the task in the most difficult level, naturally.  Now, since the game was _too easy_ for him, he did it with the highest number of turns possible.  We shall now inspect Chuck Norris' solution.\r\n\r\nSuppose you have a 2\u0026ordf;\u0026times;2\u0026ordf; matrix _M_ (with an integer _a_ \u0026ge; 0).  The path of the snake is denoted with consecutive numbers 1\u0026divide;4\u0026ordf;.  The matrix _M_ must obey the following conditions:\r\n\r\n# All the numbers between 1 to 4\u0026ordf; exist _once_ in a 2\u0026ordf;\u0026times;2\u0026ordf; matrix.\r\n# These numbers form a snake; i.e., each number _n_ must be adjacent to both _n_ -1 and _n_ +1 (with the obvious exception of 1 and 4\u0026ordf;).\r\n# There _cannot_ be more than 4 consecutive numbers in a row or a column.  \r\n\r\n*Hints*\r\n\r\n* Since Chuck Norris can draw an infinite fractal, you may want to check the \u003chttp://en.wikipedia.org/wiki/Hilbert_curve Hilbert Curve\u003e or other \u003chttp://en.wikipedia.org/wiki/Space-filling_curves Space-filling curves\u003e.\r\n\r\n*Examples*\r\n\r\n hungry_snake(0)\r\n ans = \r\n     1\r\n\r\n hungry_snake(1)\r\n ans = \r\n     1     2\r\n     4     3\r\n\r\n hungry_snake(2)\r\n ans = \r\n     1     4     5     6\r\n     2     3     8     7\r\n    15    14     9    10\r\n    16    13    12    11\r\n\r\n*Bad Solutions*\r\n\r\n* |a=1; eye(2^a)| \u0026mdash; doesn't have all the numbers 1 to 4.\r\n* |a=2; reshape(1:4^a,2^a,2^a)| \u0026mdash; 4 and 5 aren't adjacent.\r\n* |a=3; spiral(2^a)| \u0026mdash; has 8 consecutive numbers in a row.\r\n\r\nThe usual cheats *are not* allowed!\r\n","description_html":"\u003cp\u003eWho hasn't played \u003ca href = \"http://en.wikipedia.org/wiki/Snake_%28video_game%29\"\u003ethe Snake game\u003c/a\u003e when they were little?   It's quite hard to finish this simple game; nonetheless \u003ca href = \"http://en.wikipedia.org/wiki/Chuck_Norris_facts\"\u003eChuck Norris\u003c/a\u003e has accomplished the task in the most difficult level, naturally.  Now, since the game was \u003ci\u003etoo easy\u003c/i\u003e for him, he did it with the highest number of turns possible.  We shall now inspect Chuck Norris' solution.\u003c/p\u003e\u003cp\u003eSuppose you have a 2\u0026ordf;\u0026times;2\u0026ordf; matrix \u003ci\u003eM\u003c/i\u003e (with an integer \u003ci\u003ea\u003c/i\u003e \u0026ge; 0).  The path of the snake is denoted with consecutive numbers 1\u0026divide;4\u0026ordf;.  The matrix \u003ci\u003eM\u003c/i\u003e must obey the following conditions:\u003c/p\u003e\u003col\u003e\u003cli\u003eAll the numbers between 1 to 4\u0026ordf; exist \u003ci\u003eonce\u003c/i\u003e in a 2\u0026ordf;\u0026times;2\u0026ordf; matrix.\u003c/li\u003e\u003cli\u003eThese numbers form a snake; i.e., each number \u003ci\u003en\u003c/i\u003e must be adjacent to both \u003ci\u003en\u003c/i\u003e -1 and \u003ci\u003en\u003c/i\u003e +1 (with the obvious exception of 1 and 4\u0026ordf;).\u003c/li\u003e\u003cli\u003eThere \u003ci\u003ecannot\u003c/i\u003e be more than 4 consecutive numbers in a row or a column.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003e\u003cb\u003eHints\u003c/b\u003e\u003c/p\u003e\u003cul\u003e\u003cli\u003eSince Chuck Norris can draw an infinite fractal, you may want to check the \u003ca href = \"http://en.wikipedia.org/wiki/Hilbert_curve\"\u003eHilbert Curve\u003c/a\u003e or other \u003ca href = \"http://en.wikipedia.org/wiki/Space-filling_curves\"\u003eSpace-filling curves\u003c/a\u003e.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003cb\u003eExamples\u003c/b\u003e\u003c/p\u003e\u003cpre\u003e hungry_snake(0)\r\n ans = \r\n     1\u003c/pre\u003e\u003cpre\u003e hungry_snake(1)\r\n ans = \r\n     1     2\r\n     4     3\u003c/pre\u003e\u003cpre\u003e hungry_snake(2)\r\n ans = \r\n     1     4     5     6\r\n     2     3     8     7\r\n    15    14     9    10\r\n    16    13    12    11\u003c/pre\u003e\u003cp\u003e\u003cb\u003eBad Solutions\u003c/b\u003e\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ctt\u003ea=1; eye(2^a)\u003c/tt\u003e \u0026mdash; doesn't have all the numbers 1 to 4.\u003c/li\u003e\u003cli\u003e\u003ctt\u003ea=2; reshape(1:4^a,2^a,2^a)\u003c/tt\u003e \u0026mdash; 4 and 5 aren't adjacent.\u003c/li\u003e\u003cli\u003e\u003ctt\u003ea=3; spiral(2^a)\u003c/tt\u003e \u0026mdash; has 8 consecutive numbers in a row.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eThe usual cheats \u003cb\u003eare not\u003c/b\u003e allowed!\u003c/p\u003e","function_template":"function M = hungry_snake(a)\r\n  M = 1:4^a;\r\nend","test_suite":"%%\r\nuser_solution = fileread('hungry_snake.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'num2str')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'fprintf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nfprintf('Testing...\\n')\r\nfor a = 0:8,\r\n   % Get the matrix\r\n   M = hungry_snake(a);\r\n   %\r\n   % Check that all the numbers exist once in 2^a x 2^a matrix\r\n   assert(isequal(size(M),[2^a,2^a]),'Bad Size');\r\n   assert(isequal(1:numel(M),sort(M(:))'),'Not all numbers exist!');\r\n   %\r\n   % Find the locations of the numbers\r\n   [I,J] = arrayfun(@(x)find(M==x,1),1:numel(M));\r\n   %\r\n   % Check that the numbers form indeed a snake\r\n   assert(all((abs(diff(I))==1\u0026diff(J)==0) | (abs(diff(J))==1\u0026diff(I)==0)),'Not a Snake!');\r\n   %\r\n   % Check that there isn't a straight line longer than 4\r\n   msl = max(cellfun('length',regexp(sprintf('%d',[diff(I) NaN diff(J)]),'0+','match')));\r\n   if a\u003e0, assert( msl \u003c 4,'More than 4 consecutive numbers!'); end\r\n\r\n   fprintf('\\ta=%d : OK!\\n',a);\r\nend\r\n%\r\nfprintf('\\n.\\nChuck Norris would be proud!\\n')\r\n%\r\n%","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":"2013-05-08T14:05:30.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-05-08T13:00:50.000Z","updated_at":"2025-11-21T10:19:55.000Z","published_at":"2013-05-08T14:05:30.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\u003eWho hasn't played\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Snake_%28video_game%29\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ethe Snake game\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e when they were little? It's quite hard to finish this simple game; nonetheless\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Chuck_Norris_facts\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eChuck Norris\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e has accomplished the task in the most difficult level, naturally. Now, since the game was\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etoo easy\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e for him, he did it with the highest number of turns possible. We shall now inspect Chuck Norris' solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose you have a 2ª×2ª matrix\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eM\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (with an integer\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e ≥ 0). The path of the snake is denoted with consecutive numbers 1÷4ª. The matrix\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eM\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e must obey the following conditions:\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=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAll the numbers between 1 to 4ª exist\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eonce\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e in a 2ª×2ª matrix.\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=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThese numbers form a snake; i.e., each number\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e must be adjacent to both\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e -1 and\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e +1 (with the obvious exception of 1 and 4ª).\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=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThere\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ecannot\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e be more than 4 consecutive numbers in a row or a column.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHints\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\u003eSince Chuck Norris can draw an infinite fractal, you may want to check the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Hilbert_curve\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHilbert Curve\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e or other\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Space-filling_curves\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpace-filling curves\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExamples\u003c/w:t\u003e\u003c/w:r\u003e\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[ hungry_snake(0)\\n ans = \\n     1\\n\\n hungry_snake(1)\\n ans = \\n     1     2\\n     4     3\\n\\n hungry_snake(2)\\n ans = \\n     1     4     5     6\\n     2     3     8     7\\n    15    14     9    10\\n    16    13    12    11]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eBad Solutions\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:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=1; eye(2^a)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e — doesn't have all the numbers 1 to 4.\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:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=2; reshape(1:4^a,2^a,2^a)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e — 4 and 5 aren't adjacent.\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:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=3; spiral(2^a)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e — has 8 consecutive numbers in a row.\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 usual cheats\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:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eare not\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e allowed!\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":787,"title":"Path Optimization thru N words : Time Optimization","description":"This is an extension of\r\n\u003chttp://www.mathworks.com/matlabcentral/cody/problems/196-love-is-an-n-letter-word Cody 196 love\u003e with a more stressing test set and scoring based upon time.\r\n\r\nGreater than 10 words induces time issues with brute force combinatorics.\r\n\r\nDescription is copy of Alfonso Nieto-Castanon's problem statement for Cody 196.\r\n\r\nGiven a list of N words, return the N-letter word (choosing one letter from each word) with the property of having the least distance between each pair of two consecutive letters (if there are multiple optimal solutions return any one of them). Letters may repeat inside words.\r\n\r\nExample: s1 = {'abcd','bcde','cdef','defg'}; should return s2 = 'dddd'; (with total letter-distance = 0)\r\n\r\nExample: s1={'aldfejk','czoa','vwy','abcde'}; should return s2='love'; (with total letter-distance = 27: 'l'-'o'=3 + 'o'-'v'=7 + 'v'-'e'=17 ; compare for example to the possible word 'aave' which has a total letter-distance of 38)\r\n\r\n*Passing:* All problems correct and time \u003c 2 seconds\r\n\r\n*Output chart:* Time in milliseconds with a max of 100 ms.\r\n\r\nNote: Did consider logarithmic scale but keeping it simple for now.","description_html":"\u003cp\u003eThis is an extension of \u003ca href=\"http://www.mathworks.com/matlabcentral/cody/problems/196-love-is-an-n-letter-word\"\u003eCody 196 love\u003c/a\u003e with a more stressing test set and scoring based upon time.\u003c/p\u003e\u003cp\u003eGreater than 10 words induces time issues with brute force combinatorics.\u003c/p\u003e\u003cp\u003eDescription is copy of Alfonso Nieto-Castanon's problem statement for Cody 196.\u003c/p\u003e\u003cp\u003eGiven a list of N words, return the N-letter word (choosing one letter from each word) with the property of having the least distance between each pair of two consecutive letters (if there are multiple optimal solutions return any one of them). Letters may repeat inside words.\u003c/p\u003e\u003cp\u003eExample: s1 = {'abcd','bcde','cdef','defg'}; should return s2 = 'dddd'; (with total letter-distance = 0)\u003c/p\u003e\u003cp\u003eExample: s1={'aldfejk','czoa','vwy','abcde'}; should return s2='love'; (with total letter-distance = 27: 'l'-'o'=3 + 'o'-'v'=7 + 'v'-'e'=17 ; compare for example to the possible word 'aave' which has a total letter-distance of 38)\u003c/p\u003e\u003cp\u003e\u003cb\u003ePassing:\u003c/b\u003e All problems correct and time \u0026lt; 2 seconds\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput chart:\u003c/b\u003e Time in milliseconds with a max of 100 ms.\u003c/p\u003e\u003cp\u003eNote: Did consider logarithmic scale but keeping it simple for now.\u003c/p\u003e","function_template":"function y = min_path_cost(s1)\r\n  s2 = '';\r\nend","test_suite":"%%\r\nfeval(@assignin,'caller','score',100);\r\n%%\r\nformat short\r\nformat compact\r\nglobal net_time\r\ns1 = {'abcd','bcde','cdef','defg'};\r\n\r\ns2=min_path_cost(s1); % to get good time\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3;\r\n\r\nassert(isequal(s2,'dddd'))\r\n\r\nnet_time=dt\r\n%%\r\nglobal net_time\r\ntemp=net_time; % anti-cheat\r\ns1 = {'aldfejk','czoa','vwy','abcde'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'love'))\r\n\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\n% anti-cheat \r\ntemp=net_time;\r\n\r\ns1 = {'aldfejk','czoa','vwy','abcde'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\npause(0.2);\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'love'))\r\n\r\nif dt\u003c200\r\n net_time=2001 % cheat trap fail condition\r\nend\r\n%%\r\n% not part of the time trial\r\n% avoids look-up table hack - Castano\r\ns1 = cellfun(@(x)char('a'-1+randi(26,1,5)),cell(1,7),'uniformoutput',false);\r\nassert(all(any(bsxfun(@eq,min_path_cost(s1),cell2mat(cellfun(@(x)x',s1,'uniformoutput',false)))))\u0026all(sum(abs(diff(double(min_path_cost(s1)))))\u003c=sum(abs(diff(double(cell2mat(cellfun(@(x)x(randi(numel(x),1,1000))',s1,'uniformoutput',false))),1,2)),2)));\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'lqjfac','deamv','fkazbw','idlw','ajmf','abcwz','wxyz'}; %lmklmww\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'lmklmww'))\r\nnet_time=temp+dt\r\n\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'lwjac','demv','fkabw','idlw','pqmf','abcnq','fwxyz','mnop'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'cdfdfcfm')|isequal(s2,'cdbdfcfm'))\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'ldjac','demv','fkabw','idlw','pqmf','abcnq','fwxyz','mnop','flap'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'ddfdfcfml')|isequal(s2,'ddbdfcfml'))\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'the','goal','of','life','is','living','in','agreement','with','nature'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'hgfiiiighe')|isequal(s2,'hgffiiighe'))\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\ns1 = {'he' 'has','all','the','virtues','idislike','andnone','ofthe','vicesi','admire'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'eaaeeeeeee'))\r\nnet_time=temp+dt\r\n%%\r\nglobal net_time\r\ntemp=net_time;\r\n\r\ns1 = {'history' 'will','be','kind','to','me','for','i','intend','to','write','it'};\r\n\r\ns2=min_path_cost(s1);\r\nt0=clock;\r\ns2=min_path_cost(s1);\r\ndt=etime(clock,t0)*1e3\r\n\r\nassert(isequal(s2,'iiekomoiiort')|isequal(s2,'iieiomoiiort'))\r\nnet_time=temp+dt\r\n\r\n%%\r\nglobal net_time\r\n% Time performance rqmt\r\nassert(net_time\u003c2000,sprintf('Net time = %s',num2str(net_time))); \r\n%%\r\nglobal net_time\r\n% net_time in ms\r\n% Create graph data\r\nnet_time=min(100,net_time) % Limit graph y-axis\r\n\r\nfeval(@assignin,'caller','score',floor(net_time));\r\n\r\n%fh=fopen('min_path_cost.m','wt');\r\n%fprintf(fh,'%s\\n',repmat('1;',[1,round(net_time/2)]));\r\n%fclose(fh);","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":8,"test_suite_updated_at":"2012-11-22T12:11:45.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-06-24T20:34:17.000Z","updated_at":"2012-11-22T12:11:45.000Z","published_at":"2012-06-25T00:03: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:t\u003eThis is an extension of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/196-love-is-an-n-letter-word\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCody 196 love\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with a more stressing test set and scoring based upon time.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGreater than 10 words induces time issues with brute force combinatorics.\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\u003eDescription is copy of Alfonso Nieto-Castanon's problem statement for Cody 196.\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\u003eGiven a list of N words, return the N-letter word (choosing one letter from each word) with the property of having the least distance between each pair of two consecutive letters (if there are multiple optimal solutions return any one of them). Letters may repeat inside words.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample: s1 = {'abcd','bcde','cdef','defg'}; should return s2 = 'dddd'; (with total letter-distance = 0)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample: s1={'aldfejk','czoa','vwy','abcde'}; should return s2='love'; (with total letter-distance = 27: 'l'-'o'=3 + 'o'-'v'=7 + 'v'-'e'=17 ; compare for example to the possible word 'aave' which has a total letter-distance of 38)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ePassing:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e All problems correct and time \u0026lt; 2 seconds\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput chart:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Time in milliseconds with a max of 100 ms.\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\u003eNote: Did consider logarithmic scale but keeping it simple for now.\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:\"path optimization\"","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:\"path optimization\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"path optimization\"","","\"","path optimization","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f237040ae80\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f237040ad40\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f2370409f80\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f237040b380\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f237040b2e0\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f237040b240\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f237040b1a0\u003e":"tag:\"path optimization\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f237040b1a0\u003e":"tag:\"path optimization\""},"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:\"path optimization\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"path optimization\"","","\"","path optimization","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f237040ae80\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f237040ad40\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f2370409f80\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f237040b380\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f237040b2e0\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f237040b240\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f237040b1a0\u003e":"tag:\"path optimization\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f237040b1a0\u003e":"tag:\"path optimization\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":1494,"difficulty_rating":"medium"},{"id":787,"difficulty_rating":"unrated"}]}}