{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2025-12-14T01:33:56.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2025-12-14T00:00:00.000Z","image_id":null,"published":true,"community_created":false,"status_id":2,"is_default_group_for_player":false,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"description_opc":null,"description_html":null,"published_at":null},"problems":[{"id":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\"}]}"}],"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\"}]}"}],"term":"tag:\"snake\"","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:\"snake\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"snake\"","","\"","snake","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f10518329e0\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f1051832940\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f105185eba8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f1051832e40\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f1051832da0\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f1051832d00\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f1051832c60\u003e":"tag:\"snake\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f1051832c60\u003e":"tag:\"snake\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"search","password":"J3bGPZzQ7asjJcCk","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"snake\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"snake\"","","\"","snake","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f10518329e0\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f1051832940\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f105185eba8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f1051832e40\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f1051832da0\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f1051832d00\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f1051832c60\u003e":"tag:\"snake\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f1051832c60\u003e":"tag:\"snake\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":1494,"difficulty_rating":"medium"}]}}