{"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":44238,"title":"Mastermind III: Solve in 1","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: A set of 25 cases will be provided that have optimal guesses and their scores. Solve the pattern in 1 guess.\r\n\r\nTheory: Elimination of excluded possible guesses will leave only one. Some solutions require only three total guesses so the input size will vary.\r\n\r\nFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: A set of 25 cases will be provided that have optimal guesses and their scores. Solve the pattern in 1 guess.\u003c/p\u003e\u003cp\u003eTheory: Elimination of excluded possible guesses will leave only one. Some solutions require only three total guesses so the input size will vary.\u003c/p\u003e\u003cp\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n% mguess and mpegs are kx4 and kx2 and will not be empty\r\n% The player gets only one guess\r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\nglobal m mpc mc mpc5c v\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  1 0\r\n3 6 5 6  2 1\r\n6 6 5 5  4 0]; % case 940\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  2 0\r\n3 6 3 6  0 1\r\n6 4 4 5  3 0\r\n6 5 4 5  4 0]; % case 900\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 0\r\n1 3 4 3  0 2\r\n4 4 1 5  3 0\r\n1 4 5 6  1 3\r\n6 4 1 5  4 0]; % case 850\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 2\r\n2 3 4 3  1 1\r\n2 1 3 5  0 3\r\n6 3 2 1  4 0]; % case 816\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 2\r\n2 3 4 3  1 1\r\n2 1 3 5  1 2\r\n2 4 5 1  0 2\r\n6 1 2 3  4 0]; % case 750\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 0\r\n1 3 4 3  0 1\r\n4 2 5 6  0 2\r\n6 5 1 5  1 1\r\n5 5 3 2  4 0]; % case 700\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  2 0\r\n3 6 3 6  0 1\r\n6 4 4 5  1 0\r\n5 3 5 5  4 0]; % case 650\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  2 0\r\n1 1 3 4  0 2\r\n3 2 1 5  2 2\r\n3 5 1 2  1 3\r\n5 2 1 3  4 0]; % case 600\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 1\r\n2 3 4 3  1 2\r\n4 3 2 5  2 1\r\n4 4 2 3  3 0\r\n4 6 2 3  4 0]; % case 550\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  1 3\r\n3 4 5 3  2 2\r\n4 3 5 3  4 0]; % case 500\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 1\r\n2 3 4 3  0 1\r\n4 1 5 6  2 1\r\n4 5 5 1  1 1\r\n4 1 6 4  4 0]; % case 450\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 0\r\n1 3 4 3  0 3\r\n1 4 4 5  0 2\r\n3 6 1 4  4 0]; % case 400\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 1\r\n1 3 1 4  1 3\r\n1 1 4 3  0 4\r\n3 4 1 1  4 0]; % case 350\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 2\r\n1 1 2 3  2 1\r\n1 4 1 5  0 1\r\n3 1 2 2  4 0]; % case 300\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 1\r\n2 3 4 3  2 0\r\n1 3 5 5  1 1\r\n2 6 5 3  1 1\r\n2 5 4 5  4 0]; % case 250\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 1\r\n1 3 1 4  1 0\r\n1 5 2 6  0 1\r\n2 2 4 4  1 1\r\n2 3 3 2  4 0]; % case 200\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 2\r\n1 1 2 3  1 2\r\n1 1 1 4  3 0\r\n2 1 1 4  4 0]; % case 150\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 0\r\n1 3 4 3  1 1\r\n3 2 5 3  0 2\r\n1 5 3 6  3 0\r\n1 5 3 5  4 0]; % case 100\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  2 1\r\n1 1 3 2  2 1\r\n4 1 1 5  0 1\r\n1 3 2 2  4 0]; % case 50\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  2 0\r\n1 1 3 4  2 1\r\n1 4 2 5  1 0\r\n1 1 1 3  4 0]; % case 1\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":15,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T19:30:49.000Z","updated_at":"2025-12-12T14:19:44.000Z","published_at":"2017-06-18T19:58:31.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge: A set of 25 cases will be provided that have optimal guesses and their scores. Solve the pattern in 1 guess.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTheory: Elimination of excluded possible guesses will leave only one. Some solutions require only three total guesses so the input size will vary.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44237,"title":"Mastermind II: Solve in 8 or less","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\r\n\r\nTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8.  The optimal minimal guess solution requires only 5 guesses.\r\n\r\nFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8.  The optimal minimal guess solution requires only 5 guesses.\u003c/p\u003e\u003cp\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n if isempty(mguess)\r\n  guess=[1 1 2 2]; % [1 1 1 1] is not a good first guess\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\nGmax=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved \u0026\u0026 Lmax\u003c9 % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n  mguess(end+1,:)=mguessn;\r\n  mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n  mpegs(end,2)=mc(ptr,mguessptr);\r\n  \r\n  Lsol=size(mguess,1);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n  if Lsol==8 % length of 8 and not solved\r\n   solved=0;\r\n   Gmax=0;\r\n   break;\r\n   end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\nif Gmax==0 % failed Guess max rqmt of 8\r\n fprintf('\\n Solution exceeded 8 guesses\\n');\r\n fprintf('Puzzle %i %i %i %i\\n',m(ptr,:));\r\n fprintf('Guessses and Responses\\n');\r\n fprintf('M%i %i %i %i   P%i %i\\n',[mguess mpegs]');\r\n fprintf('\\n');\r\nend\r\n\r\nif solved\r\n fprintf('Solved in %.2f sec\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f sec\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":15,"test_suite_updated_at":"2017-06-18T18:19:06.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T17:46:47.000Z","updated_at":"2025-12-12T14:09:25.000Z","published_at":"2017-06-18T18:16:28.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8. The optimal minimal guess solution requires only 5 guesses.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44248,"title":"Mastermind V: Optimal Solver - average number of guesses","description":"The following description contains a copy of Richard Zapor's \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses Mastermind IV: Optimal Solver - max of 5 guesses\u003e\r\n\r\n\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.  will be provided. \r\n\r\n*Scoring:* the average number of guesses of all 1296 cases.\r\n\r\n*See Also:*\r\n\r\n\u003chttps://www.mathworks.com/matlabcentral/cody/problems/44236-mastermind-i-solve-all-1296-cases Mastermind I: Solve all 1296 cases\u003e\r\n\r\n\u003chttps://www.mathworks.com/matlabcentral/cody/problems/44237-mastermind-ii-solve-in-8-or-less Mastermind II: Solve in 8 or less\u003e\r\n\r\n\u003chttps://www.mathworks.com/matlabcentral/cody/problems/44238-mastermind-iii-solve-in-1 Mastermind III: Solve in 1\u003e\r\n\r\n\u003chttps://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses Mastermind IV: Optimal Solver - max of 5 guesses\u003e\r\n","description_html":"\u003cp\u003eThe following description contains a copy of Richard Zapor's \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses\"\u003eMastermind IV: Optimal Solver - max of 5 guesses\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.  will be provided.\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring:\u003c/b\u003e the average number of guesses of all 1296 cases.\u003c/p\u003e\u003cp\u003e\u003cb\u003eSee Also:\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44236-mastermind-i-solve-all-1296-cases\"\u003eMastermind I: Solve all 1296 cases\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44237-mastermind-ii-solve-in-8-or-less\"\u003eMastermind II: Solve in 8 or less\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44238-mastermind-iii-solve-in-1\"\u003eMastermind III: Solve in 1\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses\"\u003eMastermind IV: Optimal Solver - max of 5 guesses\u003c/a\u003e\u003c/p\u003e","function_template":"function guess = solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n  \r\nend","test_suite":"assessFunctionAbsence({'regexp','regexpi','regexprep','str2num','!','system','unix','persistent'},'File','solve_mastermind.m')\r\n\r\n%%\r\nv = 10 * (1:6) + (1:6)';\r\nv = 10 * v(:)' + (1:6)';\r\nv = reshape(10*v(:)' + (1:6)', [], 1);\r\nm = dec2base(v, 10) - 48;\r\nmpc = sum(permute(m, [1 3 2]) == permute(m, [3 1 2]), 3);\r\nmc = histc(m, 1:6, 2);\r\nmc = sum(min(permute(mc, [1 3 2]), permute(mc, [3 1 2])), 3) - mpc;\r\nmpc5c = 5 * mpc + mc;\r\nL = zeros(1296, 1);\r\nP = [1:1296 randi(1296, 1, 6000)];\r\nt = accumarray(P', 1);\r\nfor p = P(randperm(end))\r\n  mguess = []; mpegs = [];\r\n  while 1\r\n    mguessn = solve_mastermind(mguess, mpegs, m, mpc, mc, mpc5c, v);\r\n    k = v == polyval(mguessn, 10);\r\n    assert(any(k), 'invalid guess.')\r\n    mguess(end+1, :) = mguessn;\r\n    mpegs(end+1, :) = [mpc(p, k) mc(p, k)];\r\n    if mpegs(end, 1) == 4, L(p) = L(p) + size(mguess, 1); break, end\r\n  end\r\nend\r\nL = sum(L ./ t);\r\nfid = fopen('score.p', 'Wb');\r\nfwrite(fid, uint8(sscanf([...\r\n  '7630312E30307630302E3030000D201C07E23FB1000000340000015B000001C36FCD46'...\r\n  '4336A6F9BD2918A670F86BF0AC534F616971CE31A66833ECF344BF30BF9F163C19F925'...\r\n  '0AC8280807727BFFC8E8FF46AA63FA75C2890672D48C5599920C846EB7E0E230FDC14E'...\r\n  '1EA1768A5F84951A22717883064D6B9AD895493F53F6443E63783C5BFDD36A65EE33DB'...\r\n  'DF0C38A4238848AF99B21B91FC5F8E0E31A8D33533721B36C2AB371D7B4D59A1036FBF'...\r\n  'E2A4A0233812C46AA22FE134B0DE0FCFDCDCD4A49106161DDD64A97EC0B1F14A8E1FB4'...\r\n  '81CE94D11A50006D5AA9536055488421EC1682EF9945B98FB175A9CE96624DE8C575C2'...\r\n  'B442A7EAD282A0A90E89D3F25C7B22AF0D1FA61A2F76ED95E8C6EF78A197B13C3B570E'...\r\n  'D2F8EA301AAA8795CB4B2DEF21140589C0FC80A0B75F896CCEB1B560C07273FC4BCBD5'...\r\n  '5D98ED8516915D9A344A91D913E1E106F8CB3C87EBDBB7C0501AE307F5B1807555F8D2'...\r\n  '65EE53842038231C5E6C0BFDC5EB1A33CA999C68E612C9DC17050B9606'], '%2X')));\r\nfclose(fid);\r\nfprintf('Average number of guesses: %.2f', L / 1296)\r\nscore(floor((L / 1296 - 4) * 100))\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":14,"created_by":1434,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":13,"test_suite_updated_at":"2017-07-04T07:08:13.000Z","rescore_all_solutions":true,"group_id":1,"created_at":"2017-07-02T23:16:44.000Z","updated_at":"2025-12-12T16:02:19.000Z","published_at":"2017-07-02T23:16: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\u003eThe following description contains a copy of Richard Zapor's\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind IV: Optimal Solver - max of 5 guesses\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666. will be provided.\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\u003eScoring:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e the average number of guesses of all 1296 cases.\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\u003eSee Also:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44236-mastermind-i-solve-all-1296-cases\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind I: Solve all 1296 cases\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44237-mastermind-ii-solve-in-8-or-less\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind II: Solve in 8 or less\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44238-mastermind-iii-solve-in-1\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind III: Solve in 1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind IV: Optimal Solver - max of 5 guesses\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44236,"title":"Mastermind I: Solve all 1296 cases","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\r\n\r\nTheory: Brute force can work but masking is much more efficient.  The optimal minimal guess solution requires only 5 guesses.\r\n\r\nFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: Brute force can work but masking is much more efficient.  The optimal minimal guess solution requires only 5 guesses.\u003c/p\u003e\u003cp\u003eFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n if isempty(mguess)\r\n  guess=[1 1 1 1];\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n   mguess(end+1,:)=mguessn;\r\n   mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n   mpegs(end,2)=mc(ptr,mguessptr);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Lsol=size(mguess,1);\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\n\r\nif solved\r\n fprintf('Solved in %.2f\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n","published":true,"deleted":false,"likes_count":3,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":21,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T14:17:00.000Z","updated_at":"2025-12-12T14:05:24.000Z","published_at":"2017-06-18T15:51:46.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTheory: Brute force can work but masking is much more efficient. The optimal minimal guess solution requires only 5 guesses.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":43562,"title":"Mastermind","description":"We are playing the boardgame mastermind \u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game)\u003e. The game master has created a 4-character code for you to guess, with characters ranging from \"1\" to \"6\" (e.g. code = [2 1 3 4]).\r\n\r\nThe first guess (this will be [1 1 2 2]) is already done and the game master has given you following feedback:\r\n\r\n# The number of correct characters in your guess, in this case 1 because character \"1\" at index 2 is correct.\r\n# The number of correct characters, but in a wrong place. In this case 1 because you guessed character \"2\", but it is in the wrong place.\r\n\r\nNow, your function has to do the next guesses. Each time your function is called, the input will contain the code and feedback of all your previous guesses, the output is a copy of the input with your new code added (refer to the example code).\r\n\r\nIt is shown you could solve the code in only 4 additional guesses (refer to the wiki page), you will however get 11 according to the rules of Mastermind.\r\n\r\nGood luck!","description_html":"\u003cp\u003eWe are playing the boardgame mastermind \u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003ehttps://en.wikipedia.org/wiki/Mastermind_(board_game)\u003c/a\u003e. The game master has created a 4-character code for you to guess, with characters ranging from \"1\" to \"6\" (e.g. code = [2 1 3 4]).\u003c/p\u003e\u003cp\u003eThe first guess (this will be [1 1 2 2]) is already done and the game master has given you following feedback:\u003c/p\u003e\u003col\u003e\u003cli\u003eThe number of correct characters in your guess, in this case 1 because character \"1\" at index 2 is correct.\u003c/li\u003e\u003cli\u003eThe number of correct characters, but in a wrong place. In this case 1 because you guessed character \"2\", but it is in the wrong place.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eNow, your function has to do the next guesses. Each time your function is called, the input will contain the code and feedback of all your previous guesses, the output is a copy of the input with your new code added (refer to the example code).\u003c/p\u003e\u003cp\u003eIt is shown you could solve the code in only 4 additional guesses (refer to the wiki page), you will however get 11 according to the rules of Mastermind.\u003c/p\u003e\u003cp\u003eGood luck!\u003c/p\u003e","function_template":"function output = mastermind(input)\r\n    %% unpack the input (as example, alter if you like)\r\n    i = length(input);            % number of attempts so far\r\n    previousCode = input(i).code; % the last code you tried (at index i-1 you will find the code before that, etc.)\r\n    rightNumWrongPlace = input(i).rightNumWrongPlace; % the number of right numbers in previous attemp, but which were at the wrong place\r\n    rightNumRightPlace = input(i).rightNumRightPlace; % the number of right numbers in previous attemp at the wright position\r\n    % The user data from previous run (optional):\r\n    % Please use \"if isfield(...\", because your first call the user data\r\n    % will be empty\r\n    if isfield(input(i).userdata,'var2')\r\n        var2 = input(i).userdata.var2;\r\n    end\r\n    \r\n    %% now, based on previous attempts create your next code\r\n    yourCode = [1 1 1 1];\r\n    \r\n    %% alter if you like\r\n    % you can use the field userdata to save variables needed in your next run (optional)\r\n    data.var1 = 1;\r\n    data.var2 = 'lala';\r\n    new.userdata = data; \r\n    \r\n    %% do not alter\r\n    output = input;\r\n    new.code = yourCode;            % your next try\r\n    new.rightNumWrongPlace = [];    % the gamemaster will fill in this field at evaluation for the next attempt\r\n    new.rightNumRightPlace = [];   % the gamemaster will fill in this field at evaluation for the next attempt\r\n    if ~isfield(new,'userdata') % ensure no errors when userdata is not used\r\n        new.userdata = [];\r\n    end\r\n    output(end+1) = new;\r\nend","test_suite":"%%\r\ncode = randi(6,1,4); % the real code to crack\r\n% attempt 1\r\nattempts = [];\r\nattempts(1).code = [1 1 2 2]; % the first attempt\r\n% eval\r\nattempts(1).rightNumRightPlace = sum(code==attempts(1).code);\r\nattempts(1).rightNumWrongPlace = sum(sum(repmat(code',1,4)==repmat(attempts(1).code,4,1),2)\u003e0)-attempts(1).rightNumRightPlace;\r\nattempts(1).userdata = [];\r\n% init\r\nsolved = false;\r\nwhile (length(attempts)\u003c11 \u0026\u0026 ~solved)\r\n    attempts = mastermind(attempts);\r\n    % eval\r\n    attempts(end).rightNumRightPlace = sum(code==attempts(end).code);\r\n    attempts(end).rightNumWrongPlace = sum(sum(repmat(code',1,4)==repmat(attempts(end).code,4,1),2)\u003e0)-attempts(end).rightNumRightPlace;\r\n    if attempts(end).rightNumRightPlace==4\r\n        solved = true;\r\n    end\r\nend\r\nassert(solved)","published":true,"deleted":false,"likes_count":3,"comments_count":2,"created_by":94929,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":15,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-16T09:19:14.000Z","updated_at":"2025-12-12T14:00:01.000Z","published_at":"2016-10-16T09:19:14.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\u003eWe are playing the boardgame mastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026lt;https://en.wikipedia.org/wiki/Mastermind_(board_game\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e)\u0026gt;. The game master has created a 4-character code for you to guess, with characters ranging from \\\"1\\\" to \\\"6\\\" (e.g. code = [2 1 3 4]).\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 first guess (this will be [1 1 2 2]) is already done and the game master has given you following feedback:\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\u003eThe number of correct characters in your guess, in this case 1 because character \\\"1\\\" at index 2 is correct.\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\u003eThe number of correct characters, but in a wrong place. In this case 1 because you guessed character \\\"2\\\", but it is in the wrong place.\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\u003eNow, your function has to do the next guesses. Each time your function is called, the input will contain the code and feedback of all your previous guesses, the output is a copy of the input with your new code added (refer to the example code).\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 shown you could solve the code in only 4 additional guesses (refer to the wiki page), you will however get 11 according to the rules of Mastermind.\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\u003eGood luck!\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":44239,"title":"Mastermind IV: Optimal Solver - max of 5 guesses","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 5 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\r\n\r\nTheory: The optimal minimal guess solution requires only 5 guesses. The \u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e link contains a description of the Knuth Five-guess algorithm. My description of this process with Matlab in mind is: Select the guess that will create the fewest remaining possible solutions for the worst case guess. All guesses are evaluated for the viable remaining possible solutions. Use Matlab array ability to mask the mpc5c variable by remaining cases. The hist function is too slow so create a hist array of states [0:8 10... 20] for all guesses [21,1296]. Sorting of the hist array is used to find a min solution group. Select the first guess with the lowest remaining solutions maximum. A guess that is not a remaining solution is only used if it has the lowest remaining solutions maximum. A later guess is possible if the first size is tied and its second size is less than the second of the earlier guess.\r\n\r\nMastermind challenges: [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 5 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: The optimal minimal guess solution requires only 5 guesses. The \u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e link contains a description of the Knuth Five-guess algorithm. My description of this process with Matlab in mind is: Select the guess that will create the fewest remaining possible solutions for the worst case guess. All guesses are evaluated for the viable remaining possible solutions. Use Matlab array ability to mask the mpc5c variable by remaining cases. The hist function is too slow so create a hist array of states [0:8 10... 20] for all guesses [21,1296]. Sorting of the hist array is used to find a min solution group. Select the first guess with the lowest remaining solutions maximum. A guess that is not a remaining solution is only used if it has the lowest remaining solutions maximum. A later guess is possible if the first size is tied and its second size is less than the second of the earlier guess.\u003c/p\u003e\u003cp\u003eMastermind challenges: [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n% mguessn 1x4\r\n% mguess kx4\r\n% mpegs kx2  Location\u0026Color, Colors_Not_in location\r\n\r\n if isempty(mguess)\r\n  guess=[1 1 2 2]; % [1 1 1 1] is not a good first guess\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\nGmax=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n  mguess(end+1,:)=mguessn;\r\n  mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n  mpegs(end,2)=mc(ptr,mguessptr);\r\n  \r\n  Lsol=size(mguess,1);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n  if Lsol==5 % length of 5 and not solved\r\n   solved=0;\r\n   Gmax=0;\r\n   break;\r\n   end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\nif Gmax==0 % failed Guess max rqmt of 5\r\n fprintf('\\n Solution exceeded 5 guesses\\n');\r\n fprintf('Puzzle %i %i %i %i\\n',m(ptr,:));\r\n fprintf('Guessses and Responses\\n');\r\n fprintf('M%i %i %i %i   P%i %i\\n',[mguess mpegs]');\r\n fprintf('\\n');\r\nend\r\n\r\nif solved\r\n fprintf('Solved in %.2f sec\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f sec\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":5,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":14,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T20:04:24.000Z","updated_at":"2025-12-12T15:50:04.000Z","published_at":"2017-06-18T20:39:39.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 5 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTheory: The optimal minimal guess solution requires only 5 guesses. 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=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e link contains a description of the Knuth Five-guess algorithm. My description of this process with Matlab in mind is: Select the guess that will create the fewest remaining possible solutions for the worst case guess. All guesses are evaluated for the viable remaining possible solutions. Use Matlab array ability to mask the mpc5c variable by remaining cases. The hist function is too slow so create a hist array of states [0:8 10... 20] for all guesses [21,1296]. Sorting of the hist array is used to find a min solution group. Select the first guess with the lowest remaining solutions maximum. A guess that is not a remaining solution is only used if it has the lowest remaining solutions maximum. A later guess is possible if the first size is tied and its second size is less than the second of the earlier guess.\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\u003eMastermind challenges: [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":44238,"title":"Mastermind III: Solve in 1","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: A set of 25 cases will be provided that have optimal guesses and their scores. Solve the pattern in 1 guess.\r\n\r\nTheory: Elimination of excluded possible guesses will leave only one. Some solutions require only three total guesses so the input size will vary.\r\n\r\nFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: A set of 25 cases will be provided that have optimal guesses and their scores. Solve the pattern in 1 guess.\u003c/p\u003e\u003cp\u003eTheory: Elimination of excluded possible guesses will leave only one. Some solutions require only three total guesses so the input size will vary.\u003c/p\u003e\u003cp\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n% mguess and mpegs are kx4 and kx2 and will not be empty\r\n% The player gets only one guess\r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\nglobal m mpc mc mpc5c v\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  1 0\r\n3 6 5 6  2 1\r\n6 6 5 5  4 0]; % case 940\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  2 0\r\n3 6 3 6  0 1\r\n6 4 4 5  3 0\r\n6 5 4 5  4 0]; % case 900\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 0\r\n1 3 4 3  0 2\r\n4 4 1 5  3 0\r\n1 4 5 6  1 3\r\n6 4 1 5  4 0]; % case 850\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 2\r\n2 3 4 3  1 1\r\n2 1 3 5  0 3\r\n6 3 2 1  4 0]; % case 816\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 2\r\n2 3 4 3  1 1\r\n2 1 3 5  1 2\r\n2 4 5 1  0 2\r\n6 1 2 3  4 0]; % case 750\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 0\r\n1 3 4 3  0 1\r\n4 2 5 6  0 2\r\n6 5 1 5  1 1\r\n5 5 3 2  4 0]; % case 700\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  2 0\r\n3 6 3 6  0 1\r\n6 4 4 5  1 0\r\n5 3 5 5  4 0]; % case 650\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  2 0\r\n1 1 3 4  0 2\r\n3 2 1 5  2 2\r\n3 5 1 2  1 3\r\n5 2 1 3  4 0]; % case 600\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  0 0\r\n6 6 6 6  4 0]; % case 947\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 1\r\n2 3 4 3  1 2\r\n4 3 2 5  2 1\r\n4 4 2 3  3 0\r\n4 6 2 3  4 0]; % case 550\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 0\r\n3 3 4 5  1 3\r\n3 4 5 3  2 2\r\n4 3 5 3  4 0]; % case 500\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 1\r\n2 3 4 3  0 1\r\n4 1 5 6  2 1\r\n4 5 5 1  1 1\r\n4 1 6 4  4 0]; % case 450\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 0\r\n1 3 4 3  0 3\r\n1 4 4 5  0 2\r\n3 6 1 4  4 0]; % case 400\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 1\r\n1 3 1 4  1 3\r\n1 1 4 3  0 4\r\n3 4 1 1  4 0]; % case 350\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 2\r\n1 1 2 3  2 1\r\n1 4 1 5  0 1\r\n3 1 2 2  4 0]; % case 300\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  0 1\r\n2 3 4 3  2 0\r\n1 3 5 5  1 1\r\n2 6 5 3  1 1\r\n2 5 4 5  4 0]; % case 250\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 1\r\n1 3 1 4  1 0\r\n1 5 2 6  0 1\r\n2 2 4 4  1 1\r\n2 3 3 2  4 0]; % case 200\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 2\r\n1 1 2 3  1 2\r\n1 1 1 4  3 0\r\n2 1 1 4  4 0]; % case 150\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  1 0\r\n1 3 4 3  1 1\r\n3 2 5 3  0 2\r\n1 5 3 6  3 0\r\n1 5 3 5  4 0]; % case 100\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  2 1\r\n1 1 3 2  2 1\r\n4 1 1 5  0 1\r\n1 3 2 2  4 0]; % case 50\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n%%\r\nglobal m mpc mc mpc5c v\r\nmm=[1 2 1 2  2 0\r\n1 1 3 4  2 1\r\n1 4 2 5  1 0\r\n1 1 1 3  4 0]; % case 1\r\n[mguessn]=solve_mastermind(mm(1:end-1,1:end-2),mm(1:end-1,end-1:end),m,mpc,mc,mpc5c,v);\r\nif isequal(mguessn,mm(end,1:4))\r\n assert(isequal(1,1))\r\nelse\r\n fprintf('Invalid answer of %i %i %i %i\\n',mguessn)\r\n assert(isequal(1,0))\r\nend\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":15,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T19:30:49.000Z","updated_at":"2025-12-12T14:19:44.000Z","published_at":"2017-06-18T19:58:31.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge: A set of 25 cases will be provided that have optimal guesses and their scores. Solve the pattern in 1 guess.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTheory: Elimination of excluded possible guesses will leave only one. Some solutions require only three total guesses so the input size will vary.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44237,"title":"Mastermind II: Solve in 8 or less","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\r\n\r\nTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8.  The optimal minimal guess solution requires only 5 guesses.\r\n\r\nFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8.  The optimal minimal guess solution requires only 5 guesses.\u003c/p\u003e\u003cp\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n if isempty(mguess)\r\n  guess=[1 1 2 2]; % [1 1 1 1] is not a good first guess\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\nGmax=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved \u0026\u0026 Lmax\u003c9 % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n  mguess(end+1,:)=mguessn;\r\n  mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n  mpegs(end,2)=mc(ptr,mguessptr);\r\n  \r\n  Lsol=size(mguess,1);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n  if Lsol==8 % length of 8 and not solved\r\n   solved=0;\r\n   Gmax=0;\r\n   break;\r\n   end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\nif Gmax==0 % failed Guess max rqmt of 8\r\n fprintf('\\n Solution exceeded 8 guesses\\n');\r\n fprintf('Puzzle %i %i %i %i\\n',m(ptr,:));\r\n fprintf('Guessses and Responses\\n');\r\n fprintf('M%i %i %i %i   P%i %i\\n',[mguess mpegs]');\r\n fprintf('\\n');\r\nend\r\n\r\nif solved\r\n fprintf('Solved in %.2f sec\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f sec\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":15,"test_suite_updated_at":"2017-06-18T18:19:06.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T17:46:47.000Z","updated_at":"2025-12-12T14:09:25.000Z","published_at":"2017-06-18T18:16:28.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 8 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTheory: Simple elimination of invalid cases is sufficient to reduce max guesses to 8. The optimal minimal guess solution requires only 5 guesses.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFuture: Four Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44248,"title":"Mastermind V: Optimal Solver - average number of guesses","description":"The following description contains a copy of Richard Zapor's \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses Mastermind IV: Optimal Solver - max of 5 guesses\u003e\r\n\r\n\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.  will be provided. \r\n\r\n*Scoring:* the average number of guesses of all 1296 cases.\r\n\r\n*See Also:*\r\n\r\n\u003chttps://www.mathworks.com/matlabcentral/cody/problems/44236-mastermind-i-solve-all-1296-cases Mastermind I: Solve all 1296 cases\u003e\r\n\r\n\u003chttps://www.mathworks.com/matlabcentral/cody/problems/44237-mastermind-ii-solve-in-8-or-less Mastermind II: Solve in 8 or less\u003e\r\n\r\n\u003chttps://www.mathworks.com/matlabcentral/cody/problems/44238-mastermind-iii-solve-in-1 Mastermind III: Solve in 1\u003e\r\n\r\n\u003chttps://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses Mastermind IV: Optimal Solver - max of 5 guesses\u003e\r\n","description_html":"\u003cp\u003eThe following description contains a copy of Richard Zapor's \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses\"\u003eMastermind IV: Optimal Solver - max of 5 guesses\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.  will be provided.\u003c/p\u003e\u003cp\u003e\u003cb\u003eScoring:\u003c/b\u003e the average number of guesses of all 1296 cases.\u003c/p\u003e\u003cp\u003e\u003cb\u003eSee Also:\u003c/b\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44236-mastermind-i-solve-all-1296-cases\"\u003eMastermind I: Solve all 1296 cases\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44237-mastermind-ii-solve-in-8-or-less\"\u003eMastermind II: Solve in 8 or less\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44238-mastermind-iii-solve-in-1\"\u003eMastermind III: Solve in 1\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses\"\u003eMastermind IV: Optimal Solver - max of 5 guesses\u003c/a\u003e\u003c/p\u003e","function_template":"function guess = solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n  \r\nend","test_suite":"assessFunctionAbsence({'regexp','regexpi','regexprep','str2num','!','system','unix','persistent'},'File','solve_mastermind.m')\r\n\r\n%%\r\nv = 10 * (1:6) + (1:6)';\r\nv = 10 * v(:)' + (1:6)';\r\nv = reshape(10*v(:)' + (1:6)', [], 1);\r\nm = dec2base(v, 10) - 48;\r\nmpc = sum(permute(m, [1 3 2]) == permute(m, [3 1 2]), 3);\r\nmc = histc(m, 1:6, 2);\r\nmc = sum(min(permute(mc, [1 3 2]), permute(mc, [3 1 2])), 3) - mpc;\r\nmpc5c = 5 * mpc + mc;\r\nL = zeros(1296, 1);\r\nP = [1:1296 randi(1296, 1, 6000)];\r\nt = accumarray(P', 1);\r\nfor p = P(randperm(end))\r\n  mguess = []; mpegs = [];\r\n  while 1\r\n    mguessn = solve_mastermind(mguess, mpegs, m, mpc, mc, mpc5c, v);\r\n    k = v == polyval(mguessn, 10);\r\n    assert(any(k), 'invalid guess.')\r\n    mguess(end+1, :) = mguessn;\r\n    mpegs(end+1, :) = [mpc(p, k) mc(p, k)];\r\n    if mpegs(end, 1) == 4, L(p) = L(p) + size(mguess, 1); break, end\r\n  end\r\nend\r\nL = sum(L ./ t);\r\nfid = fopen('score.p', 'Wb');\r\nfwrite(fid, uint8(sscanf([...\r\n  '7630312E30307630302E3030000D201C07E23FB1000000340000015B000001C36FCD46'...\r\n  '4336A6F9BD2918A670F86BF0AC534F616971CE31A66833ECF344BF30BF9F163C19F925'...\r\n  '0AC8280807727BFFC8E8FF46AA63FA75C2890672D48C5599920C846EB7E0E230FDC14E'...\r\n  '1EA1768A5F84951A22717883064D6B9AD895493F53F6443E63783C5BFDD36A65EE33DB'...\r\n  'DF0C38A4238848AF99B21B91FC5F8E0E31A8D33533721B36C2AB371D7B4D59A1036FBF'...\r\n  'E2A4A0233812C46AA22FE134B0DE0FCFDCDCD4A49106161DDD64A97EC0B1F14A8E1FB4'...\r\n  '81CE94D11A50006D5AA9536055488421EC1682EF9945B98FB175A9CE96624DE8C575C2'...\r\n  'B442A7EAD282A0A90E89D3F25C7B22AF0D1FA61A2F76ED95E8C6EF78A197B13C3B570E'...\r\n  'D2F8EA301AAA8795CB4B2DEF21140589C0FC80A0B75F896CCEB1B560C07273FC4BCBD5'...\r\n  '5D98ED8516915D9A344A91D913E1E106F8CB3C87EBDBB7C0501AE307F5B1807555F8D2'...\r\n  '65EE53842038231C5E6C0BFDC5EB1A33CA999C68E612C9DC17050B9606'], '%2X')));\r\nfclose(fid);\r\nfprintf('Average number of guesses: %.2f', L / 1296)\r\nscore(floor((L / 1296 - 4) * 100))\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":14,"created_by":1434,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":13,"test_suite_updated_at":"2017-07-04T07:08:13.000Z","rescore_all_solutions":true,"group_id":1,"created_at":"2017-07-02T23:16:44.000Z","updated_at":"2025-12-12T16:02:19.000Z","published_at":"2017-07-02T23:16: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\u003eThe following description contains a copy of Richard Zapor's\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind IV: Optimal Solver - max of 5 guesses\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666. will be provided.\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\u003eScoring:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e the average number of guesses of all 1296 cases.\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\u003eSee Also:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44236-mastermind-i-solve-all-1296-cases\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind I: Solve all 1296 cases\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44237-mastermind-ii-solve-in-8-or-less\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind II: Solve in 8 or less\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44238-mastermind-iii-solve-in-1\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind III: Solve in 1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44239-mastermind-iv-optimal-solver-max-of-5-guesses\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind IV: Optimal Solver - max of 5 guesses\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44236,"title":"Mastermind I: Solve all 1296 cases","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\r\n\r\nTheory: Brute force can work but masking is much more efficient.  The optimal minimal guess solution requires only 5 guesses.\r\n\r\nFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: Brute force can work but masking is much more efficient.  The optimal minimal guess solution requires only 5 guesses.\u003c/p\u003e\u003cp\u003eFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n if isempty(mguess)\r\n  guess=[1 1 1 1];\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n   mguess(end+1,:)=mguessn;\r\n   mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n   mpegs(end,2)=mc(ptr,mguessptr);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Lsol=size(mguess,1);\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\n\r\nif solved\r\n fprintf('Solved in %.2f\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n","published":true,"deleted":false,"likes_count":3,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":21,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T14:17:00.000Z","updated_at":"2025-12-12T14:05:24.000Z","published_at":"2017-06-18T15:51:46.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses is unlimited per pattern but a time limit of 45 seconds is implemented. The user will see their prior guesses and the guess response.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTheory: Brute force can work but masking is much more efficient. The optimal minimal guess solution requires only 5 guesses.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFuture: Five Mastermind challenges will be created, [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":43562,"title":"Mastermind","description":"We are playing the boardgame mastermind \u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game)\u003e. The game master has created a 4-character code for you to guess, with characters ranging from \"1\" to \"6\" (e.g. code = [2 1 3 4]).\r\n\r\nThe first guess (this will be [1 1 2 2]) is already done and the game master has given you following feedback:\r\n\r\n# The number of correct characters in your guess, in this case 1 because character \"1\" at index 2 is correct.\r\n# The number of correct characters, but in a wrong place. In this case 1 because you guessed character \"2\", but it is in the wrong place.\r\n\r\nNow, your function has to do the next guesses. Each time your function is called, the input will contain the code and feedback of all your previous guesses, the output is a copy of the input with your new code added (refer to the example code).\r\n\r\nIt is shown you could solve the code in only 4 additional guesses (refer to the wiki page), you will however get 11 according to the rules of Mastermind.\r\n\r\nGood luck!","description_html":"\u003cp\u003eWe are playing the boardgame mastermind \u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003ehttps://en.wikipedia.org/wiki/Mastermind_(board_game)\u003c/a\u003e. The game master has created a 4-character code for you to guess, with characters ranging from \"1\" to \"6\" (e.g. code = [2 1 3 4]).\u003c/p\u003e\u003cp\u003eThe first guess (this will be [1 1 2 2]) is already done and the game master has given you following feedback:\u003c/p\u003e\u003col\u003e\u003cli\u003eThe number of correct characters in your guess, in this case 1 because character \"1\" at index 2 is correct.\u003c/li\u003e\u003cli\u003eThe number of correct characters, but in a wrong place. In this case 1 because you guessed character \"2\", but it is in the wrong place.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eNow, your function has to do the next guesses. Each time your function is called, the input will contain the code and feedback of all your previous guesses, the output is a copy of the input with your new code added (refer to the example code).\u003c/p\u003e\u003cp\u003eIt is shown you could solve the code in only 4 additional guesses (refer to the wiki page), you will however get 11 according to the rules of Mastermind.\u003c/p\u003e\u003cp\u003eGood luck!\u003c/p\u003e","function_template":"function output = mastermind(input)\r\n    %% unpack the input (as example, alter if you like)\r\n    i = length(input);            % number of attempts so far\r\n    previousCode = input(i).code; % the last code you tried (at index i-1 you will find the code before that, etc.)\r\n    rightNumWrongPlace = input(i).rightNumWrongPlace; % the number of right numbers in previous attemp, but which were at the wrong place\r\n    rightNumRightPlace = input(i).rightNumRightPlace; % the number of right numbers in previous attemp at the wright position\r\n    % The user data from previous run (optional):\r\n    % Please use \"if isfield(...\", because your first call the user data\r\n    % will be empty\r\n    if isfield(input(i).userdata,'var2')\r\n        var2 = input(i).userdata.var2;\r\n    end\r\n    \r\n    %% now, based on previous attempts create your next code\r\n    yourCode = [1 1 1 1];\r\n    \r\n    %% alter if you like\r\n    % you can use the field userdata to save variables needed in your next run (optional)\r\n    data.var1 = 1;\r\n    data.var2 = 'lala';\r\n    new.userdata = data; \r\n    \r\n    %% do not alter\r\n    output = input;\r\n    new.code = yourCode;            % your next try\r\n    new.rightNumWrongPlace = [];    % the gamemaster will fill in this field at evaluation for the next attempt\r\n    new.rightNumRightPlace = [];   % the gamemaster will fill in this field at evaluation for the next attempt\r\n    if ~isfield(new,'userdata') % ensure no errors when userdata is not used\r\n        new.userdata = [];\r\n    end\r\n    output(end+1) = new;\r\nend","test_suite":"%%\r\ncode = randi(6,1,4); % the real code to crack\r\n% attempt 1\r\nattempts = [];\r\nattempts(1).code = [1 1 2 2]; % the first attempt\r\n% eval\r\nattempts(1).rightNumRightPlace = sum(code==attempts(1).code);\r\nattempts(1).rightNumWrongPlace = sum(sum(repmat(code',1,4)==repmat(attempts(1).code,4,1),2)\u003e0)-attempts(1).rightNumRightPlace;\r\nattempts(1).userdata = [];\r\n% init\r\nsolved = false;\r\nwhile (length(attempts)\u003c11 \u0026\u0026 ~solved)\r\n    attempts = mastermind(attempts);\r\n    % eval\r\n    attempts(end).rightNumRightPlace = sum(code==attempts(end).code);\r\n    attempts(end).rightNumWrongPlace = sum(sum(repmat(code',1,4)==repmat(attempts(end).code,4,1),2)\u003e0)-attempts(end).rightNumRightPlace;\r\n    if attempts(end).rightNumRightPlace==4\r\n        solved = true;\r\n    end\r\nend\r\nassert(solved)","published":true,"deleted":false,"likes_count":3,"comments_count":2,"created_by":94929,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":15,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2016-10-16T09:19:14.000Z","updated_at":"2025-12-12T14:00:01.000Z","published_at":"2016-10-16T09:19:14.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\u003eWe are playing the boardgame mastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026lt;https://en.wikipedia.org/wiki/Mastermind_(board_game\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e)\u0026gt;. The game master has created a 4-character code for you to guess, with characters ranging from \\\"1\\\" to \\\"6\\\" (e.g. code = [2 1 3 4]).\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 first guess (this will be [1 1 2 2]) is already done and the game master has given you following feedback:\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\u003eThe number of correct characters in your guess, in this case 1 because character \\\"1\\\" at index 2 is correct.\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\u003eThe number of correct characters, but in a wrong place. In this case 1 because you guessed character \\\"2\\\", but it is in the wrong place.\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\u003eNow, your function has to do the next guesses. Each time your function is called, the input will contain the code and feedback of all your previous guesses, the output is a copy of the input with your new code added (refer to the example code).\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 shown you could solve the code in only 4 additional guesses (refer to the wiki page), you will however get 11 according to the rules of Mastermind.\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\u003eGood luck!\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":44239,"title":"Mastermind IV: Optimal Solver - max of 5 guesses","description":"\u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\r\n\r\n  Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\r\n[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v) \r\n\r\nwhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\r\n\r\nChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 5 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\r\n\r\nTheory: The optimal minimal guess solution requires only 5 guesses. The \u003chttps://en.wikipedia.org/wiki/Mastermind_(board_game) Mastermind\u003e link contains a description of the Knuth Five-guess algorithm. My description of this process with Matlab in mind is: Select the guess that will create the fewest remaining possible solutions for the worst case guess. All guesses are evaluated for the viable remaining possible solutions. Use Matlab array ability to mask the mpc5c variable by remaining cases. The hist function is too slow so create a hist array of states [0:8 10... 20] for all guesses [21,1296]. Sorting of the hist array is used to find a min solution group. Select the first guess with the lowest remaining solutions maximum. A guess that is not a remaining solution is only used if it has the lowest remaining solutions maximum. A later guess is possible if the first size is tied and its second size is less than the second of the earlier guess.\r\n\r\nMastermind challenges: [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]","description_html":"\u003cp\u003e\u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eAnswer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.\r\n\u003c/pre\u003e\u003cp\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/p\u003e\u003cp\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/p\u003e\u003cp\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 5 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/p\u003e\u003cp\u003eTheory: The optimal minimal guess solution requires only 5 guesses. The \u003ca href = \"https://en.wikipedia.org/wiki/Mastermind_(board_game)\"\u003eMastermind\u003c/a\u003e link contains a description of the Knuth Five-guess algorithm. My description of this process with Matlab in mind is: Select the guess that will create the fewest remaining possible solutions for the worst case guess. All guesses are evaluated for the viable remaining possible solutions. Use Matlab array ability to mask the mpc5c variable by remaining cases. The hist function is too slow so create a hist array of states [0:8 10... 20] for all guesses [21,1296]. Sorting of the hist array is used to find a min solution group. Select the first guess with the lowest remaining solutions maximum. A guess that is not a remaining solution is only used if it has the lowest remaining solutions maximum. A later guess is possible if the first size is tied and its second size is less than the second of the earlier guess.\u003c/p\u003e\u003cp\u003eMastermind challenges: [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/p\u003e","function_template":"function [guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\r\n% mguessn 1x4\r\n% mguess kx4\r\n% mpegs kx2  Location\u0026Color, Colors_Not_in location\r\n\r\n if isempty(mguess)\r\n  guess=[1 1 2 2]; % [1 1 1 1] is not a good first guess\r\n  return\r\n end\r\n \r\n guess=[1 1 1 2];\r\nend","test_suite":"%%\r\ntic\r\nv=1111:6666;\r\nvL=length(v);\r\nm=zeros(vL,4);\r\nfor i=1:vL\r\n  vp=v(i);\r\n  for k=4:-1:1\r\n   m(i,k)=mod(vp,10);\r\n   vp=floor(vp/10);\r\n  end\r\nend\r\nmdel=sum((m==0)+(m\u003e6),2)\u003e0;\r\nm(mdel,:)=[];\r\nv=m*[1000;100;10;1];\r\nmL=size(m,1);\r\n\r\nmpc=zeros(mL); % 0.030\r\nfor j=1:mL\r\nmpc(:,j)=sum(m==repmat(m(j,:),mL,1),2);\r\nend\r\n\r\nmch=zeros(mL,6); % 0.038\r\nfor i=1:mL\r\n  for k=1:6\r\n   mch(i,k)=nnz(m(i,:)==k);\r\n  end\r\nend\r\n\r\nmc=zeros(mL); % 0.06\r\nfor j=1:mL\r\n  mc(:,j)=sum(min(mch,repmat(mch(j,:),mL,1)),2);\r\nend\r\nmc=mc-mpc; % remove mpc part\r\nmpc5c=5*mpc+mc;\r\nfprintf('Initialization %.3f\\n',toc)\r\n% finished initilaiztion calculation in less than 0.2 sec\r\n\r\n\r\nztic=tic;\r\nsolved=1;\r\nGmax=1;\r\npcase=0;\r\nLmax=0;\r\nLtot=0;\r\nfor ptr=randperm(1296) % anti-hack randomization\r\n pcase=pcase+1;\r\n mguess=[];mpegs=[];\r\n while solved % loop until solved\r\n  ztoc=toc(ztic);\r\n  if ztoc\u003e45\r\n   solved=0;\r\n   break;\r\n  end % if\r\n  [mguessn]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v);\r\n  mguessptr=find(v==mguessn*[1000;100;10;1]);\r\n  if isempty(mguessptr),continue;end % invalid input\r\n  mguess(end+1,:)=mguessn;\r\n  mpegs(end+1,1)=mpc(ptr,mguessptr);\r\n  mpegs(end,2)=mc(ptr,mguessptr);\r\n  \r\n  Lsol=size(mguess,1);\r\n  if mpegs(end,1)==4 % break on solved to ptr loop\r\n   Ltot=Ltot+Lsol;\r\n   if Lsol\u003eLmax, Lmax=Lsol;end\r\n   break;\r\n  end\r\n  if Lsol==5 % length of 5 and not solved\r\n   solved=0;\r\n   Gmax=0;\r\n   break;\r\n   end\r\n end % while\r\n if ~solved,break;end % terminate case processing\r\nend % for all 1296 cases\r\n\r\nif Gmax==0 % failed Guess max rqmt of 5\r\n fprintf('\\n Solution exceeded 5 guesses\\n');\r\n fprintf('Puzzle %i %i %i %i\\n',m(ptr,:));\r\n fprintf('Guessses and Responses\\n');\r\n fprintf('M%i %i %i %i   P%i %i\\n',[mguess mpegs]');\r\n fprintf('\\n');\r\nend\r\n\r\nif solved\r\n fprintf('Solved in %.2f sec\\n',ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nelse\r\n fprintf('Solved %i of 1296 cases in %.2f sec\\n',pcase-1,ztoc)\r\n fprintf('Lmax %i   Ltot %i\\n',Lmax,Ltot)\r\n assert(isequal(solved,1))\r\nend\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":5,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":14,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-06-18T20:04:24.000Z","updated_at":"2025-12-12T15:50:04.000Z","published_at":"2017-06-18T20:39:39.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a code breaking logic puzzle. A pattern of 6 colors(values 1:6) of four positions (1111;1112;....6666) for a possible 6^4(1296) cases is generated. The solver plays a length 4 vector with values 1:6. Accuracy of the play is returned by a count of values in the right position and a count of values(excluding those in the right positions) common to the solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[Answer:1233  Guess:3231 Response: 2,2  as x23x are right value/position, 3xx1 are right values.]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e[guess]=solve_mastermind(mguess,mpegs,m,mpc,mc,mpc5c,v)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewhere guess is a 1x4 vector, mguess is the kx4 matrix of prior guesses and is empty on first try, mpegs is kx2 giving right [value/position, values] for mguess, m is a 1296x4 array [1 1 1 1;...6 6 6 6] of all solutions, mpc is a 1296x1296 array of 0:4 for value/position solutions, mc is a 1296x1296 array of 0:4 for value solutions, mpc5c is state array of a combined mpc and pc of values 0:20, 5*mpc+mc, and v is integer value of solutions 1111 thru 6666.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eChallenge: All 1296 cases will be provided. The maximum number of guesses allowed is 5 with a time limit of 45 seconds. The user will see their prior guesses and the guess response.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eTheory: The optimal minimal guess solution requires only 5 guesses. 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=\\\"https://en.wikipedia.org/wiki/Mastermind_(board_game)\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eMastermind\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e link contains a description of the Knuth Five-guess algorithm. My description of this process with Matlab in mind is: Select the guess that will create the fewest remaining possible solutions for the worst case guess. All guesses are evaluated for the viable remaining possible solutions. Use Matlab array ability to mask the mpc5c variable by remaining cases. The hist function is too slow so create a hist array of states [0:8 10... 20] for all guesses [21,1296]. Sorting of the hist array is used to find a min solution group. Select the first guess with the lowest remaining solutions maximum. A guess that is not a remaining solution is only used if it has the lowest remaining solutions maximum. A later guess is possible if the first size is tied and its second size is less than the second of the earlier guess.\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\u003eMastermind challenges: [Solve no limit, Solve in 8 or less, Solve in 1 given a guess pattern, Solve in 5 or less]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"term":"tag:\"mastermind\"","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:\"mastermind\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"mastermind\"","","\"","mastermind","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f45e5df5a20\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f45e5df5980\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f45e5df50c0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f45e5df5ca0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f45e5df5c00\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f45e5df5b60\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f45e5df5ac0\u003e":"tag:\"mastermind\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f45e5df5ac0\u003e":"tag:\"mastermind\""},"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:\"mastermind\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"mastermind\"","","\"","mastermind","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f45e5df5a20\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f45e5df5980\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f45e5df50c0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f45e5df5ca0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f45e5df5c00\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f45e5df5b60\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f45e5df5ac0\u003e":"tag:\"mastermind\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f45e5df5ac0\u003e":"tag:\"mastermind\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":44238,"difficulty_rating":"medium"},{"id":44237,"difficulty_rating":"medium"},{"id":44248,"difficulty_rating":"medium"},{"id":44236,"difficulty_rating":"medium"},{"id":43562,"difficulty_rating":"medium-hard"},{"id":44239,"difficulty_rating":"hard"}]}}