{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2026-05-06T00:09: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-05-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":2346,"title":"Tic Tac Toe Solver","description":"Create a function that checks n number of tic tac toe boards housed in a 3x3xn matrix where the x's are represented as 1's (and o's as 0's) to determine which player won (if either) and which direction the win lies. 1=win for x's, 0=win for o's, -1=tie. 1=horizontal, 2=vertical, 3=diagonal, 0=not applicable (used for a tie). For example, in the following board:\r\n\r\n 0 1 0\r\n 1 1 1\r\n 1 0 0\r\n\r\nthe 1's player won in a horizontal direction: [1 1].\r\n\r\nSee the test suite below for more examples. The solution will be an nx2 matrix with one row for each board.","description_html":"\u003cp\u003eCreate a function that checks n number of tic tac toe boards housed in a 3x3xn matrix where the x's are represented as 1's (and o's as 0's) to determine which player won (if either) and which direction the win lies. 1=win for x's, 0=win for o's, -1=tie. 1=horizontal, 2=vertical, 3=diagonal, 0=not applicable (used for a tie). For example, in the following board:\u003c/p\u003e\u003cpre\u003e 0 1 0\r\n 1 1 1\r\n 1 0 0\u003c/pre\u003e\u003cp\u003ethe 1's player won in a horizontal direction: [1 1].\u003c/p\u003e\u003cp\u003eSee the test suite below for more examples. The solution will be an nx2 matrix with one row for each board.\u003c/p\u003e","function_template":"function win_ans = ttt_checker(board)\r\n win_ans = [-1 0];\r\nend","test_suite":"%%\r\nboard = [1 0 0;\r\n\t 0 1 0;\r\n\t 1 0 1];\r\nwin_ans = [1 3];\r\nassert(isequal(ttt_checker(board),win_ans))\r\n\r\n%%\r\nboard = [1 0 1;\r\n\t 0 1 0;\r\n\t 0 1 0];\r\nwin_ans = [-1 0];\r\nassert(isequal(ttt_checker(board),win_ans))\r\n\r\n%%\r\nboard = zeros(3,3,2);\r\nwin_ans = zeros(2,2);\r\nboard(:,:,1) = [0 1 0;\r\n\t\t1 1 1;\r\n\t\t1 0 0];\r\nwin_ans(1,:) = [1 1];\r\n\r\nboard(:,:,2) = [0 0 0;\r\n\t\t1 1 0;\r\n\t\t0 1 1];\r\nwin_ans(2,:) = [0 1];\r\nassert(isequal(ttt_checker(board),win_ans))\r\n\r\n%%\r\nboard = zeros(3,3,4);\r\nwin_ans = zeros(4,2);\r\nboard(:,:,1) = [1 0 1;\r\n\t\t0 1 1;\r\n\t\t0 1 0];\r\nwin_ans(1,:) = [-1 0];\r\n\r\nboard(:,:,2) = [0 0 1;\r\n\t\t0 1 0;\r\n\t\t0 1 1];\r\nwin_ans(2,:) = [0 2];\r\n\r\nboard(:,:,3) = [1 1 1;\r\n\t\t1 0 0;\r\n\t\t0 1 0];\r\nwin_ans(3,:) = [1 1];\r\n\r\nboard(:,:,4) = [1 0 1;\r\n\t\t0 0 0;\r\n\t\t0 1 1];\r\nwin_ans(4,:) = [0 1];\r\nassert(isequal(ttt_checker(board),win_ans))\r\n\r\n%%\r\nboard = zeros(3,3,5);\r\nwin_ans = zeros(5,2);\r\nboard(:,:,1) = [1 1 0;\r\n\t\t0 0 1;\r\n\t\t0 1 0];\r\nwin_ans(1,:) = [0 3];\r\n\r\nboard(:,:,2) = [0 0 1;\r\n\t\t1 1 0;\r\n\t\t0 1 1];\r\nwin_ans(2,:) = [-1 0];\r\n\r\nboard(:,:,3) = [1 1 0;\r\n\t\t0 1 1;\r\n\t\t0 1 0];\r\nwin_ans(3,:) = [1 2];\r\n\r\nboard(:,:,4) = [1 0 1;\r\n\t\t1 0 0;\r\n\t\t0 0 1];\r\nwin_ans(4,:) = [0 2];\r\n\r\nboard(:,:,5) = [1 0 1;\r\n\t\t0 1 0;\r\n\t\t0 1 1];\r\nwin_ans(5,:) = [1 3];\r\nassert(isequal(ttt_checker(board),win_ans))","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":26769,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":31,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2014-06-04T14:21:06.000Z","updated_at":"2026-04-27T15:07:39.000Z","published_at":"2014-06-04T14:34:13.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\u003eCreate a function that checks n number of tic tac toe boards housed in a 3x3xn matrix where the x's are represented as 1's (and o's as 0's) to determine which player won (if either) and which direction the win lies. 1=win for x's, 0=win for o's, -1=tie. 1=horizontal, 2=vertical, 3=diagonal, 0=not applicable (used for a tie). For example, in the following board:\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[ 0 1 0\\n 1 1 1\\n 1 0 0]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ethe 1's player won in a horizontal direction: [1 1].\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSee the test suite below for more examples. The solution will be an nx2 matrix with one row for each board.\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":701,"title":"Play Tic-Tac-Toe: Easy Bots","description":"Interactive Tic-Tac-Toe game versus the test suite algorithms.\r\n\r\nThe contest will be 50 games of Computer first and 50 games of Player first.\r\n\r\nThe tic-tac-bots are not strong and are named Up, Down, and Random.\r\n\r\nInitial board is zeros(3).\r\nComputer moves are 1s and Player moves are 2s.\r\n\r\nPlayer output is an integer 1:9 to identify array position\r\n\r\n1 4 7\r\n\r\n2 5 8\r\n\r\n3 6 9\r\n\r\nExamples:\r\n\r\nInput: [1 0 0;0 0 0;0 0 0]  % Computer first case\r\n\r\nOutput: 5\r\n\r\nYields : [1 0 0; 0 2 0;0 0 0] with computer then picking position 2.\r\n\r\nSecond Input: [1 0 0;1 2 0;0 0 0] with computer's second move shown\r\n\r\n.\r\n\r\nPassing Score is 66 Wins out of 100 games.\r\n\r\nIt may be possible to score 100 Wins against the tic-tac-bots.\r\n\r\nYour Total Wins will be displayed.\r\n\r\nA follow-on problem will be 100 Tic-Tac-Toe Games: Never Lose Challenge\r\n\r\n","description_html":"\u003cp\u003eInteractive Tic-Tac-Toe game versus the test suite algorithms.\u003c/p\u003e\u003cp\u003eThe contest will be 50 games of Computer first and 50 games of Player first.\u003c/p\u003e\u003cp\u003eThe tic-tac-bots are not strong and are named Up, Down, and Random.\u003c/p\u003e\u003cp\u003eInitial board is zeros(3).\r\nComputer moves are 1s and Player moves are 2s.\u003c/p\u003e\u003cp\u003ePlayer output is an integer 1:9 to identify array position\u003c/p\u003e\u003cp\u003e1 4 7\u003c/p\u003e\u003cp\u003e2 5 8\u003c/p\u003e\u003cp\u003e3 6 9\u003c/p\u003e\u003cp\u003eExamples:\u003c/p\u003e\u003cp\u003eInput: [1 0 0;0 0 0;0 0 0]  % Computer first case\u003c/p\u003e\u003cp\u003eOutput: 5\u003c/p\u003e\u003cp\u003eYields : [1 0 0; 0 2 0;0 0 0] with computer then picking position 2.\u003c/p\u003e\u003cp\u003eSecond Input: [1 0 0;1 2 0;0 0 0] with computer's second move shown\u003c/p\u003e\u003cp\u003e.\u003c/p\u003e\u003cp\u003ePassing Score is 66 Wins out of 100 games.\u003c/p\u003e\u003cp\u003eIt may be possible to score 100 Wins against the tic-tac-bots.\u003c/p\u003e\u003cp\u003eYour Total Wins will be displayed.\u003c/p\u003e\u003cp\u003eA follow-on problem will be 100 Tic-Tac-Toe Games: Never Lose Challenge\u003c/p\u003e","function_template":"function p = tic_tac_toe(x)\r\n  p = 1;\r\nend","test_suite":"%%\r\n%Tic-Tac-Toe \r\n%Demonstration of Multi-Call with adaptive response\r\n\r\nwins=0;\r\nPass=0;\r\nfor i=1:50 % Computer First;  51-100 will be Player First\r\n x=zeros(3);\r\n while true % exit on win or filled board\r\n  if i\u003c16 % Up bot\r\n   p=find(x==0,1);\r\n  elseif i\u003c31 % Down bot\r\n   p=find(x==0,1,'last');\r\n  else % 31 thru 50 % random bot\r\n   found=0;\r\n   while ~found\r\n    p=floor(9*rand)+1;\r\n    if x(p)==0,break;end\r\n   end\r\n  end\r\n  % Implement Computer move and Check for Win\r\n  x(p)=1;\r\n  wt=x;\r\n  wt(wt==2)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==3);\r\n  if win,break;end % Computer Wins on its move\r\n  \r\n  % Draw check Post computer move (9th move)\r\n  if sum(x(:))\u003e=13,break;end\r\n  \r\n  % Implement player move and Check for Win\r\n  p=tic_tac_toe(x);\r\n  p=p(1);\r\n  if x(p)~=0,break;end % Invalid move - Game over\r\n  x(p)=2;\r\n  wt=x;\r\n  wt(wt==1)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==6);\r\n  if win\r\n   wins=wins+1;\r\n   break;\r\n  end % Player Wins on their move\r\n  \r\n  \r\n end % gameover while 1:50\r\nend % Games 1:50\r\n\r\n% Output wins against Computer first\r\nwins\r\n\r\nfor i=51:100 % Player First;  51-100 Player First\r\n x=zeros(3);\r\n while true % exit on win or filled board\r\n  % Implement player move and Check for Win\r\n  p=tic_tac_toe(x);\r\n  p=p(1);\r\n  if x(p)~=0,break;end % Invalid move - Game over\r\n  x(p)=2;\r\n  wt=x;\r\n  wt(wt==1)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==6);\r\n  if win\r\n   wins=wins+1;\r\n   break;\r\n  end % Player Wins on their move   \r\n  \r\n  % Draw check Post computer move (9th move)\r\n  if sum(x(:))\u003e=13,break;end\r\n     \r\n  if i\u003c66 % Up bot\r\n   p=find(x==0,1);\r\n  elseif i\u003c81 % Down bot\r\n   p=find(x==0,1,'last');\r\n  else % 31 thru 50 % random bot\r\n   found=0;\r\n   while ~found\r\n    p=floor(9*rand)+1;\r\n    if x(p)==0,break;end\r\n   end\r\n  end\r\n  % Implement Computer move and Check for Win\r\n  x(p)=1;\r\n  wt=x;\r\n  wt(wt==2)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==3);\r\n  if win,break;end % Computer Wins on its move\r\n   \r\n end % gameover while 51:100\r\nend % Games 51:100\r\n\r\nwins\r\n\r\nif wins\u003e65,Pass=1;end\r\nassert(isequal(Pass,1))","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":24,"test_suite_updated_at":"2012-06-03T19:49:30.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-05-19T15:10:18.000Z","updated_at":"2026-01-03T17:04:22.000Z","published_at":"2012-05-19T16:47:46.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInteractive Tic-Tac-Toe game versus the test suite algorithms.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe contest will be 50 games of Computer first and 50 games of Player first.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe tic-tac-bots are not strong and are named Up, Down, and Random.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInitial board is zeros(3). Computer moves are 1s and Player moves are 2s.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ePlayer output is an integer 1:9 to identify array position\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e1 4 7\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e2 5 8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e3 6 9\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExamples:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInput: [1 0 0;0 0 0;0 0 0] % Computer first case\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOutput: 5\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYields : [1 0 0; 0 2 0;0 0 0] with computer then picking position 2.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSecond Input: [1 0 0;1 2 0;0 0 0] with computer's second move shown\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ePassing Score is 66 Wins out of 100 games.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIt may be possible to score 100 Wins against the tic-tac-bots.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour Total Wins will be displayed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eA follow-on problem will be 100 Tic-Tac-Toe Games: Never Lose Challenge\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":58,"title":"Tic Tac Toe FTW","description":"Given a tic tac toe board:\r\n\r\n* 1 represents X\r\n* 0 represents empty.\r\n* -1 represents O\r\n \r\nIt is X's move. If there is an immediate win possibility, choose a square for an immediate win. Otherwise return 0.\r\n\r\nReturn absolute index of the square of choice. If multiple square are valid, return them in order.\r\n\r\nExample:\r\n\r\n Input  a = [ 1  0  1\r\n             -1  1  0\r\n              0 -1 -1]\r\n Output wins is [3 4]\r\n\r\n","description_html":"\u003cp\u003eGiven a tic tac toe board:\u003c/p\u003e\u003cul\u003e\u003cli\u003e1 represents X\u003c/li\u003e\u003cli\u003e0 represents empty.\u003c/li\u003e\u003cli\u003e-1 represents O\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eIt is X's move. If there is an immediate win possibility, choose a square for an immediate win. Otherwise return 0.\u003c/p\u003e\u003cp\u003eReturn absolute index of the square of choice. If multiple square are valid, return them in order.\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cpre\u003e Input  a = [ 1  0  1\r\n             -1  1  0\r\n              0 -1 -1]\r\n Output wins is [3 4]\u003c/pre\u003e","function_template":"function wins = ticTacToe(a)","test_suite":"%%\r\na = [ 1  0  1\r\n      0 -1  0\r\n     -1 -1  1];\r\n \r\nb = [4 8];\r\nout = ticTacToe(a);\r\nassert(isequal(out(:), b(:)))\r\n\r\n%%\r\na = [ 1  0  0\r\n      0 -1  0\r\n     -1  0  1];\r\n \r\nb = [0];\r\nout = ticTacToe(a);\r\nassert(isequal(out(:), b(:)))\r\n\r\n%%\r\n\r\na = [ 1  0  0\r\n      0  1 -1\r\n      1 -1 -1];\r\n \r\nb = [2 7];\r\nout = ticTacToe(a);\r\nassert(isequal(out(:), b(:)))\r\n\r\n%%\r\na = [ 1  0  0\r\n     -1  1 -1\r\n      1 -1  0];\r\n \r\nb = [7 9];\r\nout = ticTacToe(a);\r\nassert(isequal(out(:), b(:)))","published":true,"deleted":false,"likes_count":21,"comments_count":16,"created_by":1,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1843,"test_suite_updated_at":"2019-06-14T15:17:48.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-01-18T01:00:25.000Z","updated_at":"2026-05-02T19:13:30.000Z","published_at":"2012-01-18T01:00:25.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"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\u003eGiven a tic tac toe board:\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\u003e1 represents X\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\u003e0 represents empty.\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\u003e-1 represents O\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\u003eIt is X's move. If there is an immediate win possibility, choose a square for an immediate win. Otherwise return 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\u003eReturn absolute index of the square of choice. If multiple square are valid, return them in order.\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:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ Input  a = [ 1  0  1\\n             -1  1  0\\n              0 -1 -1]\\n Output wins is [3 4]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":702,"title":"Play Tic Tac Toe : No Losses Allowed","description":"Let's play a friendly game of Tic Tac Toe \r\n\r\nCreate an efficient algorithm to Never Lose.\r\n\r\nThe Player may be either the first or second to play.\r\n\r\nInitial board is zeros(3). Computer moves are 1s and Player moves are 2s.\r\n\r\nPlayer output is an integer 1:9 to identify array index position\r\n\r\n 1 4 7\r\n 2 5 8\r\n 3 6 9\r\n\r\nExample game play:\r\n\r\n Input:        [1 0 0; 0 0 0; 0 0 0]  % Computer playing first in this example\r\n Output:        5                     % Player return value\r\n Yields :      [1 0 0; 0 2 0; 0 0 0]  % Computer then picks position 2.\r\n Second Input: [1 0 0; 1 2 0; 0 0 0]  % Computer's second move shown.\r\n\r\nPassing score is never losing.\r\n\r\nThe contest engine is almost Random - about 4000 times. (\u003c12% of Time-Out)\r\n\r\nCreating the perfect tic-tac-toe engine seemed unnecessary.\r\n\r\nYour Wins/Losses/Draws will be shown.\r\n\r\nOn a loss the losing board will be shown\r\n\r\nFollow-up game will be WOPR:Global Thermonuclear War.","description_html":"\u003cp\u003eLet's play a friendly game of Tic Tac Toe\u003c/p\u003e\u003cp\u003eCreate an efficient algorithm to Never Lose.\u003c/p\u003e\u003cp\u003eThe Player may be either the first or second to play.\u003c/p\u003e\u003cp\u003eInitial board is zeros(3). Computer moves are 1s and Player moves are 2s.\u003c/p\u003e\u003cp\u003ePlayer output is an integer 1:9 to identify array index position\u003c/p\u003e\u003cpre\u003e 1 4 7\r\n 2 5 8\r\n 3 6 9\u003c/pre\u003e\u003cp\u003eExample game play:\u003c/p\u003e\u003cpre\u003e Input:        [1 0 0; 0 0 0; 0 0 0]  % Computer playing first in this example\r\n Output:        5                     % Player return value\r\n Yields :      [1 0 0; 0 2 0; 0 0 0]  % Computer then picks position 2.\r\n Second Input: [1 0 0; 1 2 0; 0 0 0]  % Computer's second move shown.\u003c/pre\u003e\u003cp\u003ePassing score is never losing.\u003c/p\u003e\u003cp\u003eThe contest engine is almost Random - about 4000 times. (\u0026lt;12% of Time-Out)\u003c/p\u003e\u003cp\u003eCreating the perfect tic-tac-toe engine seemed unnecessary.\u003c/p\u003e\u003cp\u003eYour Wins/Losses/Draws will be shown.\u003c/p\u003e\u003cp\u003eOn a loss the losing board will be shown\u003c/p\u003e\u003cp\u003eFollow-up game will be WOPR:Global Thermonuclear War.\u003c/p\u003e","function_template":"function p = tic_tac_toe(x)\r\n  p = 1;\r\nend","test_suite":"%%\r\n%Tic Tac Toe : Never Lose\r\ndraws=0;\r\nwins=0;\r\nPass=1;\r\nfor i=1:2000 % Computer First;  2001-4000 Player First\r\n if Pass==0,break;end\r\n x=zeros(3);\r\n while true % exit on win or filled board\r\n   found=0;\r\n   while ~found\r\n    p=floor(9*rand)+1;\r\n    if x(p)==0,break;end\r\n   end\r\n\r\n% Random unless Win presents itself\r\n  v0=find(x==0)';\r\n  t1=x;\r\n  t1(t1==2)=-2; % Player pips set to -2\r\n% Check for Win Option\r\n wc=find(sum(t1)==2); % column with a win\r\n if ~isempty(wc)\r\n  p=intersect((1:3)+3*(wc-1),v0);\r\n end\r\n wr=find(sum(t1,2)==2); % row with a win\r\n if ~isempty(wr)\r\n  p=intersect((1:3:7)+(wr-1),v0);\r\n end\r\n% Diagonal Win Options\r\nif x(5)==1\r\n if x(1)==1 \u0026\u0026 x(9)==0,p=9;end\r\n if x(9)==1 \u0026\u0026 x(1)==0,p=1;end\r\n if x(3)==1 \u0026\u0026 x(7)==0,p=7;end\r\n if x(7)==1 \u0026\u0026 x(3)==0,p=3;end\r\nend\r\n% end of Win check\r\n   \r\n   \r\n   \r\n  % Implement Computer move and Check for Win\r\n  x(p)=1;\r\n  wt=x;\r\n  wt(wt==2)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==3);\r\n  if win % Computer Wins on its move : Match Over\r\n   Pass=0;\r\n   x\r\n   break;\r\n  end \r\n  \r\n  % Draw check Post computer move (9th move)\r\n  if sum(x(:))\u003e=13,\r\n   draws=draws+1;\r\n   break;\r\n  end\r\n  \r\n  % Implement player move and Check for Win\r\n  p=tic_tac_toe(x);\r\n  if x(p(1))~=0,Pass=0;end % Invalid move - Game over\r\n  x(p(1))=2;\r\n  wt=x;\r\n  wt(wt==1)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==6);\r\n  if win\r\n   wins=wins+1;\r\n   break;\r\n  end % Player Wins on their move\r\n  \r\n  \r\n end % gameover while 1:2000\r\nend % Games 1:2000\r\n\r\n\r\nfor i=1:2000 % Player First;  2001-40000 Player First\r\n if Pass==0,break;end\r\n x=zeros(3);\r\n while true % exit on win or filled board\r\n  % Implement player move and Check for Win\r\n  p=tic_tac_toe(x);\r\n  if x(p(1))~=0,Pass=0;end % Invalid move - Game over\r\n  x(p(1))=2;\r\n  wt=x;\r\n  wt(wt==1)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==6);\r\n  if win\r\n   wins=wins+1;\r\n   break;\r\n  end % Player Wins on their move\r\n  \r\n  \r\n  % Draw check Post Player move (9th move)\r\n  if sum(x(:))\u003e=13,\r\n   draws=draws+1;\r\n   break;\r\n  end\r\n  \r\n  % Computer Move\r\n   found=0;\r\n   while ~found\r\n    p=floor(9*rand)+1;\r\n    if x(p)==0,break;end\r\n   end\r\n  \r\n% Random unless Win presents itself\r\n  v0=find(x==0)';\r\n  t1=x;\r\n  t1(t1==2)=-2; % Player pips set to -2\r\n% Check for Win Option\r\n wc=find(sum(t1)==2); % column with a win\r\n if ~isempty(wc)\r\n  p=intersect((1:3)+3*(wc-1),v0);\r\n end\r\n wr=find(sum(t1,2)==2); % row with a win\r\n if ~isempty(wr)\r\n  p=intersect((1:3:7)+(wr-1),v0);\r\n end\r\n% Diagonal Win Options\r\nif x(5)==1\r\n if x(1)==1 \u0026\u0026 x(9)==0,p=9;end\r\n if x(9)==1 \u0026\u0026 x(1)==0,p=1;end\r\n if x(3)==1 \u0026\u0026 x(7)==0,p=7;end\r\n if x(7)==1 \u0026\u0026 x(3)==0,p=3;end\r\nend\r\n% end of Win check\r\n   \r\n  % Implement Computer move and Check for Win\r\n  x(p)=1;\r\n  wt=x;\r\n  wt(wt==2)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==3);\r\n  if win % Computer Wins on its move : Match Over\r\n   Pass=0;\r\n   x\r\n   break;\r\n  end \r\n  \r\n  \r\n end % gameover while 1:2000\r\nend % Games 1:2000\r\nwins\r\ndraws\r\nPass\r\nassert(isequal(Pass,1))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":11,"test_suite_updated_at":"2012-05-23T04:19:50.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-05-19T23:49:07.000Z","updated_at":"2026-01-04T12:38:00.000Z","published_at":"2012-05-20T00:36:44.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\u003eLet's play a friendly game of Tic Tac Toe\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCreate an efficient algorithm to Never Lose.\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 Player may be either the first or second to play.\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\u003eInitial board is zeros(3). Computer moves are 1s and Player moves are 2s.\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\u003ePlayer output is an integer 1:9 to identify array index position\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ 1 4 7\\n 2 5 8\\n 3 6 9]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample game play:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ Input:        [1 0 0; 0 0 0; 0 0 0]  % Computer playing first in this example\\n Output:        5                     % Player return value\\n Yields :      [1 0 0; 0 2 0; 0 0 0]  % Computer then picks position 2.\\n Second Input: [1 0 0; 1 2 0; 0 0 0]  % Computer's second move shown.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ePassing score is never losing.\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 contest engine is almost Random - about 4000 times. (\u0026lt;12% of Time-Out)\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\u003eCreating the perfect tic-tac-toe engine seemed unnecessary.\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\u003eYour Wins/Losses/Draws will be shown.\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\u003eOn a loss the losing board will be shown\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\u003eFollow-up game will be WOPR:Global Thermonuclear War.\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":2346,"title":"Tic Tac Toe Solver","description":"Create a function that checks n number of tic tac toe boards housed in a 3x3xn matrix where the x's are represented as 1's (and o's as 0's) to determine which player won (if either) and which direction the win lies. 1=win for x's, 0=win for o's, -1=tie. 1=horizontal, 2=vertical, 3=diagonal, 0=not applicable (used for a tie). For example, in the following board:\r\n\r\n 0 1 0\r\n 1 1 1\r\n 1 0 0\r\n\r\nthe 1's player won in a horizontal direction: [1 1].\r\n\r\nSee the test suite below for more examples. The solution will be an nx2 matrix with one row for each board.","description_html":"\u003cp\u003eCreate a function that checks n number of tic tac toe boards housed in a 3x3xn matrix where the x's are represented as 1's (and o's as 0's) to determine which player won (if either) and which direction the win lies. 1=win for x's, 0=win for o's, -1=tie. 1=horizontal, 2=vertical, 3=diagonal, 0=not applicable (used for a tie). For example, in the following board:\u003c/p\u003e\u003cpre\u003e 0 1 0\r\n 1 1 1\r\n 1 0 0\u003c/pre\u003e\u003cp\u003ethe 1's player won in a horizontal direction: [1 1].\u003c/p\u003e\u003cp\u003eSee the test suite below for more examples. The solution will be an nx2 matrix with one row for each board.\u003c/p\u003e","function_template":"function win_ans = ttt_checker(board)\r\n win_ans = [-1 0];\r\nend","test_suite":"%%\r\nboard = [1 0 0;\r\n\t 0 1 0;\r\n\t 1 0 1];\r\nwin_ans = [1 3];\r\nassert(isequal(ttt_checker(board),win_ans))\r\n\r\n%%\r\nboard = [1 0 1;\r\n\t 0 1 0;\r\n\t 0 1 0];\r\nwin_ans = [-1 0];\r\nassert(isequal(ttt_checker(board),win_ans))\r\n\r\n%%\r\nboard = zeros(3,3,2);\r\nwin_ans = zeros(2,2);\r\nboard(:,:,1) = [0 1 0;\r\n\t\t1 1 1;\r\n\t\t1 0 0];\r\nwin_ans(1,:) = [1 1];\r\n\r\nboard(:,:,2) = [0 0 0;\r\n\t\t1 1 0;\r\n\t\t0 1 1];\r\nwin_ans(2,:) = [0 1];\r\nassert(isequal(ttt_checker(board),win_ans))\r\n\r\n%%\r\nboard = zeros(3,3,4);\r\nwin_ans = zeros(4,2);\r\nboard(:,:,1) = [1 0 1;\r\n\t\t0 1 1;\r\n\t\t0 1 0];\r\nwin_ans(1,:) = [-1 0];\r\n\r\nboard(:,:,2) = [0 0 1;\r\n\t\t0 1 0;\r\n\t\t0 1 1];\r\nwin_ans(2,:) = [0 2];\r\n\r\nboard(:,:,3) = [1 1 1;\r\n\t\t1 0 0;\r\n\t\t0 1 0];\r\nwin_ans(3,:) = [1 1];\r\n\r\nboard(:,:,4) = [1 0 1;\r\n\t\t0 0 0;\r\n\t\t0 1 1];\r\nwin_ans(4,:) = [0 1];\r\nassert(isequal(ttt_checker(board),win_ans))\r\n\r\n%%\r\nboard = zeros(3,3,5);\r\nwin_ans = zeros(5,2);\r\nboard(:,:,1) = [1 1 0;\r\n\t\t0 0 1;\r\n\t\t0 1 0];\r\nwin_ans(1,:) = [0 3];\r\n\r\nboard(:,:,2) = [0 0 1;\r\n\t\t1 1 0;\r\n\t\t0 1 1];\r\nwin_ans(2,:) = [-1 0];\r\n\r\nboard(:,:,3) = [1 1 0;\r\n\t\t0 1 1;\r\n\t\t0 1 0];\r\nwin_ans(3,:) = [1 2];\r\n\r\nboard(:,:,4) = [1 0 1;\r\n\t\t1 0 0;\r\n\t\t0 0 1];\r\nwin_ans(4,:) = [0 2];\r\n\r\nboard(:,:,5) = [1 0 1;\r\n\t\t0 1 0;\r\n\t\t0 1 1];\r\nwin_ans(5,:) = [1 3];\r\nassert(isequal(ttt_checker(board),win_ans))","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":26769,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":31,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2014-06-04T14:21:06.000Z","updated_at":"2026-04-27T15:07:39.000Z","published_at":"2014-06-04T14:34:13.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\u003eCreate a function that checks n number of tic tac toe boards housed in a 3x3xn matrix where the x's are represented as 1's (and o's as 0's) to determine which player won (if either) and which direction the win lies. 1=win for x's, 0=win for o's, -1=tie. 1=horizontal, 2=vertical, 3=diagonal, 0=not applicable (used for a tie). For example, in the following board:\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[ 0 1 0\\n 1 1 1\\n 1 0 0]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ethe 1's player won in a horizontal direction: [1 1].\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSee the test suite below for more examples. The solution will be an nx2 matrix with one row for each board.\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":701,"title":"Play Tic-Tac-Toe: Easy Bots","description":"Interactive Tic-Tac-Toe game versus the test suite algorithms.\r\n\r\nThe contest will be 50 games of Computer first and 50 games of Player first.\r\n\r\nThe tic-tac-bots are not strong and are named Up, Down, and Random.\r\n\r\nInitial board is zeros(3).\r\nComputer moves are 1s and Player moves are 2s.\r\n\r\nPlayer output is an integer 1:9 to identify array position\r\n\r\n1 4 7\r\n\r\n2 5 8\r\n\r\n3 6 9\r\n\r\nExamples:\r\n\r\nInput: [1 0 0;0 0 0;0 0 0]  % Computer first case\r\n\r\nOutput: 5\r\n\r\nYields : [1 0 0; 0 2 0;0 0 0] with computer then picking position 2.\r\n\r\nSecond Input: [1 0 0;1 2 0;0 0 0] with computer's second move shown\r\n\r\n.\r\n\r\nPassing Score is 66 Wins out of 100 games.\r\n\r\nIt may be possible to score 100 Wins against the tic-tac-bots.\r\n\r\nYour Total Wins will be displayed.\r\n\r\nA follow-on problem will be 100 Tic-Tac-Toe Games: Never Lose Challenge\r\n\r\n","description_html":"\u003cp\u003eInteractive Tic-Tac-Toe game versus the test suite algorithms.\u003c/p\u003e\u003cp\u003eThe contest will be 50 games of Computer first and 50 games of Player first.\u003c/p\u003e\u003cp\u003eThe tic-tac-bots are not strong and are named Up, Down, and Random.\u003c/p\u003e\u003cp\u003eInitial board is zeros(3).\r\nComputer moves are 1s and Player moves are 2s.\u003c/p\u003e\u003cp\u003ePlayer output is an integer 1:9 to identify array position\u003c/p\u003e\u003cp\u003e1 4 7\u003c/p\u003e\u003cp\u003e2 5 8\u003c/p\u003e\u003cp\u003e3 6 9\u003c/p\u003e\u003cp\u003eExamples:\u003c/p\u003e\u003cp\u003eInput: [1 0 0;0 0 0;0 0 0]  % Computer first case\u003c/p\u003e\u003cp\u003eOutput: 5\u003c/p\u003e\u003cp\u003eYields : [1 0 0; 0 2 0;0 0 0] with computer then picking position 2.\u003c/p\u003e\u003cp\u003eSecond Input: [1 0 0;1 2 0;0 0 0] with computer's second move shown\u003c/p\u003e\u003cp\u003e.\u003c/p\u003e\u003cp\u003ePassing Score is 66 Wins out of 100 games.\u003c/p\u003e\u003cp\u003eIt may be possible to score 100 Wins against the tic-tac-bots.\u003c/p\u003e\u003cp\u003eYour Total Wins will be displayed.\u003c/p\u003e\u003cp\u003eA follow-on problem will be 100 Tic-Tac-Toe Games: Never Lose Challenge\u003c/p\u003e","function_template":"function p = tic_tac_toe(x)\r\n  p = 1;\r\nend","test_suite":"%%\r\n%Tic-Tac-Toe \r\n%Demonstration of Multi-Call with adaptive response\r\n\r\nwins=0;\r\nPass=0;\r\nfor i=1:50 % Computer First;  51-100 will be Player First\r\n x=zeros(3);\r\n while true % exit on win or filled board\r\n  if i\u003c16 % Up bot\r\n   p=find(x==0,1);\r\n  elseif i\u003c31 % Down bot\r\n   p=find(x==0,1,'last');\r\n  else % 31 thru 50 % random bot\r\n   found=0;\r\n   while ~found\r\n    p=floor(9*rand)+1;\r\n    if x(p)==0,break;end\r\n   end\r\n  end\r\n  % Implement Computer move and Check for Win\r\n  x(p)=1;\r\n  wt=x;\r\n  wt(wt==2)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==3);\r\n  if win,break;end % Computer Wins on its move\r\n  \r\n  % Draw check Post computer move (9th move)\r\n  if sum(x(:))\u003e=13,break;end\r\n  \r\n  % Implement player move and Check for Win\r\n  p=tic_tac_toe(x);\r\n  p=p(1);\r\n  if x(p)~=0,break;end % Invalid move - Game over\r\n  x(p)=2;\r\n  wt=x;\r\n  wt(wt==1)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==6);\r\n  if win\r\n   wins=wins+1;\r\n   break;\r\n  end % Player Wins on their move\r\n  \r\n  \r\n end % gameover while 1:50\r\nend % Games 1:50\r\n\r\n% Output wins against Computer first\r\nwins\r\n\r\nfor i=51:100 % Player First;  51-100 Player First\r\n x=zeros(3);\r\n while true % exit on win or filled board\r\n  % Implement player move and Check for Win\r\n  p=tic_tac_toe(x);\r\n  p=p(1);\r\n  if x(p)~=0,break;end % Invalid move - Game over\r\n  x(p)=2;\r\n  wt=x;\r\n  wt(wt==1)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==6);\r\n  if win\r\n   wins=wins+1;\r\n   break;\r\n  end % Player Wins on their move   \r\n  \r\n  % Draw check Post computer move (9th move)\r\n  if sum(x(:))\u003e=13,break;end\r\n     \r\n  if i\u003c66 % Up bot\r\n   p=find(x==0,1);\r\n  elseif i\u003c81 % Down bot\r\n   p=find(x==0,1,'last');\r\n  else % 31 thru 50 % random bot\r\n   found=0;\r\n   while ~found\r\n    p=floor(9*rand)+1;\r\n    if x(p)==0,break;end\r\n   end\r\n  end\r\n  % Implement Computer move and Check for Win\r\n  x(p)=1;\r\n  wt=x;\r\n  wt(wt==2)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==3);\r\n  if win,break;end % Computer Wins on its move\r\n   \r\n end % gameover while 51:100\r\nend % Games 51:100\r\n\r\nwins\r\n\r\nif wins\u003e65,Pass=1;end\r\nassert(isequal(Pass,1))","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":24,"test_suite_updated_at":"2012-06-03T19:49:30.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-05-19T15:10:18.000Z","updated_at":"2026-01-03T17:04:22.000Z","published_at":"2012-05-19T16:47:46.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInteractive Tic-Tac-Toe game versus the test suite algorithms.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe contest will be 50 games of Computer first and 50 games of Player first.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe tic-tac-bots are not strong and are named Up, Down, and Random.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInitial board is zeros(3). Computer moves are 1s and Player moves are 2s.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ePlayer output is an integer 1:9 to identify array position\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e1 4 7\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e2 5 8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e3 6 9\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExamples:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInput: [1 0 0;0 0 0;0 0 0] % Computer first case\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOutput: 5\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYields : [1 0 0; 0 2 0;0 0 0] with computer then picking position 2.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSecond Input: [1 0 0;1 2 0;0 0 0] with computer's second move shown\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ePassing Score is 66 Wins out of 100 games.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIt may be possible to score 100 Wins against the tic-tac-bots.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour Total Wins will be displayed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eA follow-on problem will be 100 Tic-Tac-Toe Games: Never Lose Challenge\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":58,"title":"Tic Tac Toe FTW","description":"Given a tic tac toe board:\r\n\r\n* 1 represents X\r\n* 0 represents empty.\r\n* -1 represents O\r\n \r\nIt is X's move. If there is an immediate win possibility, choose a square for an immediate win. Otherwise return 0.\r\n\r\nReturn absolute index of the square of choice. If multiple square are valid, return them in order.\r\n\r\nExample:\r\n\r\n Input  a = [ 1  0  1\r\n             -1  1  0\r\n              0 -1 -1]\r\n Output wins is [3 4]\r\n\r\n","description_html":"\u003cp\u003eGiven a tic tac toe board:\u003c/p\u003e\u003cul\u003e\u003cli\u003e1 represents X\u003c/li\u003e\u003cli\u003e0 represents empty.\u003c/li\u003e\u003cli\u003e-1 represents O\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eIt is X's move. If there is an immediate win possibility, choose a square for an immediate win. Otherwise return 0.\u003c/p\u003e\u003cp\u003eReturn absolute index of the square of choice. If multiple square are valid, return them in order.\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cpre\u003e Input  a = [ 1  0  1\r\n             -1  1  0\r\n              0 -1 -1]\r\n Output wins is [3 4]\u003c/pre\u003e","function_template":"function wins = ticTacToe(a)","test_suite":"%%\r\na = [ 1  0  1\r\n      0 -1  0\r\n     -1 -1  1];\r\n \r\nb = [4 8];\r\nout = ticTacToe(a);\r\nassert(isequal(out(:), b(:)))\r\n\r\n%%\r\na = [ 1  0  0\r\n      0 -1  0\r\n     -1  0  1];\r\n \r\nb = [0];\r\nout = ticTacToe(a);\r\nassert(isequal(out(:), b(:)))\r\n\r\n%%\r\n\r\na = [ 1  0  0\r\n      0  1 -1\r\n      1 -1 -1];\r\n \r\nb = [2 7];\r\nout = ticTacToe(a);\r\nassert(isequal(out(:), b(:)))\r\n\r\n%%\r\na = [ 1  0  0\r\n     -1  1 -1\r\n      1 -1  0];\r\n \r\nb = [7 9];\r\nout = ticTacToe(a);\r\nassert(isequal(out(:), b(:)))","published":true,"deleted":false,"likes_count":21,"comments_count":16,"created_by":1,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1843,"test_suite_updated_at":"2019-06-14T15:17:48.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-01-18T01:00:25.000Z","updated_at":"2026-05-02T19:13:30.000Z","published_at":"2012-01-18T01:00:25.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"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\u003eGiven a tic tac toe board:\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\u003e1 represents X\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\u003e0 represents empty.\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\u003e-1 represents O\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\u003eIt is X's move. If there is an immediate win possibility, choose a square for an immediate win. Otherwise return 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\u003eReturn absolute index of the square of choice. If multiple square are valid, return them in order.\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:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ Input  a = [ 1  0  1\\n             -1  1  0\\n              0 -1 -1]\\n Output wins is [3 4]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":702,"title":"Play Tic Tac Toe : No Losses Allowed","description":"Let's play a friendly game of Tic Tac Toe \r\n\r\nCreate an efficient algorithm to Never Lose.\r\n\r\nThe Player may be either the first or second to play.\r\n\r\nInitial board is zeros(3). Computer moves are 1s and Player moves are 2s.\r\n\r\nPlayer output is an integer 1:9 to identify array index position\r\n\r\n 1 4 7\r\n 2 5 8\r\n 3 6 9\r\n\r\nExample game play:\r\n\r\n Input:        [1 0 0; 0 0 0; 0 0 0]  % Computer playing first in this example\r\n Output:        5                     % Player return value\r\n Yields :      [1 0 0; 0 2 0; 0 0 0]  % Computer then picks position 2.\r\n Second Input: [1 0 0; 1 2 0; 0 0 0]  % Computer's second move shown.\r\n\r\nPassing score is never losing.\r\n\r\nThe contest engine is almost Random - about 4000 times. (\u003c12% of Time-Out)\r\n\r\nCreating the perfect tic-tac-toe engine seemed unnecessary.\r\n\r\nYour Wins/Losses/Draws will be shown.\r\n\r\nOn a loss the losing board will be shown\r\n\r\nFollow-up game will be WOPR:Global Thermonuclear War.","description_html":"\u003cp\u003eLet's play a friendly game of Tic Tac Toe\u003c/p\u003e\u003cp\u003eCreate an efficient algorithm to Never Lose.\u003c/p\u003e\u003cp\u003eThe Player may be either the first or second to play.\u003c/p\u003e\u003cp\u003eInitial board is zeros(3). Computer moves are 1s and Player moves are 2s.\u003c/p\u003e\u003cp\u003ePlayer output is an integer 1:9 to identify array index position\u003c/p\u003e\u003cpre\u003e 1 4 7\r\n 2 5 8\r\n 3 6 9\u003c/pre\u003e\u003cp\u003eExample game play:\u003c/p\u003e\u003cpre\u003e Input:        [1 0 0; 0 0 0; 0 0 0]  % Computer playing first in this example\r\n Output:        5                     % Player return value\r\n Yields :      [1 0 0; 0 2 0; 0 0 0]  % Computer then picks position 2.\r\n Second Input: [1 0 0; 1 2 0; 0 0 0]  % Computer's second move shown.\u003c/pre\u003e\u003cp\u003ePassing score is never losing.\u003c/p\u003e\u003cp\u003eThe contest engine is almost Random - about 4000 times. (\u0026lt;12% of Time-Out)\u003c/p\u003e\u003cp\u003eCreating the perfect tic-tac-toe engine seemed unnecessary.\u003c/p\u003e\u003cp\u003eYour Wins/Losses/Draws will be shown.\u003c/p\u003e\u003cp\u003eOn a loss the losing board will be shown\u003c/p\u003e\u003cp\u003eFollow-up game will be WOPR:Global Thermonuclear War.\u003c/p\u003e","function_template":"function p = tic_tac_toe(x)\r\n  p = 1;\r\nend","test_suite":"%%\r\n%Tic Tac Toe : Never Lose\r\ndraws=0;\r\nwins=0;\r\nPass=1;\r\nfor i=1:2000 % Computer First;  2001-4000 Player First\r\n if Pass==0,break;end\r\n x=zeros(3);\r\n while true % exit on win or filled board\r\n   found=0;\r\n   while ~found\r\n    p=floor(9*rand)+1;\r\n    if x(p)==0,break;end\r\n   end\r\n\r\n% Random unless Win presents itself\r\n  v0=find(x==0)';\r\n  t1=x;\r\n  t1(t1==2)=-2; % Player pips set to -2\r\n% Check for Win Option\r\n wc=find(sum(t1)==2); % column with a win\r\n if ~isempty(wc)\r\n  p=intersect((1:3)+3*(wc-1),v0);\r\n end\r\n wr=find(sum(t1,2)==2); % row with a win\r\n if ~isempty(wr)\r\n  p=intersect((1:3:7)+(wr-1),v0);\r\n end\r\n% Diagonal Win Options\r\nif x(5)==1\r\n if x(1)==1 \u0026\u0026 x(9)==0,p=9;end\r\n if x(9)==1 \u0026\u0026 x(1)==0,p=1;end\r\n if x(3)==1 \u0026\u0026 x(7)==0,p=7;end\r\n if x(7)==1 \u0026\u0026 x(3)==0,p=3;end\r\nend\r\n% end of Win check\r\n   \r\n   \r\n   \r\n  % Implement Computer move and Check for Win\r\n  x(p)=1;\r\n  wt=x;\r\n  wt(wt==2)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==3);\r\n  if win % Computer Wins on its move : Match Over\r\n   Pass=0;\r\n   x\r\n   break;\r\n  end \r\n  \r\n  % Draw check Post computer move (9th move)\r\n  if sum(x(:))\u003e=13,\r\n   draws=draws+1;\r\n   break;\r\n  end\r\n  \r\n  % Implement player move and Check for Win\r\n  p=tic_tac_toe(x);\r\n  if x(p(1))~=0,Pass=0;end % Invalid move - Game over\r\n  x(p(1))=2;\r\n  wt=x;\r\n  wt(wt==1)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==6);\r\n  if win\r\n   wins=wins+1;\r\n   break;\r\n  end % Player Wins on their move\r\n  \r\n  \r\n end % gameover while 1:2000\r\nend % Games 1:2000\r\n\r\n\r\nfor i=1:2000 % Player First;  2001-40000 Player First\r\n if Pass==0,break;end\r\n x=zeros(3);\r\n while true % exit on win or filled board\r\n  % Implement player move and Check for Win\r\n  p=tic_tac_toe(x);\r\n  if x(p(1))~=0,Pass=0;end % Invalid move - Game over\r\n  x(p(1))=2;\r\n  wt=x;\r\n  wt(wt==1)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==6);\r\n  if win\r\n   wins=wins+1;\r\n   break;\r\n  end % Player Wins on their move\r\n  \r\n  \r\n  % Draw check Post Player move (9th move)\r\n  if sum(x(:))\u003e=13,\r\n   draws=draws+1;\r\n   break;\r\n  end\r\n  \r\n  % Computer Move\r\n   found=0;\r\n   while ~found\r\n    p=floor(9*rand)+1;\r\n    if x(p)==0,break;end\r\n   end\r\n  \r\n% Random unless Win presents itself\r\n  v0=find(x==0)';\r\n  t1=x;\r\n  t1(t1==2)=-2; % Player pips set to -2\r\n% Check for Win Option\r\n wc=find(sum(t1)==2); % column with a win\r\n if ~isempty(wc)\r\n  p=intersect((1:3)+3*(wc-1),v0);\r\n end\r\n wr=find(sum(t1,2)==2); % row with a win\r\n if ~isempty(wr)\r\n  p=intersect((1:3:7)+(wr-1),v0);\r\n end\r\n% Diagonal Win Options\r\nif x(5)==1\r\n if x(1)==1 \u0026\u0026 x(9)==0,p=9;end\r\n if x(9)==1 \u0026\u0026 x(1)==0,p=1;end\r\n if x(3)==1 \u0026\u0026 x(7)==0,p=7;end\r\n if x(7)==1 \u0026\u0026 x(3)==0,p=3;end\r\nend\r\n% end of Win check\r\n   \r\n  % Implement Computer move and Check for Win\r\n  x(p)=1;\r\n  wt=x;\r\n  wt(wt==2)=0;\r\n  win=any([sum(wt) sum(wt,2)' trace(wt) trace(fliplr(wt))]==3);\r\n  if win % Computer Wins on its move : Match Over\r\n   Pass=0;\r\n   x\r\n   break;\r\n  end \r\n  \r\n  \r\n end % gameover while 1:2000\r\nend % Games 1:2000\r\nwins\r\ndraws\r\nPass\r\nassert(isequal(Pass,1))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":11,"test_suite_updated_at":"2012-05-23T04:19:50.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-05-19T23:49:07.000Z","updated_at":"2026-01-04T12:38:00.000Z","published_at":"2012-05-20T00:36:44.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\u003eLet's play a friendly game of Tic Tac Toe\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCreate an efficient algorithm to Never Lose.\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 Player may be either the first or second to play.\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\u003eInitial board is zeros(3). Computer moves are 1s and Player moves are 2s.\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\u003ePlayer output is an integer 1:9 to identify array index position\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ 1 4 7\\n 2 5 8\\n 3 6 9]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample game play:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ Input:        [1 0 0; 0 0 0; 0 0 0]  % Computer playing first in this example\\n Output:        5                     % Player return value\\n Yields :      [1 0 0; 0 2 0; 0 0 0]  % Computer then picks position 2.\\n Second Input: [1 0 0; 1 2 0; 0 0 0]  % Computer's second move shown.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ePassing score is never losing.\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 contest engine is almost Random - about 4000 times. (\u0026lt;12% of Time-Out)\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\u003eCreating the perfect tic-tac-toe engine seemed unnecessary.\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\u003eYour Wins/Losses/Draws will be shown.\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\u003eOn a loss the losing board will be shown\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\u003eFollow-up game will be WOPR:Global Thermonuclear War.\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:\"tic tac toe\"","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:\"tic tac toe\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"tic tac toe\"","","\"","tic tac toe","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007fc6e64235d8\u003e":null,"#\u003cMathWorks::Search::Field:0x00007fc6e6423538\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007fc6e6422c78\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007fc6e6423858\u003e":1,"#\u003cMathWorks::Search::Field:0x00007fc6e64237b8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007fc6e6423718\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007fc6e6423678\u003e":"tag:\"tic tac toe\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007fc6e6423678\u003e":"tag:\"tic tac toe\""},"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:\"tic tac toe\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"tic tac toe\"","","\"","tic tac toe","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007fc6e64235d8\u003e":null,"#\u003cMathWorks::Search::Field:0x00007fc6e6423538\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007fc6e6422c78\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007fc6e6423858\u003e":1,"#\u003cMathWorks::Search::Field:0x00007fc6e64237b8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007fc6e6423718\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007fc6e6423678\u003e":"tag:\"tic tac toe\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007fc6e6423678\u003e":"tag:\"tic tac toe\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":2346,"difficulty_rating":"easy-medium"},{"id":701,"difficulty_rating":"easy-medium"},{"id":58,"difficulty_rating":"medium-hard"},{"id":702,"difficulty_rating":"hard"}]}}