{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2026-04-16T00:12:35.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2026-04-16T00: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":1092,"title":"Decimation","description":"When dealing to the Roman Army, the term decimate meant that the entire unit would be broken up into groups of ten soldiers, and lots would be drawn.  The person who was unlucky enough to draw the short straw would be executed by the other nine members of his group.\r\n\r\nThe bloodthirsty Roman Centurion Carnage Maximus decided to apply this to his prisoners, with a few gruesome differences.  Rather than kill every tenth prisoner and allow the rest to live, he is going to leave only one prisoner alive and kill all of the others.  Instead of killing every tenth prisoner, he chooses a number (kill_every).  If kill_every=3, he kills every third prisoner.  If kill_every=5, he kills every fifth prisoner.  He always chooses a number between 2 and the number of prisoners he has, and this process will be repeated until there is only one prisoner left.  For example, if there are 10 prisoners, and kill_every=3\r\n\r\nFirst iteration: 1 2 3 4 5 6 7 8 9 10\r\n\r\n1-2-3 4-5-6 7-8-9 10\r\n\r\nPrisoners 3, 6 and 9 will be killed.\r\n\r\nSecond iteration: 1 2 4 5 7 8 10\r\n\r\nBecause Prisoner 10 was counted during the first iteration, the executions\r\nwill proceed as such: 10-1-2 4-5-7 8-10, so prisoners 2 and 7 will be killed\r\n\r\nThird iteration: 1 4 5 8 10\r\n8-10-1 4-5-8 10, so prisoners 1 and 8 executed.\r\n\r\nFourth Iteration:  10-4-5 10\r\nPrisoner 5 is executed.\r\n\r\nFifth iteration:  10-4 10\r\nPrisoner 10 is executed\r\n\r\nSince the sole survivor is prisoner 4, he is released.\r\n\r\nYou are an unlucky prisoner caught by Carnage Maximum.  Prior to lining up the prisoners, he reveals the number of prisoners he has and his value of kill_every for the day.  Your job is to figure out which prisoner you need to be in order to survive.  Write a MATLAB script that takes the values of num_prisoners and kill_every.  The output will be survivor, which is the position of the person who survives.  If you write your script quickly enough, that person will be you.\r\n\r\nGood luck!","description_html":"\u003cp\u003eWhen dealing to the Roman Army, the term decimate meant that the entire unit would be broken up into groups of ten soldiers, and lots would be drawn.  The person who was unlucky enough to draw the short straw would be executed by the other nine members of his group.\u003c/p\u003e\u003cp\u003eThe bloodthirsty Roman Centurion Carnage Maximus decided to apply this to his prisoners, with a few gruesome differences.  Rather than kill every tenth prisoner and allow the rest to live, he is going to leave only one prisoner alive and kill all of the others.  Instead of killing every tenth prisoner, he chooses a number (kill_every).  If kill_every=3, he kills every third prisoner.  If kill_every=5, he kills every fifth prisoner.  He always chooses a number between 2 and the number of prisoners he has, and this process will be repeated until there is only one prisoner left.  For example, if there are 10 prisoners, and kill_every=3\u003c/p\u003e\u003cp\u003eFirst iteration: 1 2 3 4 5 6 7 8 9 10\u003c/p\u003e\u003cp\u003e1-2-3 4-5-6 7-8-9 10\u003c/p\u003e\u003cp\u003ePrisoners 3, 6 and 9 will be killed.\u003c/p\u003e\u003cp\u003eSecond iteration: 1 2 4 5 7 8 10\u003c/p\u003e\u003cp\u003eBecause Prisoner 10 was counted during the first iteration, the executions\r\nwill proceed as such: 10-1-2 4-5-7 8-10, so prisoners 2 and 7 will be killed\u003c/p\u003e\u003cp\u003eThird iteration: 1 4 5 8 10\r\n8-10-1 4-5-8 10, so prisoners 1 and 8 executed.\u003c/p\u003e\u003cp\u003eFourth Iteration:  10-4-5 10\r\nPrisoner 5 is executed.\u003c/p\u003e\u003cp\u003eFifth iteration:  10-4 10\r\nPrisoner 10 is executed\u003c/p\u003e\u003cp\u003eSince the sole survivor is prisoner 4, he is released.\u003c/p\u003e\u003cp\u003eYou are an unlucky prisoner caught by Carnage Maximum.  Prior to lining up the prisoners, he reveals the number of prisoners he has and his value of kill_every for the day.  Your job is to figure out which prisoner you need to be in order to survive.  Write a MATLAB script that takes the values of num_prisoners and kill_every.  The output will be survivor, which is the position of the person who survives.  If you write your script quickly enough, that person will be you.\u003c/p\u003e\u003cp\u003eGood luck!\u003c/p\u003e","function_template":"function survivor=decimate(num_prisoners,kill_every)\r\nsurvivor=4;\r\nend","test_suite":"%%\r\nassert(isequal(decimate(10,3),4))\r\n%%\r\nassert(isequal(decimate(1024,3),676))\r\n%%\r\nassert(isequal(decimate(2012,50),543))\r\n%%\r\nassert(isequal(decimate(30,5),3))\r\n%%\r\nassert(isequal(decimate(10,10),8))\r\n%%\r\nassert(isequal(decimate(2048,2),1))","published":true,"deleted":false,"likes_count":20,"comments_count":12,"created_by":1615,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":314,"test_suite_updated_at":"2012-12-04T21:28:04.000Z","rescore_all_solutions":false,"group_id":13,"created_at":"2012-12-04T19:47:49.000Z","updated_at":"2026-04-08T14:49:07.000Z","published_at":"2012-12-04T19:53:55.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWhen dealing to the Roman Army, the term decimate meant that the entire unit would be broken up into groups of ten soldiers, and lots would be drawn. The person who was unlucky enough to draw the short straw would be executed by the other nine members of his group.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe bloodthirsty Roman Centurion Carnage Maximus decided to apply this to his prisoners, with a few gruesome differences. Rather than kill every tenth prisoner and allow the rest to live, he is going to leave only one prisoner alive and kill all of the others. Instead of killing every tenth prisoner, he chooses a number (kill_every). If kill_every=3, he kills every third prisoner. If kill_every=5, he kills every fifth prisoner. He always chooses a number between 2 and the number of prisoners he has, and this process will be repeated until there is only one prisoner left. For example, if there are 10 prisoners, and kill_every=3\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFirst iteration: 1 2 3 4 5 6 7 8 9 10\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e1-2-3 4-5-6 7-8-9 10\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ePrisoners 3, 6 and 9 will be killed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSecond iteration: 1 2 4 5 7 8 10\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBecause Prisoner 10 was counted during the first iteration, the executions will proceed as such: 10-1-2 4-5-7 8-10, so prisoners 2 and 7 will be killed\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThird iteration: 1 4 5 8 10 8-10-1 4-5-8 10, so prisoners 1 and 8 executed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFourth Iteration: 10-4-5 10 Prisoner 5 is executed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFifth iteration: 10-4 10 Prisoner 10 is executed\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSince the sole survivor is prisoner 4, he is released.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou are an unlucky prisoner caught by Carnage Maximum. Prior to lining up the prisoners, he reveals the number of prisoners he has and his value of kill_every for the day. Your job is to figure out which prisoner you need to be in order to survive. Write a MATLAB script that takes the values of num_prisoners and kill_every. The output will be survivor, which is the position of the person who survives. If you write your script quickly enough, that person will be you.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\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":1940,"title":"Decimation - Optimized for speed","description":"This problem is similar to http://www.mathworks.com/matlabcentral/cody/problems/1092-decimation, only this time the score will be based on how quickly you can determine which person will survive.\r\n\r\nThe sample sizes (num_prisoners) and number of prisoners killed (num_killed) will be larger than in the original problem, but other than that the problem sets are identical.","description_html":"\u003cp\u003eThis problem is similar to \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/1092-decimation\"\u003ehttp://www.mathworks.com/matlabcentral/cody/problems/1092-decimation\u003c/a\u003e, only this time the score will be based on how quickly you can determine which person will survive.\u003c/p\u003e\u003cp\u003eThe sample sizes (num_prisoners) and number of prisoners killed (num_killed) will be larger than in the original problem, but other than that the problem sets are identical.\u003c/p\u003e","function_template":"function y = speed_decimation(num_prisoners, num_killed)\r\n  y = num_prisoners+num_killed;\r\nend","test_suite":"%%\r\nassert(isequal(speed_decimation(10,3),4))\r\n%%\r\nassert(isequal(speed_decimation(1024,3),676))\r\n%%\r\nassert(isequal(speed_decimation(2012,50),543))\r\n%%\r\nassert(isequal(speed_decimation(30,5),3))\r\n%%\r\nassert(isequal(speed_decimation(10,10),8))\r\n%%\r\nassert(isequal(speed_decimation(2048,2),1))\r\n%%\r\nassert(isequal(speed_decimation(2048,1024),1773))\r\n%%\r\nt_in=clock;\r\nj=1:50;\r\nv=arrayfun(@(x) speed_decimation(100000,x),j);\r\ncorrect=[100000 68929 92620 32942 40333 54212 27152 67341 42610 77328 82991 13252 91717 6850 45758 71249 38339 86953 63331 66903 72606 83990 87828 46101 99979 47141 16871 60389 51549 76409 42868 78390 79590 27573 95835 53636 36954 39891 45943 63811 71589 70886 49313 4069 93694 96031 20739 41403 93714 60023];\r\nassert(all(isequal(v,correct)));\r\nt_out=etime(clock,t_in)*1000;\r\nfprintf('Actual Time = %.0f msec\\n',t_out)\r\nv=[100000:100000:1000000];\r\nv=arrayfun(@(x) speed_decimation(x,17),v);\r\ncorrect=[38339 162859 151602 99465 462955 559860 337009 546467 563784 364193];\r\nassert(all(isequal(v,correct)));\r\nt_out=etime(clock,t_in)*1000;\r\nfprintf('Actual Time = %.0f msec\\n',t_out)\r\nassert(isequal(speed_decimation(2^20,2^9),210856));\r\nt_out=etime(clock,t_in)*1000;\r\nt2=min(100000,t_out);\r\nfprintf('Actual Time = %.0f msec\\n',t_out)\r\nfeval(@assignin,'caller','score',floor(t2));","published":true,"deleted":false,"likes_count":9,"comments_count":2,"created_by":1615,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":224,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":13,"created_at":"2013-10-16T19:58:38.000Z","updated_at":"2026-04-08T14:54:11.000Z","published_at":"2013-10-16T19:58:38.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is similar to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/1092-decimation\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ehttp://www.mathworks.com/matlabcentral/cody/problems/1092-decimation\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, only this time the score will be based on how quickly you can determine which person will survive.\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 sample sizes (num_prisoners) and number of prisoners killed (num_killed) will be larger than in the original problem, but other than that the problem sets are identical.\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":1092,"title":"Decimation","description":"When dealing to the Roman Army, the term decimate meant that the entire unit would be broken up into groups of ten soldiers, and lots would be drawn.  The person who was unlucky enough to draw the short straw would be executed by the other nine members of his group.\r\n\r\nThe bloodthirsty Roman Centurion Carnage Maximus decided to apply this to his prisoners, with a few gruesome differences.  Rather than kill every tenth prisoner and allow the rest to live, he is going to leave only one prisoner alive and kill all of the others.  Instead of killing every tenth prisoner, he chooses a number (kill_every).  If kill_every=3, he kills every third prisoner.  If kill_every=5, he kills every fifth prisoner.  He always chooses a number between 2 and the number of prisoners he has, and this process will be repeated until there is only one prisoner left.  For example, if there are 10 prisoners, and kill_every=3\r\n\r\nFirst iteration: 1 2 3 4 5 6 7 8 9 10\r\n\r\n1-2-3 4-5-6 7-8-9 10\r\n\r\nPrisoners 3, 6 and 9 will be killed.\r\n\r\nSecond iteration: 1 2 4 5 7 8 10\r\n\r\nBecause Prisoner 10 was counted during the first iteration, the executions\r\nwill proceed as such: 10-1-2 4-5-7 8-10, so prisoners 2 and 7 will be killed\r\n\r\nThird iteration: 1 4 5 8 10\r\n8-10-1 4-5-8 10, so prisoners 1 and 8 executed.\r\n\r\nFourth Iteration:  10-4-5 10\r\nPrisoner 5 is executed.\r\n\r\nFifth iteration:  10-4 10\r\nPrisoner 10 is executed\r\n\r\nSince the sole survivor is prisoner 4, he is released.\r\n\r\nYou are an unlucky prisoner caught by Carnage Maximum.  Prior to lining up the prisoners, he reveals the number of prisoners he has and his value of kill_every for the day.  Your job is to figure out which prisoner you need to be in order to survive.  Write a MATLAB script that takes the values of num_prisoners and kill_every.  The output will be survivor, which is the position of the person who survives.  If you write your script quickly enough, that person will be you.\r\n\r\nGood luck!","description_html":"\u003cp\u003eWhen dealing to the Roman Army, the term decimate meant that the entire unit would be broken up into groups of ten soldiers, and lots would be drawn.  The person who was unlucky enough to draw the short straw would be executed by the other nine members of his group.\u003c/p\u003e\u003cp\u003eThe bloodthirsty Roman Centurion Carnage Maximus decided to apply this to his prisoners, with a few gruesome differences.  Rather than kill every tenth prisoner and allow the rest to live, he is going to leave only one prisoner alive and kill all of the others.  Instead of killing every tenth prisoner, he chooses a number (kill_every).  If kill_every=3, he kills every third prisoner.  If kill_every=5, he kills every fifth prisoner.  He always chooses a number between 2 and the number of prisoners he has, and this process will be repeated until there is only one prisoner left.  For example, if there are 10 prisoners, and kill_every=3\u003c/p\u003e\u003cp\u003eFirst iteration: 1 2 3 4 5 6 7 8 9 10\u003c/p\u003e\u003cp\u003e1-2-3 4-5-6 7-8-9 10\u003c/p\u003e\u003cp\u003ePrisoners 3, 6 and 9 will be killed.\u003c/p\u003e\u003cp\u003eSecond iteration: 1 2 4 5 7 8 10\u003c/p\u003e\u003cp\u003eBecause Prisoner 10 was counted during the first iteration, the executions\r\nwill proceed as such: 10-1-2 4-5-7 8-10, so prisoners 2 and 7 will be killed\u003c/p\u003e\u003cp\u003eThird iteration: 1 4 5 8 10\r\n8-10-1 4-5-8 10, so prisoners 1 and 8 executed.\u003c/p\u003e\u003cp\u003eFourth Iteration:  10-4-5 10\r\nPrisoner 5 is executed.\u003c/p\u003e\u003cp\u003eFifth iteration:  10-4 10\r\nPrisoner 10 is executed\u003c/p\u003e\u003cp\u003eSince the sole survivor is prisoner 4, he is released.\u003c/p\u003e\u003cp\u003eYou are an unlucky prisoner caught by Carnage Maximum.  Prior to lining up the prisoners, he reveals the number of prisoners he has and his value of kill_every for the day.  Your job is to figure out which prisoner you need to be in order to survive.  Write a MATLAB script that takes the values of num_prisoners and kill_every.  The output will be survivor, which is the position of the person who survives.  If you write your script quickly enough, that person will be you.\u003c/p\u003e\u003cp\u003eGood luck!\u003c/p\u003e","function_template":"function survivor=decimate(num_prisoners,kill_every)\r\nsurvivor=4;\r\nend","test_suite":"%%\r\nassert(isequal(decimate(10,3),4))\r\n%%\r\nassert(isequal(decimate(1024,3),676))\r\n%%\r\nassert(isequal(decimate(2012,50),543))\r\n%%\r\nassert(isequal(decimate(30,5),3))\r\n%%\r\nassert(isequal(decimate(10,10),8))\r\n%%\r\nassert(isequal(decimate(2048,2),1))","published":true,"deleted":false,"likes_count":20,"comments_count":12,"created_by":1615,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":314,"test_suite_updated_at":"2012-12-04T21:28:04.000Z","rescore_all_solutions":false,"group_id":13,"created_at":"2012-12-04T19:47:49.000Z","updated_at":"2026-04-08T14:49:07.000Z","published_at":"2012-12-04T19:53:55.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWhen dealing to the Roman Army, the term decimate meant that the entire unit would be broken up into groups of ten soldiers, and lots would be drawn. The person who was unlucky enough to draw the short straw would be executed by the other nine members of his group.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe bloodthirsty Roman Centurion Carnage Maximus decided to apply this to his prisoners, with a few gruesome differences. Rather than kill every tenth prisoner and allow the rest to live, he is going to leave only one prisoner alive and kill all of the others. Instead of killing every tenth prisoner, he chooses a number (kill_every). If kill_every=3, he kills every third prisoner. If kill_every=5, he kills every fifth prisoner. He always chooses a number between 2 and the number of prisoners he has, and this process will be repeated until there is only one prisoner left. For example, if there are 10 prisoners, and kill_every=3\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFirst iteration: 1 2 3 4 5 6 7 8 9 10\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e1-2-3 4-5-6 7-8-9 10\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ePrisoners 3, 6 and 9 will be killed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSecond iteration: 1 2 4 5 7 8 10\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBecause Prisoner 10 was counted during the first iteration, the executions will proceed as such: 10-1-2 4-5-7 8-10, so prisoners 2 and 7 will be killed\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThird iteration: 1 4 5 8 10 8-10-1 4-5-8 10, so prisoners 1 and 8 executed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFourth Iteration: 10-4-5 10 Prisoner 5 is executed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFifth iteration: 10-4 10 Prisoner 10 is executed\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSince the sole survivor is prisoner 4, he is released.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou are an unlucky prisoner caught by Carnage Maximum. Prior to lining up the prisoners, he reveals the number of prisoners he has and his value of kill_every for the day. Your job is to figure out which prisoner you need to be in order to survive. Write a MATLAB script that takes the values of num_prisoners and kill_every. The output will be survivor, which is the position of the person who survives. If you write your script quickly enough, that person will be you.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\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":1940,"title":"Decimation - Optimized for speed","description":"This problem is similar to http://www.mathworks.com/matlabcentral/cody/problems/1092-decimation, only this time the score will be based on how quickly you can determine which person will survive.\r\n\r\nThe sample sizes (num_prisoners) and number of prisoners killed (num_killed) will be larger than in the original problem, but other than that the problem sets are identical.","description_html":"\u003cp\u003eThis problem is similar to \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/1092-decimation\"\u003ehttp://www.mathworks.com/matlabcentral/cody/problems/1092-decimation\u003c/a\u003e, only this time the score will be based on how quickly you can determine which person will survive.\u003c/p\u003e\u003cp\u003eThe sample sizes (num_prisoners) and number of prisoners killed (num_killed) will be larger than in the original problem, but other than that the problem sets are identical.\u003c/p\u003e","function_template":"function y = speed_decimation(num_prisoners, num_killed)\r\n  y = num_prisoners+num_killed;\r\nend","test_suite":"%%\r\nassert(isequal(speed_decimation(10,3),4))\r\n%%\r\nassert(isequal(speed_decimation(1024,3),676))\r\n%%\r\nassert(isequal(speed_decimation(2012,50),543))\r\n%%\r\nassert(isequal(speed_decimation(30,5),3))\r\n%%\r\nassert(isequal(speed_decimation(10,10),8))\r\n%%\r\nassert(isequal(speed_decimation(2048,2),1))\r\n%%\r\nassert(isequal(speed_decimation(2048,1024),1773))\r\n%%\r\nt_in=clock;\r\nj=1:50;\r\nv=arrayfun(@(x) speed_decimation(100000,x),j);\r\ncorrect=[100000 68929 92620 32942 40333 54212 27152 67341 42610 77328 82991 13252 91717 6850 45758 71249 38339 86953 63331 66903 72606 83990 87828 46101 99979 47141 16871 60389 51549 76409 42868 78390 79590 27573 95835 53636 36954 39891 45943 63811 71589 70886 49313 4069 93694 96031 20739 41403 93714 60023];\r\nassert(all(isequal(v,correct)));\r\nt_out=etime(clock,t_in)*1000;\r\nfprintf('Actual Time = %.0f msec\\n',t_out)\r\nv=[100000:100000:1000000];\r\nv=arrayfun(@(x) speed_decimation(x,17),v);\r\ncorrect=[38339 162859 151602 99465 462955 559860 337009 546467 563784 364193];\r\nassert(all(isequal(v,correct)));\r\nt_out=etime(clock,t_in)*1000;\r\nfprintf('Actual Time = %.0f msec\\n',t_out)\r\nassert(isequal(speed_decimation(2^20,2^9),210856));\r\nt_out=etime(clock,t_in)*1000;\r\nt2=min(100000,t_out);\r\nfprintf('Actual Time = %.0f msec\\n',t_out)\r\nfeval(@assignin,'caller','score',floor(t2));","published":true,"deleted":false,"likes_count":9,"comments_count":2,"created_by":1615,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":224,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":13,"created_at":"2013-10-16T19:58:38.000Z","updated_at":"2026-04-08T14:54:11.000Z","published_at":"2013-10-16T19:58:38.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is similar to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/1092-decimation\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ehttp://www.mathworks.com/matlabcentral/cody/problems/1092-decimation\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, only this time the score will be based on how quickly you can determine which person will survive.\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 sample sizes (num_prisoners) and number of prisoners killed (num_killed) will be larger than in the original problem, but other than that the problem sets are identical.\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:\"carnage maximus\"","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:\"carnage maximus\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"carnage maximus\"","","\"","carnage maximus","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f3034334120\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f3034334080\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f30343337c0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f30343343a0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f3034334300\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f3034334260\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f30343341c0\u003e":"tag:\"carnage maximus\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f30343341c0\u003e":"tag:\"carnage maximus\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"cody-search","password":"78X075ddcV44","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"carnage maximus\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"carnage maximus\"","","\"","carnage maximus","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f3034334120\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f3034334080\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f30343337c0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f30343343a0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f3034334300\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f3034334260\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f30343341c0\u003e":"tag:\"carnage maximus\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f30343341c0\u003e":"tag:\"carnage maximus\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":1092,"difficulty_rating":"medium-hard"},{"id":1940,"difficulty_rating":"medium-hard"}]}}