{"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":47603,"title":"Cipher or Decipher the number according to the second input   -  1 key for all digits","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 251.509px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 406.495px 125.749px; transform-origin: 406.5px 125.755px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou will be given a input number (eg)  x=12345 and y=1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 41.8909px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 20.9455px; text-align: left; transform-origin: 383.504px 20.9455px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eyou have to figure out the chiper keys and match it with given input and Cipher or Decipher the number according to the second input \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eeg  x=12345\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; cipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e---\u0026gt; These are not real keys , just an example\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput y=23456\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif y==2 and x==23456\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput=12345;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function d = cyp(x,y)\r\n\r\nend","test_suite":"%%\r\nfiletext = fileread('cyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, '-')),'- is forbidden')\r\n%%\r\nx=round(26740*561311/56151);y=1;\r\nd=903154;\r\nassert(isequal(cyp(x,y),d))\r\n%%\r\ny=2;\r\nx=1561615;\r\nassert(isequal(cyp(x,y),3093930))\r\n%%\r\nx=round(log(152385*15275445))*2511;\r\ny=2;\r\nassert(isequal(cyp(x,y),46761))\r\n%%\r\nx=round(sqrt(158485*1555)/211);\r\ny=1;\r\nassert(isequal(cyp(x,y),37))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":11,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-11-23T18:43:37.000Z","updated_at":"2025-11-22T16:51:43.000Z","published_at":"2020-12-04T18:03:22.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given a input number (eg)  x=12345 and y=1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eyou have to figure out the chiper keys and match it with given input and Cipher or Decipher the number according to the second input \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\u003eeg  x=12345\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\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; cipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e---\u0026gt; These are not real keys , just an example\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput y=23456\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\u003eif y==2 and x==23456\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput=12345;\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":751,"title":"Implement simple rotation cypher","description":"If given a letter from the set:\r\n\r\n  [abc...xyz]\r\n\r\nand a shift, implement a shift cypher.\r\n\r\nExample:\r\n\r\n  'abc' \r\n\r\nwith a shift of -1 yields\r\n\r\n  'zab'\r\n\r\n\r\n\r\n\r\n","description_html":"\u003cp\u003eIf given a letter from the set:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e[abc...xyz]\r\n\u003c/pre\u003e\u003cp\u003eand a shift, implement a shift cypher.\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e'abc' \r\n\u003c/pre\u003e\u003cp\u003ewith a shift of -1 yields\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e'zab'\r\n\u003c/pre\u003e","function_template":"function outStr = cypher(inStr, shift)\r\n  outStr = inStr;\r\nend","test_suite":"%%\r\ninStr = 'doug';\r\nshift = 10;\r\noutStr = 'nyeq';\r\n\r\nassert(isequal(cypher(inStr, shift),outStr))\r\n\r\n%%\r\ninStr = 'thequickbrownfox';\r\nshift = 5;\r\noutStr = 'ymjvznhpgwtbsktc';\r\n\r\nassert(isequal(cypher(inStr, shift),outStr))\r\n\r\n%%\r\ninStr = 'thecrowfliesatmidnight';\r\nshift = 22;\r\noutStr = 'pdaynksbheaowpiezjecdp';\r\n\r\nassert(isequal(cypher(inStr, shift),outStr))","published":true,"deleted":false,"likes_count":13,"comments_count":2,"created_by":240,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1096,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":6,"created_at":"2012-06-06T15:38:43.000Z","updated_at":"2026-02-19T13:12:57.000Z","published_at":"2012-06-08T19:08:23.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\u003eIf given a letter from the set:\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[[abc...xyz]]]\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\u003eand a shift, implement a shift cypher.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA['abc']]\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\u003ewith a shift of -1 yields\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['zab']]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":56185,"title":"Extract the Acrostic Message","description":"An acrostic cipher is a way of embedding one message within another by taking the first (or last) word of each line. Given a string s, and a positive integer n, return a string containing the message you would get by taking the first word on each line, having written the message in s with n words on each line.\r\n\r\nYou do not need to worry about punctuation. A \"word\" is anything separated by a space. The input message will use only single spaces (and no line breaks or other whitespace). Similarly, the output message should use only single spaces between words.\r\nNote that the number of words in s is not necessarily a multiple of n.\r\nAlso note that this problem can be solved more directly than using the method described above.\r\nt = \"This week's Cody challenge is designed to test an essential skill that's easy to have a problem with.\";\r\nacrostic(t,4)\r\n\r\nans = \r\n    \"This is an easy problem\"","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 783.667px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 460.5px 391.833px; transform-origin: 460.5px 391.833px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 64px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 32px; text-align: left; transform-origin: 384px 32px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 381.5px 8px; transform-origin: 381.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAn acrostic cipher is a way of embedding one message within another by taking the first (or last) word of each line. Given a string \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 4px 8px; transform-origin: 4px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; perspective-origin: 4px 8.5px; transform-origin: 4px 8.5px; \"\u003es\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 74px 8px; transform-origin: 74px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e, and a positive integer \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 4px 8px; transform-origin: 4px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-style: italic; \"\u003en\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 273.5px 8px; transform-origin: 273.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e, return a string containing the message you would get by taking the first word on each line, having written the message in \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 4px 8px; transform-origin: 4px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; perspective-origin: 4px 8.5px; transform-origin: 4px 8.5px; \"\u003es\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 16px 8px; transform-origin: 16px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e with \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 4px 8px; transform-origin: 4px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-style: italic; \"\u003en\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 63px 8px; transform-origin: 63px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e words on each line.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 466.5px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 233.25px; text-align: left; transform-origin: 384px 233.25px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline;width: 585px;height: 461px\" src=\"data:image/png;base64,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MFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1Khw9/S7zIsjm9f51gLys43/j2yOUOZOWn5l80GeWED+1sn6558/2cYLiEiYGhHpnohIFyMi9SEiwUREwtSISPdERLoYEakPEQkmIhKmRkS6JyLSxYhIfYhIMBGRMDUi0j0RkS5GROpDRIKJiISpEZHuiYh0MSJSHyISTEQkTI2IdE9EpIsRkfoQkWAiImFqRKR7IiJdjIjUh4gEExEJUyMi3RMR6WJEpD5EpPf4+X1oICMiYWpEpHsiIl2MiNSHiPQeZ1/vNEQk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\" data-image-state=\"image-loaded\" width=\"585\" height=\"461\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 381px 8px; transform-origin: 381px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou do not need to worry about punctuation. A \"word\" is anything separated by a space. The input message will use only single spaces (and no line breaks or other whitespace). Similarly, the output message should use only single spaces between words.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 212.5px 8px; transform-origin: 212.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote that the number of words in s is not necessarily a multiple of n.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 301.5px 8px; transform-origin: 301.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAlso note that this problem can be solved more directly than using the method described above.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 457.5px 51.0833px; transform-origin: 457.5px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 432px 8.5px; tab-size: 4; transform-origin: 432px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 16px 8.5px; transform-origin: 16px 8.5px; \"\u003et = \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 412px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 412px 8.5px; \"\u003e\"This week's Cody challenge is designed to test an essential skill that's easy to have a problem with.\"\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 4px 8.5px; transform-origin: 4px 8.5px; \"\u003e;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 52px 8.5px; tab-size: 4; transform-origin: 52px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eacrostic(t,4)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; tab-size: 4; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 24px 8.5px; tab-size: 4; transform-origin: 24px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eans = \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 16px 8.5px; transform-origin: 16px 8.5px; \"\u003e    \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 100px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 100px 8.5px; \"\u003e\"This is an easy problem\"\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = acrostic(t,n)\r\n  t = t(1:n);\r\nend","test_suite":"%%\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,1);\r\nassert( isequal(s,\"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,2);\r\nassert( isequal(s,\"We these to selfevident all are equal they endowed their with unalienable that these Life and pursuit Happiness to these Governments instituted Men their powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,3);\r\nassert( isequal(s,\"We truths selfevident men equal are their certain that are and of to rights instituted deriving powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,4);\r\nassert( isequal(s,\"We to all equal endowed with that Life pursuit to Governments Men powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,5);\r\nassert( isequal(s,\"We be are are with among and That Governments deriving\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,6);\r\nassert( isequal(s,\"We selfevident equal their that and to instituted powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,7);\r\nassert( isequal(s,\"We that they certain Life That instituted\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,8);\r\nassert( isequal(s,\"We all endowed that pursuit Governments powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,9);\r\nassert( isequal(s,\"We men their are to deriving\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,10);\r\nassert( isequal(s,\"We are with and Governments\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,11);\r\nassert( isequal(s,\"We created unalienable of Men\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,12);\r\nassert( isequal(s,\"We equal that to powers\") )\r\n%% Randomly generated\r\nfor k = 1:10\r\n  s = [\"It\",\"is\",\"a\",\"truth\",\"universally\",\"acknowledged\",\"that\",\"single\",\"man\",\"in\",\"possession\",\"of\",\"good\",\"fortune\",\"must\",\"be\",\"want\",\"wife\"];\r\n    n = randi(numel(s),1,randi(20));\r\n    tout = s(n);\r\n    n = randi(20);\r\n    tin = join(repelem(tout,1,n),\" \");\r\n    tout = join(tout,\" \");\r\n    assert( isequal(acrostic(tin,n),tout) )\r\nend","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":571375,"edited_by":287,"edited_at":"2022-10-24T13:22:25.000Z","deleted_by":null,"deleted_at":null,"solvers_count":120,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2022-09-30T17:58:36.000Z","updated_at":"2026-03-11T20:45:20.000Z","published_at":"2022-10-24T13:12:34.000Z","restored_at":null,"restored_by":null,"spam":null,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAn acrostic cipher is a way of embedding one message within another by taking the first (or last) word of each line. Given a string \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and a positive integer \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, return a string containing the message you would get by taking the first word on each line, having written the message in \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e with \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e words on each line.\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:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"461\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"585\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"baseline\\\"/\u003e\u003cw:attr w:name=\\\"altText\\\" w:val=\\\"\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId1\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\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 do not need to worry about punctuation. A \\\"word\\\" is anything separated by a space. The input message will use only single spaces (and no line breaks or other whitespace). Similarly, the output message should use only single spaces between words.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote that the number of words in s is not necessarily a multiple of n.\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\u003eAlso note that this problem can be solved more directly than using the method described above.\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[t = \\\"This week's Cody challenge is designed to test an essential skill that's easy to have a problem with.\\\";\\nacrostic(t,4)\\n\\nans = \\n    \\\"This is an easy problem\\\"]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.png\",\"relationshipId\":\"rId1\"}]},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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MFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1Khw9/S7zIsjm9f51gLys43/j2yOUOZOWn5l80GeWED+1sn6558/2cYLiEiYGhHpnohIFyMi9SEiwUREwtSISPdERLoYEakPEQkmIhKmRkS6JyLSxYhIfYhIMBGRMDUi0j0RkS5GROpDRIKJiISpEZHuiYh0MSJSHyISTEQkTI2IdE9EpIsRkfoQkWAiImFqRKR7IiJdjIjUh4gEExEJUyMi3RMR6WJEpD5EpPf4+X1oICMiYWpEpHsiIl2MiNSHiPQeZ1/vNEQkTI2I9Bm/7iP2lT8XEpEu1h2R6pkmIk3ugogky+2BC4SIhKkRkT5CKt7xGktEulhvRFJmmog0uQsiklyRiLSHiIRzEZE+QT43X0g4RKSLdUYkbaaJSJM7PyLd5nV/PyISpkZE+oRlUFeHPxOJSBfrjEhbLyeZaSLS5M6PSLLaHrg+iEiYGxHpA/xnJBFpXn0RSZ1pItLkzo9IckHZehQiEqZGRPqA+MG5/9O+DUSki41GpKQjEWlyp0ekB38TiYiEuRGRPsCXWL6LNK++iKTONBFpcqdHJLmebD0LEQlTIyJ9wjKoK9keR0S6WF9EUmeaiDS5syOSLJhHfhOJiIS5EZFe9bPJyunrNZaIdLHOiKTNNBFpJn/yAsvm4oMRSS6Wn1nWmmw9DBEJUyMivUr9LP1bWotCOISIdLHOiKTNNBFpJkoe+mRE2s6cL6ut7ZnfRCIiYW5EpFc1Pkv/XquvRKSL9UYkZaaJSDO5PiJJm2w9DREJUyMivar/s3QEEeliL0wrEWkm10ekremh30QiImFuRKRXEZEeiYjUh4g0RFlWslxk63GISJgaEelVRKRHIiL1ISINUZbV1vTUbyIRkTA3ItKriEiPRETqQ0QaoiyrrUU2noeIhKkRkV5FRHokIlIfItKQelltLY/9JhIRCXMjIr2KiPRIRKQ+RKQh9bLaGmTjgYhImBoR6VVEpEciIvUhIg2pltW2WJ77TSQiEuZGRHoVEemRiEh9iEhDqmW1NcjGExGRMDUi0quISI9EROpDRBpSLat188HfRCIiYW5EpFcRkR6JiNSHiDSkXFbbtmw8EhHphn5/1oX38zu0xI8dNTsi0qte+Cw1EJEu9sK0EpFmcvF3kZb/xt+Tv4lERLqdX1mEm3WRJy1Fel8tbet/jDJ49JLN3a3C/UlSNaOq67T0+GnN03YO8wzbKayTRNK30XU7z8hn6a9c+9e4QSLSOZpLZXxaAyLSTPYjkv3+Bz2vtbas/tTTbiezTjUJItK95FFn4dZY0taISNpR3+FWFa6cPb1ApL206uI/oZzGf2s/6bGoSl9WIrPOxQmrdSOfi9YfQ9XzyWa8EeVj9hqPLiDGUpGpzSOSn9fYrs20MnfSYn/GTmnqiBTnM1imqPv9T3S81q1qUdsrcTMhIt1Ktk7FbxGHNlmbsnabr8LD3KnCKdOg1Id8jvOPMKeIWco8KnWxqHxJiaw6ZxdU7nhtz2psplqh2/lkIz6u7yeb13lwATGXiuzLpjsuhtCszbQyd9Iy+8ed4uERqepRFZxV12vdqhaVosTVVWQmRKQ7UdagI39zswoLPG1TD5t7XXa7T4VTytWinIdqsqRdVGepPpUai0T2rmKJVG4q7amca22PJ8iV3yZbLZ3kSyLSieylIjOVznY8ILZqM01EmoXyei9TFCdV6ZBVik3na92qFqWqX1lGpkJEuhFtoRbC+t7vKx0f7jYVrjkheX2oa1ZesurT7B0vtM/CP7V30lO56bU9nGDdChoXd73kKyLSieylInuTyY6zpzSmhxKRZqG8kFlEUl/YvOA4ai/ltW5Vi0L+PaRFdcWZEJHuQ1mBlbDY9js/sJwp7lLhjPlIP320apQWEO00e8cL7XNP/r8QT9gqeuEE65bXvPgfEel8O0tFdsdVEWcvXXDaTBORZqG8kVlEkv8v5G91/2vdqhYF2ZWaed0QkW6juVJTAxHp+k+nM9ykwqWT9/PrpPOTlKTwJ6yf5K9HZd9CWrLdaX1JT7teJmnQPg037mzpgbFj2irWdn+CvJhK4yY7Z/0RSkT6tG18m0tFGsNcxzWRJiR1polIsyhfdGeZou73fyWtG+u1Ts8hth2Z0Cu9ZpHKZkJEug1lAdbC6u7oPfGy7HeTCrcO+Cp8isS/4E9Kkm9Z5kY6pD/N6D+c1pPIRvqxFBJWclRsC01ZiQzHxyWjNAVru/bBmXb2J/iTi/td8V79XcnmdZ5aQPwAr0MuG3H4w2z5tReXRP4Bqc20MnfSkl7gIR4fkcKv1Srv/6L/tU56etuOjOxZl5lS4qZDRLoLX5dsrYi0/t63X9kiexGe6h4VLsxG9vkTpqPMLr7XcpiWQqRt6Z2dMJa+9KiQxULfpESmx4fm7KRytHqh9DJxcTXuyYlLzveWzes8tYDsLJViWuMs5b3MmZbNhbQ8sKRMHZEWygwm72Q63aE5bRx7rdVqkZHz+Q6uP7/RliIiHbYurOjn9/fv7zeuXxGWpixV4ddwtrCv/3g6wS0qnFp7nNAu275+hJqRfTI52+5wlt/ifGHSi8N8e70M8hNU97PQip7vmF5HmqqLx4sRkU60DW9zqeTTGueoDDnaTCtzJy3l0Q/w7Ii0//5LS+drrVaLjCyecEjHP217b0Skm8jDUFhX5a9jhqWZtccFmy7s6z+eTnCLCucnoyocflZ9+ZGORTUKZPZa9SdMbnW8tPsD4yooevoblc2VtGUX9SdIDg8Lrrp4suZiOSQifdbOUsmntbke1JkmIk1FmcHmfNfv/+BrrVaLjHSoTjctItJNhKW6SBdgslKdsCfrL20LaVk9Z5m23aLCraPtyGZCdvgaI7PW+qTxcy2bJf/RVR9efKiFNVP21M6gFT1/gmQFSYt273GJxp1EpM/aWSrZtMb5qSuCMtNEpKkoMxgmfP/9l4be11qtFhnp8JzPHiLSTazrSuTrzy/rlRqR0v5p7+cs07Y7VLi68ARF/dopMNrnVUL2ah+L+YlDcatOJO3pnWr3VN+If0b11sOii+f1TbJ5nYdHpOY7Hqc1rAats3YeZe6kRVnhs3t0RKomXNrDPI6+1nsV7EYv/rsQke4hrMZFsbBlVa7C0kwb08IV6+EjC1rlDhXOz4VsZmSXTKlZkRzZXZe2hZ9abVrlxHLesAi2zYS0p6fQil5ddv0zmneWnPc2lfKpBWQb3saEOGFaY0XQutYzrc6dtDywojw6Isl2JO1hHkdfa7VaZPZK3HSISPfgl+qirEOxxiULLz1AmlZp5wcWtModKtw62I3hlorh921bjj43vr6ovwVipo5sn18E9UWUCqcVPX+CeBfS0Ch8/tbiBc2bPdNTC4i5VBw/rbEgmB+D6U5l7qRFX7VTe3JE2n//t83+11qtFpmd9TYfItI9rGtKSFMUqmGyNGWprqRpI22LBxa0yg0qXLsgOTJ3ft7itKm/6RHrS/znTAJ/rGzmZN92UH+JdLSi508Q7sF8Rm238jF7jacWEHOpOH5at/9z9E+saqYdItJMlBlsv63Fy97uuFJ2a9UiF1dcY8lNhoh0C34tLurVl+wNO5OFmB8gjYsHFrTKDSpcSLDLv0xbkX3SN5toZX6Saa0++aTZvMx2ynblk37pklGawgnCHfhnbBU92R0vSET6NGupOOnuRWPmqpl2iEgzUWaw+/0ffq3VapHzF189YMEQkW4hXVbKqpI9TliaSQXMl6s0Lh5Y0Cp3ikgW6ZsXEKXS5J9sWemSNtM25UrVFEqF04pedYK9xCO744ojIn2csVScfK+y0jbaUiEizUSZwe73f/i1VqtFwV99o36LcyZEpFtIP2WlKRXLXViaSQXMl6s0LohIpyg+jHShUOQFpK41xdligSkO1G2n6y6RC6WpPoHWKSX7iUhnai6VRbGzNXXaUiEizUSZwe73f/i13j1i4S8vJl80RKRb2IlIcXdYmkkFzJerNC6ISKdIpqItqVZF/7KOFQUmzG7Rrtt6d5fIhVb0qhNonVKyQolIp2otlUW1KvVqoC0VItJMlBnsfv+HX+vdIzbxA2tV38dEiEi3kC4paUrF3WFpJhUwX67SuCAinaL6MNKkVaL4J9OrcqMXmOLzULedq7tELrSiV51A65Sqaql/Btm8zrMLiL5UFvWqrFeDoy0VZe6khYh0P8oMdr//w6/17hFir8RNhIh0C2mlk6ZUXG9hrSVLMF9/0rggIp0irwYNebXKK0hdQPJPvu1YX/dM26m6S+RCaapPoHVKVbVU+Zi9xtMLiLZUFsqqrJeDvlSUuZMWItL9KDPY/f4Pv9a7RwT+Hjb7/W+LiHQL6XpSClksd2GpJRUwX37SuCAinaK7aqR+kwlUJuov++TbmmRD+6ArdJfIhXb71Qn2Eo+chIh0PmWpLOL6Cl9pK1RbKsrcSQsR6X6UGex+/4dfa7VaNPi7WM27cohIt5CupnpdJ7EnLM1YAYvlKo2LBxa0yg0q3ME0kH6ySVMq/UbTNpHZhqm7RC60oledYLiWHhyU9/uCAlIvFSe0/cUvlQ82bakocyctD6woRCRHNivVa12ewObvY1HfyySISLeQrqW6DCUfpmFphrJXLldpXDywoFXmjUjpvKozlXzyrdvydcesdpfIhVb0qhO0z7iR3fHeDg/Ku31FASmXiuNblhkLe+u1o02sMnfS8sCK8tURafi1VquFYafEzYCIdA/rKhLSFMX6F5em1raSxsUDC1rlBhVur84Y/Cw2Ko4/83bq/urUXSIX2mmrE/iGxpLylTDuJiKdK18qTjqtYWe9IrSlQkSaiTKD2qRuipfdd+x+rQeK0CaGd2mYDhHpHsJCcsr1GgtcsjSTA/LlKo2LBxa0yo0i0pHhlkNb9SOrUX7K1z2m7hK5UJqUE0hD4+L+1uIQEJFOVn6cZdMaS0i5JLSlQkSaiTKD/e//ttn/WqvVwrYdcINKcBAR6R58VVoVK9sv1EVYmkljvlylcfHAgla5Q4VbB9uRzdyv+c/L+nlv9ZHd6xSXH4K59D9n0l8iHa3o1Sewb1R2JremfMxe41siUrZUnHxaQ7nIptkhIi3P9bURafS1VquFzb7E/RGR7sEv6lW+/vwSW4VdoeaV3aVx8cCCVrlDhfMzpI53q33TLmabrCJtX+uxw91D/E++95dIRyt69Ql8S77YRFiM8Un9mMjmdb4mIhXzqG9WE6gtFWXupOWBFeW7I9Loa12dYF/7ZuZARLqJdRV56QLMElLcE5ZvuVylcfHAgla5Q4XzRUCrAts8pTuyTlp9k/9fZRXJz7lSn7bz+B3tqqRUOKVJO4G0aIsqPD8R6VztpVJP67bp5BOoLRUi0kyUGRx4/7ft7tdarRaV7GT+NLI5HSLSTcT1uAqLW5akF5Zm0p4vV2lcPLCgVW5R4fxk1IUjTJNsL/+ITTot5afR8s8lyZcr2b0dEtZIVfrCnrxjR4lUm7QThKjevnj6aESkTzOXSj2tcZayCdSWChFpJsoMapO6qV72wddarRYFd8p0ndymEhxERLqLdRklfv/+/rJ/X3AVlmayJ1+u0rh4YEGr3KLChWpSVo4wS9sO+Vf+kmq0bjvb1jbfyUl8eZGZDKcr6lmsZtuOgRKpFz3tBNJkXDxdcbcpjA8tIHtLpZ5W3yGfQG2mlbmTlgdWlC+PSIOvtVotMluH5GS7R9wcEeku0iXZFhaaLLxFvvikcfHAgla5R4WLs5EWmvgLr9sUhQ+p0Ml32GZKNuKEhjVRbudzXn34jZRItYRpJ4gXz9ZVvLgT9ygfs9d4ZgHZBtdYKsq0Fqtxo800EWkmygxqk7qpV8XYa61Wi0Q4LFzar7pplw4R6TbWhbQnLM1Q78rlKo2LBxa0yk0q3Dreq/BD0+m3AKVNtvzMlP9mSKgvco6wHSYyKVy+Lf3vT/iVMFIi1aKnniB5nvBbevKQfldccf6uZPM6zywg+0ulPdNZozbTytxJS5zfx/j2iDT2WmsnyGy7ne2Y+f9ZJCLSffh1bQpLM1nY+XKVxsUDC1rlJhUun7wfR75chcoj207Ww0+UbC6y/bLbyU5bXiYshCMlMltF6gmMZ/S74oojIn3WNrorfako0xonMM6TNtNEpJkoM6hN6sZcFYud11qtFqnkbNmp5l05RKT7yNeqLizNuPiK5SqNiwcWtMpdKpw1ebFSJbOWCBPYOEla6fQzrOI68OfpKpFKU+MEzWf8qz9CiUiftbtUrGlN+mkzTUSaiTKD2qRu7FVRUF5r9QQZ6VBo9789ItKN6KsrE5Za0jdfftK4ICKdqFloskKlTnHsoJ4kn9/mIkm6DZVIpal1gsYzul7yFRHpNHtLRZvWZPH4mdVmmog0E2UGG6+vo66KgddaP0EmrrFEfSfTICLdibq6/km/jx6Wpta2ksYFEelMjUJTFBNlitPyoZykrEb6IlHP0lUilabmCZL/XGq0dJIviUjn2Vkq2rQmi8e3azNNRJqJMoND77/T/1o3TpBRTlbfyDyISLeilD23GpM1F5am1raSxgUR6Vz+oyWR/mdBNmWnvWpVVxetoOX/lZOhEqk0GSeonnH7eWHZICKdyF4q2rQ6W6sjO7SZJiLNRJnBofd/1ftaN0+Q2ilxkyEi3Uv98eeWatIWVpvWtpLGBRHpbEVxqAPSIpviuor5+rbSq0u5Ssr/DNxQiVSajBNkv0EXn1A24/MqH7PXeHIBsZaKNq1OPGTbo820MnfS8sCKQkRadb7W7ROkspOFX/GdFBHpbvKPv3VxJi1haWptK2lcPLCgVe5W4f5+pTz8/LaH/1f+4b/Gf+FWzvGjJ6yNnMJNcuMkH+T/SVPr/m7j2QWkZ6nAMn1Eepu3vtaSkh6wLolIN7StVVf2qHu7qHAwfWMBQT8KCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMRCRMjQoHEwUEFgoITEQkTI0KBxMFBBYKCExEJEyNCgcTBQQWCghMt49I/3Y3+K//BnT/WSrcf2QDKP2LAgIDBQSmpYD8W9LIG7w/Iv3XsoIBAABO91+SRt6AiAQAAJ6CiAQAAFAhIgEAAFRuHZH4cW1Y+GlLmPhxbVgoIDDd/se1+Z1dWPidXZgoILBQQGC6/S/9U+FgocLBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsFEAYGFAgITEQlTo8LBRAGBhQICExEJU6PCwUQBgYUCAhMRCVOjwsH0hALytyxy50+28T4UEJiISJgaFQ4mIhIsFBCYiEiYGhUOJiISLBQQmIhImBoVDiYiEiwUEJiISJgaFQ4mIhIsFBCYiEiYGhUOJiISLBQQmIhImBoVDiYiEiwUEJiISJgaFQ4mIhIsFBCYiEiYGhUOJiISLBQQmIhImBoVDiYiEiwUEJiISJgaFQ4mIhIsFBCYiEiYGhUOJiISLBQQmIhImBoVDiYiEiwUEJiISJgaFQ4mIhIsFBCYiEiYGhUOJiISLBQQmIhImBoVDiYiEiwUEJiISJgaFQ4mIhIsFBCYiEiYGhUOJiISLBQQmIhImNrXVrifDZ+aO4hIsBCRYCIiYWrfG5GWB//nnx/ZRAMRCRYiEkxEJEyNiAQTEQkWIhJMRCRMjYgEExEJFiISTEQkTI2IBBMRCRYiEkxEJEyNiAQTEQkWIhJMRCRMjYgEExEJFiISTEQkTI2IBBMRCRYiEkxEJEyNiAQTEQkWIhJMRCRMjYgEExEJFiISTEQkTI2IBBMRCRYiEkxEJEyNiAQTEQkWIhJMRCRMjYgEExEJFiISTESkc/3++I+2X7ve/f2uHX9+fqXBImf9+d056QMRkWAiIsFCRIKJiHSiLfVEzUDz9ys9VuunoK+Si/ywv/ys/qRZq3ahrIO0zYeIpPNZ/Btjc+aBEanzj0+/Um/etwL+5Mqdf3KbAhEp+PvdPndczZAWEJFOVAakxY9avLKAtHCfg82IVHWWk6YHaBEoO27eV+IrK5yykmTPpsri0v6NHheR8j8+NdOP2k02l/Xgl4i+NvzeNIEXleYhKYmIJPI/asvk+jnftr4SEeksysfaoq4zxXeFVj9/rYiknnY9abanrqTZbmmbEBFpI3sW2pJ4xsfZEQ+LSPmffBz924hFnPHdZGNZDeFE646S7EvqRnXhpSrJvpkRkVb1p846uUQkItJJtNyzKUucUooWac1LKlPjtEuP7ETVR2S2Vy+zUyAibWRPc/2ki+arPCsiKbOrvLxqtVkWgHyZ/RFKS8++2sRz64Vm4sLhEZEWVaR2lsklIhGRztH63FrkZcbq6cVPu0bvreplVW1tSZg7J0JE2siexkfZ4gEfZ0c8KiKp73s1sY2q4MqGfLXWh9BrPSYne0KlaZzxCYuKiOQ0AzARiYh0jnWZtaRlplmLUjEiNZf2IjtX+WdFaV7NXOeISJv2nmD+j7MjHhWR5P8LsR6smjXkL4tIYa3U30Yqv4lkVKXpFxURqV01fohIRKRzWB9cTlLidnpuQn/t26OO7M1PJm3C2DUXItKmuSPxlRnpSRHJ+3Hky0Uxr9K6ybrmESmcdd1K+SN8oUkv9uukV599URGRio+RdMXIr7jN/RHxIiLSCYol+Pv3l/9Wf1yAxh/XEiEipaXrJ5w17M7OluQwRxpXUxc5ItKmat9+4Shfad+YkR4XkcKv8MfZzr4PlCwC3+4Xgd8l7bJVlIb6m0hxCcUf0I5t5dGTISIlqyvMr/+dWL9ipPkbEZFOsC4yL5Qt2V6EEifbO0JRku2FtLmzJp+DSbXMy2j6uTl3jfvaCudrmGwukllNZztpnvzj7IiHRaR0vkOzvgjS1qzc+NUR2rbNoEhS8dB0+YQfCc8uMx8i0jqLq6w8pB8eRKS3ISIpGnkkLVrSlPV0fn///vw/AJfw50jOEOrUX/rhmNXFdP2np5y7xBGRoq3FKac0TndWBL/CsyJSPrOhXbYX0lJNdVoLfI2QzaKrr0L+WmH1FGf07WnFmc/XR6TwodOuGkQk+foNiEiKdKk1Aow0y5YI31Evk5PS3ihTjUtnJ6TCTUmmNqlrYbLLWmfuerpnRaRGSpFNJ8x00VMrN6EpXxX+FNIrHFedUdrnXlPfHpHC9BpVg4gkX78BEamWlKZiGUrjYt1Oe+YVKVmsTn9Eys4obU56usk/NIlInlHrkhmvPuee7lERqXzNfQWI7dKgFYRYDMJO2c5Whe/ml1F9Dc/vkc05fXtECh8isp2KnxPS8I2ISB+XBJmizCQBZq1Rac/is0waN0pEan30pWEodEmuq9bSmRCRPD/Veub1eyef7nGPikjVWy7tYVZ9SVAXQagXobs/cboqypUim8ZHqL7iJvHtEWmdQUf9AJF9RCT5+g2ISDVfchbS5Emrsy5Q+XpVlJ0s1fjVnEUq/bMvO07asjuaurw5RCRv227UurgQZPtrPCoiyXYk7eHl96+2ugjCaWKtkIa0v7T4heUP0uqLFCAi0rz89OpzGD4pZPsbEZE+bl1im3IdSrOzFKBQwRZbhyiNNb6eZQe4c2h1UTtONld6spoHEUmY3z9w/H71w/PBnhSR6pe1XAXbZmsR+DUQz1Of2RcM3+KPkc2ctW8SXx6RdsqC7CUivQ0RqVLkmIalpvnVuqiLoexYhOUs21F9WHp52ZumpunXPhFJ+FmVzUr7Y/bZvioi7Uyyslta4rKR7b51Jftmjt1fHpF2ysZeVfkCRKRPS4OPwfX0y3FRF51kb9ipnLv6VlJ61q1FNlbTf2ASkUS5Xdn2f121+6qItPM9Ab8GkvP4I3xTuR2WzfKPLldk38xV5Msj0jp/7bLhl4NsfiMi0qcpMUbjetZhJpWcJxRAXzozRb1K+6y7shtau8yMiCS2TePT6kur3ZMiUvMPTmVEks2K7E4XiTT5Q2QrfmRKg4mINK11/toz+KVFI0VE+rQ0+Bhc9ZOvFsqKTaJOrJRZ3AnySlomL/lyNXNt2xCRxLZpzKhfK/Xn7KN9VUQqF0VJ9qeLJF8Wfiv0UP8UVmpebwLfHZHaK2vj98vmNyIifVqaUAxujcpXC+2DTnY5yXrWz54t+LTIuR1ZqpIuEyMibfZqXU+PRyIiJeTlz8rL1iS1QL6OhSGtHk1EpFntFgXZL1vfiIj0aZ+NSHniCbIVn9yBO296PzOXNkFE2hCRGohICS0i+QqynNx/HTsQkR6NiLSLiPRpaSQxuDUqXy2UiJTUqmw9h/+cZCqrWWmVy/7D709Y+ESkzW6t6+jxSESkhBaRfN1ZDvK1ZNuxSItHU/N6EyAiLZpFQfbL1jciIn1ammB+/prynkrNSWpVsZ7z2LPJuiQnzv6buDNXNo+ItPHLQwnXwq8S2fwWXxWR9uZYuueLxB/0p3wTaf8zdHbfHZF8BGqVDT/9svmNiEifluaX9ufXIkkvSnhJzlOXq/Qiq+xKSbrKPKHsEZHEtmksMb9GZPNbEJESakSK30byFUjaV9Jkl66JEZEWreklIhGRPu5QRFKWpOxYaNGm/FaSNG/SM0dKDpsPEUlsm0YxKw/4El8VkdodN7K7qEO+dIT/l/aV1vYkXx6RdqrCXub+AkSkT0u/hWN/PJlhKj2NXgDTHsWaznd5rTo6FSKS8KunOauyn4g0n3byaUSkRqBRM1BdHqR58/RkTURayWZJ9hKR3oaIVMnqj7TpzJ5+KS92/oy4yvukR3vPKHpEJLHz6RiWwGO/HdDwVRFp5yOttQbSP5yVe/0xsvk4Xx6RGqlZhI8k2f5GRKSPW5eYKGrc+lPakXRaFQEmi0+tiJRWurxPdrh4xmclEcnbtlur42uL3XdFJPt7ibKzevXz8iCNwv4M/Zm+inx5RPJrovi8EeETRba/ERHp49LgkheUtTL9/Ib/rJr/A9sqL3LSuEl2ZSdMK11RI7NTr/R3YjpEJM+vM31i/QJ4yLT3+66I5Huq0xyKQJVr2jUqlh7ZzLjjfuqbmsq3RyS/KLRpjB8o0vCNiEgflwaXfCGGkiV1KS1UWdfi3z6Ke/6yWpgeL01edhOrqkzOiYjkhSnWPh7DApr8A23cd0Wk5jeKnFgDqp1peZCmwC8dZVlth2nrbR7fHpHCh4Zsp+LHjjR8IyLS561rTKTlJC5AX7TSlqRvWsAWoVIuO5IzpodLUyDNwdx1LSIiBWH667k1dj3dl0Wk8IlX9U2qSJ2f4p+uqhUSjmufceY/bn17RAqfDEbVICLJ129ARFIktSldiMkC9Esw/zaS6/z796f8w5ChVm2n8JvpddqFTsxc1VJEpCBOcTn7calJwxf5sogU/yxUdE4LQP3yx73SkAirp3nG+r7m8fURKXy+tKsGEUm+fgMikmZdZMH2o0d58PE1K12Vbb4i+d4/6499Z2esi6Ds8KR1ekSkKPkUTOc/WRhPCcYDvi0ixUWQTfZOdQj7y89JJ54x2xnPOHNCIiLFD53sx8ryH+6Qxm9ERDpB8tGlC6UnK2RNspKtzluPVH4Tj/msJCIl0qr2u/265OP+izOjvi0ipYsg/CKIrAK/S3n7/SVkM5MUGn9k+r3tuVcVESn5ZAi/oOjn168Yaf5GRKQz7CWfWPqS+ta2dbeCl5aAZNdG2uZHRErZy+cbE9L3RaS8Lvw48qU7Xv5fKw//f3t3tN04biABdCfJ8Tjxvuz//+yKEigBBFhUT3psgbr3JSYEUTTJFKo5bvdt1vgWaW6rZo8Xk99VKlK4vB/rylVmviMV6Vs0N2GnTqw88+aWlKF3DVOrvHZ1nsVSRWqk2+c8F/1XvF1F2v+z09eaAaOKdHtX2dgKt9Xsd5WKtH95P+6LTJn4jlSk7/H00rWbb5WSlPv77KN006jK2AmoSK39m+I9G9IbVqS9DLm8u3w1qkjXXe3eI7u31fR3lYp0Mb68l2urIqlI32V/6drk1U6+1Q1nTcq950ijhnTSh0gqUtm82+vYw5viDbxhRdr+HrWb5c3ly2FFWj6kfDmwk1/z31Uq0mK0lCw3lYqkIn2bnT4z+OW0w3yrV777W8bL4TC2mo8vY2egInX24u49vWNFGtwDt5wpG8OKdNlXuktGtev+4+ATU5Gu+st7vUlUJBXp+wz/aDcMqz7f2jZUBVO/HO7EXP3hZ1ovVaSBzV0x/z+k9V94z4rU/JWzxx1QNsf3w9fBQrgNsDMUJBXprvm7r+vFVZFUpO+0/S2Q+0tXm2/L3bpTkbb73Gs/zaxTRFsh4Ya+Pte/5/3W/ejiTAHya77WW+DZO+D4j07rXfXH4x+WnJ0Aefgsf5ntNBf3d1CRvtcaW8dL1+12rf6R211ln5c97u+yfOrVmR4iSTiy961IPEOAEKlIb+G0D5EkHJkAIREgRCrSWzjtQyQJRyZASAQIkYr0Dpq/+Xaun02RcEQChESAEKlI7+C8D5EkHJkAIREgRCrSGzjxQyQJRyZASAQIkYr0BuqHSGf7DRcSjkiAkAgQIhXpDSwhsDrZQyQJRyZASAQIkYp0fmd+iCThyAQIiQAhUpHOb8mA1dkeIkk4MgFCIkCIVKTTO/VDJAlHJkBIBAiRinR6SwSsTvY3/i8kHJEAIREgRCrS2Z37IZKEIxMgJAKESEU6uyUBVud7iCThyAQIiQAhUpFOrvkHbMvYmUg4IgFCIkCIVKSTWwJgdcKHSBKOTICQCBAiFencmodIX2XwTCQckQAhESBEKtK5Lf//X53xIZKEIxMgJAKESEU6tdM/RJJwZAKERIAQqUinVv+N/1M+RJJwZAKERIAQqUhn1jxEOt2/PXIl4YgECIkAIVKRzuz8D5EkHJkAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQqUhMTcIRCRASAUKkIjE1CUckQEgECJGKxNQkHJEAIREgRCoSU5NwRAKERIAQvXxF+tflAP/5Hxj7c0m4P8sGbP1TgBAIEKIlQP5V2shv8Psr0j+WOxgA4Nv9o7SR30BFAgDOQkUCAOioSAAAnZeuSH5cm8RPWxL5cW0SAUL08j+u7e/skvg7u0QChESAEL38X/qXcCQSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoSjkiAkAgQIhWJqUk4IgFCIkCIVCSmJuGIBAiJACFSkZiahCMSICQChEhFYmoS7kkfy4n644+Psvk2BAiJACFSkZiahHuSigQ9AUKkIjE1CfckFQl6AoRIRXphX8v/e4uvMhb84vRzkHBPUpGgJ0CIVKQXpiIdk3BPUpGgJ0CIVKQXpiIdk3BPUpGgJ0CIVKQXpiIdk3BPUpGgJ0CIVKQXpiIdk3BPUpGgJ0CIVKQXpiIdk3BPUpGgJ0CIVKQXpiIdk3BPUpGgJ0CIVKQXpiIdk3Bfn5fi81k29qlI0BMgRCrSC1ORjr19wpWrflh9VCToqUhEKtILU5GOvXvC3S/60XMkFQl6KhKRivTCVKRj755wn9fLvSgDe1Qk6KlIRCrSC1ORjr17wl2v9lUZ2KMiQU9FIlKRXpiKdExFWh1cchUJeioSkYr0wlSkY++ecKX5XJSBPSoS9FQkIhXphalIx9494e4/i+THtcdUJBIViUhFemEq0rG3T7hh9fm4qe8CFQl6KhKRivTCVKRjEu76HGnzDGnQh1Qk6AkQIhXphalIxyTc5cJ3V1tFulORSAQIkYr0wlSkYxJuREW6U5FIBAiRivTCVKRjEm5ERbpTkUgECJGK9MJUpGMSbkRFulORSAQIkYr0wlSkYxJuREW6U5FIBAiRivTCVKRjEm5ERbpTkUgECJGK9MJUpGMSbkRFulORSAQIkYr0wlSkYxJuREW6U5FIBAiRivTCVKRjEm5ERbpTkUgECJGK9MJUpGMSbkRFulORSAQIkYr0wlSkYxJuREW6U5FIBAiRivRXfH4sC87HZ/8vP4zcZn9+dpO/Pj+vC9fHx+fw32kfdJ6v6zsubxh88kFFur314vLuMpTdv8uyXdyGR9/PTzhzwv31M7xe6bK5GAy9BRWJREUiUpEOlbVlcV1f1qZx1fxj6lfb6Y/tdnX6uv7zow+D3rLtPO1buvmpIh1/2ua4v+rv8jG5Ge6/+e935oR7ssoOlKtU33GboVJ0h137VFQkEhWJSEU6VJWCy/pS95CrbU/Yn14vWN1uFvWExabzVHu+2ayg+xVpW5CuNu9uj3vzWes3uT2En19f506460m8GHahy/UsX7XWi3C7XcrW497ZXqOLavg6rym64w8/DRWJREUiUpEOVcvJx2j92fSEZnrThB5LUbtEVdrVquk8za6KtlPtVqTRWy/acnfwbS5zB4f948vr3Al3r65lu3E528PTW95SrnG5Jr9SkboZ7R18LioSiYpEpCIdqhaU23+c6DRNpZ7edpP7erdTWRbNrup5o+dAF/XitleRdt56Uc86+jYvc8tXjZ9eXSdPuOs5vBidxmW8fFlbL065VcrmL1SkwYSfvop/IxWJREUiUpEODVaUrbrY7E9f16H9ynJRP9oJVepuZ3o1nI7/yWlXOzPK23/K5AkXHiNdX6ou0Oo6/aK8VK7K8xVpeBkHn3MSKhKJikSkIh0aN4PWU1WjTIgN6aJMu3imIlXtbFyR8sc95j3zbY788H9qmz3hrufwou8o1+G6fN+s13N95V59VoMLWQ1/jO+H/nPOQkUiUZGIVKRDT3WHZ6rG7fXD3vNYrZ6pSDvT78dzsI+4sj6nvP+HzJ5w28ZzV17oqtNt+PHCWn3K5vBCDoY/LsqXV31FOwkViURFIlKRDj3XHcrkMP22iD1Re+6r3VMVafwjTvcVr2wXn19f91+PdHN/93Pf5sDPLq7TJ9z1HF5sT2O5HtuHdF2lKvN+qSLdf5tAdcuUkdNRkUhUJCIV6dBz3eG4atwWsWf2tq6Wz1Wk++I2qkjNf1a5/5xTfRBlaHtgy+/FHP03maVktVO3i/j3mj7h1pO8OY33i1m2V+u5vzeqMvCoSIvBYHXR6jZ2H64Hz0RFIlGRiFSkQ9XacrO0h74+lNnd9Nuf2C/zb/9bRlefSxNpn+s8Vra+IvVPgS7WxXVUkcrmVbVgVrtY393utby/+2Zuw82BtYvzd5s/4a4n8aLtKPcz31an7iHSOrG9CoPBx6Ucf1D7OeehIpGoSEQq0qHH2nJ1X3Y2BWZcNaqV57oyldHi/lhnU7jKm7YV6b62bT6jjA4qUrOH29BNtYd+pDrqsl3cv/dmchn7GfMn3PgxUhm8KAM364l/1Jwy8nxFamfeb5H2489DRSJRkYhUpENNHWhWkvaV4eBjKbtqS0/9YvO2soq1s/d/HcCgUZW59V6bQ6k6WXl3cwC3oYu2u92/+ebzy9jPOEHCXU/iRdm8qs57fd3W817VnHLdnq9IZfuuDP/sZfz7qEgkKhKRinSo6Q7tn7WblwatZPsn9rZxNJ2lfd9tqC1Ct7GieWnQqMq+y9bVbWT1+Ljy7vrzH9/l3iGUgasy9DNOkHCjx0hlaDHqOdXUMtTeaYPB9a3txIv148vm2ahIJCoSkYp0qO4Om/WlKRBl2aqnd8tOGb7arlVl+Oq2r2b3baEafUxfkeqRegG+eJS1chz1DqvPKiNX1RHXXW9zZN/rBAl3v0pl+2KnSq8z61unXLf2bhoMrtd3cx+oSLw1FYlIRTpUd4cydNcsZbehenq7bm06Txm7q/d1e2NoOG136QvRbSQUmeql28DOt1kPV8cQ9vy9zpBw68l8nMj6rFenfR2ub4Yy9nRFKpsP623zo5fx76MikahIRCrSoWq52laetqjcRqrpXa+pi0XXefp99Z2n0u+rn14fy75+7nXgZqcLxUP7TmdIuPvJLNvrQNdqynZzG5ZJKtIOFYlERSJSkQ5V3aGMVPoGUU3vVp2dvlHU77wOVD2kL1R1o7othX1tKRsHbvuuPr1eWetDLkOL/rN+yCkSbj3J65ks1+KrnOXNcHszlEEVaYeKRKIiEalIh9a15aKMVPqqUE3v5qfXBgWq2vmgIlU7U5Hmtp7N9cTft25frCe+bNWX537dDgeH8xbrh6tIvCEViUhFOvToDv3y0lSFrmp0NagMLwadp3u52vlg/eo+qKst9UBw+7aq3dXfp4r0HdrHSGXrcg+Ur5rhza0zrD6DweG8xXopf/Qy/n1UJBIViUhFOvToDv3yMmg9O1Xjqowv/vuK1JUXFWla6+m8nfmy8Ri/3Sy3r7d31bD6DAaH8xbrZ6tIvCEViUhFOvToDs/Umr2qcVXGF79Yka6vt1SkxUkSbj3Ny7ksX19vgfJ1Nby9c4bVZzA4nLdQkXhjKhKRinTo0R2eqTV7VeOqjC+e2ZeKdOwkCbeez+W6lytRj1fD25tqODwY3Hn746NVJN6QikSkIh0qa8tFv7z89Yo02FddO7YVabB+/WJF+tp3fffOcatI32M9z1/rqS0X4bZxOfXrhNtd9jCsPoPB4bzFeilVJN6QikSkIh2qukMZqdQNIlaNq/RarjjbhfGivLK47ayvLWXj6joQ7BybivQ91hP6uV6IdvxrHd67p9rxweDe+++frCLxhlQkIhXpUFlbFv0qUr1YFrVqZG85uypDla5uVT1kf2Vb3ApUPaIizWY90eWi3a/BbfOP9YR3Xblct/YGGQwO5y3WPatIvCEViUhFOlR1h/5ZTnnh6jayUzWu6r7xxL7qHnIdqPX76mtLdSyHK+DOcatI36Q+oxf326NcgN2GM3xhMLi7AxWJN6YiEalIh6ru0C0jdYEoi081vVuOmmWwjN31+6qnd/sq41e3w+prS33ofSVr7Ry3ivRd6jNdX4IyctNfxWH1GQwO5y1UJN6YikSkIh2qe8ZmgWkqT1m9dqrGTXnh6nhfzdBmBauPqnSXvrYMGtyq/JD2w85xq0jfZXQzLcJFXAyrz2BwOG+xfq6KxBtSkYhUpENNGWn/FN+81I/1y1HzhnZNGrzULJrtU6fRejqoLWXr6jayWj7u4+Pz8f3sHLeK9G2eONXt7XdVrpuKtENFIlGRiFSkQ1V3uKgXkuaVde2pBvvlqF4Fw77KCtn0oGZv7StlP4PaUu+1OZpq7sdt7s5xq0jfpjqnTRV6XJn+hrq/2r40GBzOW6wf+6OX8e+jIpGoSEQq0qGqOyxKo9jWnfuqVk0frGjtzu4T6sZxUT5iM3r/iK/NIa3DZXNR9tAcY7UGNnu+De0ct4r0fR7nugzcPM714CHSuPoMBofzFuvuf/Qy/n1UJBIViUhFOrTpI5eF6vPr6/NzO1xm71WNYtOr/vi47OtrOzjqPFcft48uW6t7cyrbi3W9a47yvgg2Oy5v3zluFen73E/q5sYpo5vmVJTr1r5lMDict1g/dXMZL/fZ5xlak4pEoiIRqUiHmpax6/4H/J2qsXpmb+vK1DSZfWX2sLa0derjepSbh1DXebvHrSJ9o/UabM7oeg1GD5HW9/zuinQbHd3Bk1GRSFQkIhXpUNUd9j3Wkmr6aIF5ovbc3/bE3Iv70jasLYdHv87cOW4V6RuVs9rdN7fh4UOkcfUZDA7nLdZL2VzGdbCfPhsViURFIlKRDh2WjMVjfdmpGnd1uRh6vOtw6mI8/XE8ZWDP/e07x60ifafbReieFt0uwvAh0rj6DAaH8xbrpWwuYxnbqWUzUZFIVCQiFelQ1R12VctLNb1fjhZH+3vs66mKVOZejGvLwU7KrN3jVpG+0/W07rWYsrExrD6DweG8xXop68v4uLzjXjYRFYlERSJSkQ4dVZqLwVK06Jejq7zDaqWqe8ienenP7uUxb+e4VaRvtVyFQStZrsJOWSnXrb3XBoPDeYv1UtaX8XF5VSROTUUiUpEO1d2hLgwPzbJTTy9DW+O9XDVvaXpI+d+N8bq2P966/wKDi53jVpG+1XJey5e1neHFsPoMBofzFuulbC5jGfvhi/s7qEgkKhKRinSo6Q7Vxl27ijTTd2x/sdFd+2f2pofUG6v2A5rpZexq7+OaT9s5bhXpe32M75r9xznlurXvGgwO5y2GFel+N5TtealIJCoSkYp0qO0OXVPZrjnt9D3dr1VabH8PzaaHdG/J02uj51b1I6SLneNWkb7X17iU7AxflOvW3muDweG8xbAirdN/9Nr+FioSiYpEpCId2naHpm5sesbFdvqeriT1v6hv20Pap0HdY4VYW7Yf133aznGrSN9s56b59p8JWm6YM/zuSBWJREUiUpEO9d3h69o3mn8E9i+57Oe28+V3bJexA7d3LL9luwz8gvXTlo8rQ/OTcEQqEokAIVKRDvUVidch4YhUJBIBQqQiHVKRXpmEI1KRSAQIkYp0SEV6ZRKOSEUiESBEKtIhFemVSTgiFYlEgBCpSIdUpFcm4YhUJBIBQqQiHVKRXpmEI1KRSAQIkYp0SEV6ZRKOSEUiESBEKtIhFemVSTgiFYlEgBCpSIdUpFcm4YhUJBIBQqQiHVKRXpmEI1KRSAQIkYp0SEV6ZRKOSEUiESBEKtIhFemVSTgiFYlEgBCpSIdUpFcm4YhUJBIBQqQiHVKRXpmEI1KRSAQIkYp0SEV6ZRKOSEUiESBEKtIhFemVSTgiFYlEgBCpSIdUpFcm4YhUJBIBQqQiHVKRXpmEI1KRSAQIkYp0SEV6ZRKOSEUiESBEKtIhFemVSTgiFYlEgBCpSIdUpFcm4YhUJBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQIkYrE1CQckQAhESBEKhJTk3BEAoREgBCpSExNwhEJEBIBQqQiMTUJRyRASAQI0ctXpH9dDvCf/4GxP5eE+7NswNY/BQiBACFaAuRfpY38Br+/Iv1juYMBAL7dP0ob+Q1UJADgLFQkAICOigQA0HnpivS/f/7557/LD05B53J/+GFLdv1bgJAIEJIlQP63tJHf4PdXJACA6alIAAAdFQkAoKMiAQB0VCQAgI6KBADQUZEAADoqEgBAR0UCAOioSAAAHRUJAKCjIgEAdFQkAICOigQA0FGRAAA6KhIAQEdFAgDoqEgAAB0VCQCgoyIBAHRUJACAjooEANBRkQAAOioSAEBHRQIA6KhIAAAdFQkAoKMiAQB0VCQAgI6KBADQUZEAADoqEgBAR0UCAOioSAAAHRUJAKCjIgEAdFQkAICOigQA0FGRAAA6KhIAQEdFAgDoqEgAAB0VCQCgoyIBAHRUJACAjooEANBRkQAAOioSAEBHRQIA6KhIAAAdFQkAoKMiAQBs/d///D/UwvfS5nrpygAAAABJRU5ErkJggg==\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":47813,"title":"Cipher or Decipher the number according to the second input   -  3 keys","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 410.236px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 406.495px 205.113px; transform-origin: 406.5px 205.118px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou will be given a input number (eg)  x=12345 and y=1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eyou have to figure out the chiper keys and match it with given input and cipher it and decipher it according to second input\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; cipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;cipher_key_2=[ 3 4 5 6 7 8 9 0 1 2];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003ecipher_key_3=[ 2 3 4 5 6 7 8 9 0 1];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e---\u0026gt; These are not real keys , just an example\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eeg  x=12345\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif y=1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput y=23456\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif y=2  x=23456\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput=12345;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eHint : index :  1:3:end     -\u0026gt; key 1  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e                            2:3:end -\u0026gt; key 2 \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e                                3:3:end  -\u0026gt; key 3  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function d = cyp(x,y)\r\n\r\nend","test_suite":"%%\r\nfiletext = fileread('cyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, '-')),'- is forbidden')\r\n%%\r\nx=round(26740*561311/56151);\r\ny=1;\r\nassert(isequal(cyp(x,y),703894))\r\n%%\r\ny=2;\r\nx=1561615;\r\nassert(isequal(cyp(x,y),5535469))\r\n%%\r\nx=round(log(152385*15275445))*2511;\r\ny=2;\r\nassert(isequal(cyp(x,y),  26762))\r\n%%\r\nx=round(sqrt(158485*1555)/211);\r\ny=1;\r\nassert(isequal(cyp(x,y),26))","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":11,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-04T18:15:13.000Z","updated_at":"2025-11-22T16:53:13.000Z","published_at":"2020-12-04T18:30:51.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given a input number (eg)  x=12345 and y=1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eyou have to figure out the chiper keys and match it with given input and cipher it and decipher it according to second input\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; cipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;cipher_key_2=[ 3 4 5 6 7 8 9 0 1 2];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ecipher_key_3=[ 2 3 4 5 6 7 8 9 0 1];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e---\u0026gt; These are not real keys , just an example\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\u003eeg  x=12345\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\u003eif y=1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput y=23456\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\u003eif y=2  x=23456\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput=12345;\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\u003eHint : index :  1:3:end     -\u0026gt; key 1  \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                            2:3:end -\u0026gt; key 2 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                                3:3:end  -\u0026gt; key 3  \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":42525,"title":"Vigenere cipher - be like Sherlock Holmes!","description":"You're a young detective. Every detective needs a function to decrypt a vigenère cipher. It's a modification of a caesar cipher.\r\n\r\nLet's talk more about the algorithm:\r\n\r\n* Every letter is a number. A=0, B=1, C=2, (...), Z=26\r\n* Output should be presented in capital letters.\r\n* Use ONLY letters. Without interpunction, spaces, etc\r\n* Function has two arguments: encrypted text and key (both are strings). Your output will present a decrypted text. Let's show it on easy example from http://en.algoritmy.net/article/45623/Vigenere-cipher\r\n\r\n*Ciphertext* : CTMCCD, *Key* : Cat\r\n\r\nC – *C* = 2  – 2  = 0  = A \r\n\r\nT – *A* = 19 – 0  = 19 = T\r\n\r\nM – *T* = 12 – 19 = 19 = T\r\n\r\nC – C = 2  – 2  = 0  = A\r\n\r\nC – A = 2  – 0  = 2  = C\r\n\r\nD – T = 3  – 19 = 10 = K\r\n\r\n*decrypted word: ATTACK*\r\n\r\nIt's quite simple,right? Good luck!\r\n\r\n\u003chttp://en.algoritmy.net/article/45623/Vigenere-cipher You can read more about this cipher here. Click!\u003e  ","description_html":"\u003cp\u003eYou're a young detective. Every detective needs a function to decrypt a vigenère cipher. It's a modification of a caesar cipher.\u003c/p\u003e\u003cp\u003eLet's talk more about the algorithm:\u003c/p\u003e\u003cul\u003e\u003cli\u003eEvery letter is a number. A=0, B=1, C=2, (...), Z=26\u003c/li\u003e\u003cli\u003eOutput should be presented in capital letters.\u003c/li\u003e\u003cli\u003eUse ONLY letters. Without interpunction, spaces, etc\u003c/li\u003e\u003cli\u003eFunction has two arguments: encrypted text and key (both are strings). Your output will present a decrypted text. Let's show it on easy example from \u003ca href = \"http://en.algoritmy.net/article/45623/Vigenere-cipher\"\u003ehttp://en.algoritmy.net/article/45623/Vigenere-cipher\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003cb\u003eCiphertext\u003c/b\u003e : CTMCCD, \u003cb\u003eKey\u003c/b\u003e : Cat\u003c/p\u003e\u003cp\u003eC – \u003cb\u003eC\u003c/b\u003e = 2  – 2  = 0  = A\u003c/p\u003e\u003cp\u003eT – \u003cb\u003eA\u003c/b\u003e = 19 – 0  = 19 = T\u003c/p\u003e\u003cp\u003eM – \u003cb\u003eT\u003c/b\u003e = 12 – 19 = 19 = T\u003c/p\u003e\u003cp\u003eC – C = 2  – 2  = 0  = A\u003c/p\u003e\u003cp\u003eC – A = 2  – 0  = 2  = C\u003c/p\u003e\u003cp\u003eD – T = 3  – 19 = 10 = K\u003c/p\u003e\u003cp\u003e\u003cb\u003edecrypted word: ATTACK\u003c/b\u003e\u003c/p\u003e\u003cp\u003eIt's quite simple,right? Good luck!\u003c/p\u003e\u003cp\u003e\u003ca href = \"http://en.algoritmy.net/article/45623/Vigenere-cipher\"\u003eYou can read more about this cipher here. Click!\u003c/a\u003e\u003c/p\u003e","function_template":"function text = decrypt(cipher, key)\r\n    text = cipher;\r\nend","test_suite":"%%\r\na='CTMCCDCTWCWG';\r\nb='CAT';\r\ny_correct = 'ATTACKATDAWN';\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\n%%\r\n\r\na='ctmccdctwcwg';\r\nb='cat';\r\ny_correct='ATTACKATDAWN';\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\n\r\n%%\r\n\r\na='uaflgsqamnoeqr';\r\nb='matlab';\r\ny_correct='IAMAGREATCODER';\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\n%%\r\n\r\n%% \r\nind = randi(3);\r\nswitch ind\r\n\tcase 1\r\na='sdirmclkvtldnyimhstdoecfnfsdirmclkvtldnyimhstdoecfnfsdirmclkvtldnyimhstdoecfnfsdirmclkvtldnyimhstdoecfnf';\r\n                b='cheater';\r\n\t\ty_correct = 'QWERTYUIOPLKJHGFDSAZXCVBNMOMGKICSGEREZNFEVFLPDVALDGBSKEAKVHKCPUBGUITDBRWKEJBWDLZIYILJDRTSZWWBIHZPMMXYFUB';\r\n                assert(isequal(decrypt(a,b),y_correct));\r\n\tcase 2\r\n\t\ta='mbvoegshbukmynhaqsetnhvykz'\r\nb='matlab'\r\ny_correct='ABCDEFGHIJKLMNOPQRSTUWVXYZ'\r\n\t\tassert(isequal(decrypt(a,b),y_correct));\r\n\tcase 3\r\n\t\ta='az'\r\nb='za'\r\ny_correct='BZ'\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\nend\r\n\r\n\r\n%%\r\nfiletext = fileread('decrypt.m');\r\nassert(isempty(strfind(filetext, 'IAMAGREATCODER')),'forbidden')\r\n\r\n%%\r\na='CtMcCdCTwcWG';\r\nb='CAt';\r\ny_correct = 'ATTACKATDAWN';\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":6,"created_by":48826,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":28,"test_suite_updated_at":"2015-08-21T23:18:15.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2015-08-21T15:15:32.000Z","updated_at":"2025-11-17T23:14:07.000Z","published_at":"2015-08-21T15:15:32.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\u003eYou're a young detective. Every detective needs a function to decrypt a vigenère cipher. It's a modification of a caesar cipher.\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\u003eLet's talk more about the algorithm:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEvery letter is a number. A=0, B=1, C=2, (...), Z=26\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOutput should be presented in capital letters.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eUse ONLY letters. Without interpunction, spaces, etc\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFunction has two arguments: encrypted text and key (both are strings). Your output will present a decrypted text. Let's show it on easy example from\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.algoritmy.net/article/45623/Vigenere-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ehttp://en.algoritmy.net/article/45623/Vigenere-cipher\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:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eCiphertext\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e : CTMCCD,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eKey\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e : Cat\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\u003eC –\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 2 – 2 = 0 = A\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\u003eT –\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 19 – 0 = 19 = T\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\u003eM –\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eT\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 12 – 19 = 19 = T\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\u003eC – C = 2 – 2 = 0 = A\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\u003eC – A = 2 – 0 = 2 = C\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\u003eD – T = 3 – 19 = 10 = K\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\u003edecrypted word: ATTACK\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's quite simple,right? Good luck!\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=\\\"http://en.algoritmy.net/article/45623/Vigenere-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eYou can read more about this cipher here. Click!\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":1080,"title":"Guess Cipher","description":"Guess the formula to transform strings as follows:\r\n\r\n 'Hello World!'    --\u003e 'Ifmmp Xpsme!'\r\n\r\n 'Can I help you?' --\u003e 'Dbo J ifmq zpv?'\r\n\r\n","description_html":"\u003cp\u003eGuess the formula to transform strings as follows:\u003c/p\u003e\u003cpre\u003e 'Hello World!'    --\u0026gt; 'Ifmmp Xpsme!'\u003c/pre\u003e\u003cpre\u003e 'Can I help you?' --\u0026gt; 'Dbo J ifmq zpv?'\u003c/pre\u003e","function_template":"function y = si(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nx = 'Hello World!';\r\ny_correct = 'Ifmmp Xpsme!';\r\nassert(isequal(si(x),y_correct))\r\n\r\n%%\r\nx = 'Can I help you?';\r\ny_correct = 'Dbo J ifmq zpv?';\r\nassert(isequal(si(x),y_correct))\r\n\r\n%%\r\nx = 'Mary had a liitle lamb.';\r\ny_correct = 'Nbsz ibe b mjjumf mbnc.';\r\nassert(isequal(si(x),y_correct))\r\n","published":true,"deleted":false,"likes_count":6,"comments_count":2,"created_by":3399,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":459,"test_suite_updated_at":"2016-12-12T18:33:18.000Z","rescore_all_solutions":false,"group_id":14,"created_at":"2012-12-01T04:15:51.000Z","updated_at":"2026-03-07T06:00:37.000Z","published_at":"2012-12-01T04:16:41.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\u003eGuess the formula to transform strings as follows:\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[ 'Hello World!'    --\u003e 'Ifmmp Xpsme!'\\n\\n 'Can I help you?' --\u003e 'Dbo J ifmq zpv?']]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":565,"title":"Transposition as a CIPHER","description":"This all about transcripting a text message. If the input string is: s1 = 'My name is Sourav Mondal', then the output is: s2 = 'MUYRNAAVMMEOINSDSAOL'. Just divide the string from middle, according to no. of alphabets \u0026 then take alphabets/letters alternatively from the two strings!!","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 63px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 31.5px; transform-origin: 407px 31.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 198.5px 8px; transform-origin: 198.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis all about transcripting a text message. If the input string is:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 113px 8px; transform-origin: 113px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003es1 = 'My name is Sourav Mondal'\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 61px 8px; transform-origin: 61px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e, then the output is:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 118.5px 8px; transform-origin: 118.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003es2 = 'MUYRNAAVMMEOINSDSAOL'.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 241px 8px; transform-origin: 241px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e Just divide the string from middle, according to no. of alphabets \u0026amp; then take alphabets/letters alternatively from the two strings!!\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = transposition(s1)\r\n  y = s2;\r\nend","test_suite":"%%\r\ns1 = 'My name is Sourav Mondal';\r\ny_correct = 'MUYRNAAVMMEOINSDSAOL';\r\nassert(isequal(transposition(s1),y_correct))\r\n\r\n%%\r\ns1 = 'i am a common cipher';\r\ny_correct = 'IOANMCAICPOHMEMR';\r\nassert(isequal(transposition(s1),y_correct))\r\n\r\n%%\r\ns1 = 'BATMAN rules GOTHAM';\r\ny_correct = 'BEASTGMOATNHRAUML';\r\nassert(isequal(transposition(s1),y_correct))\r\n\r\n%%\r\ns1 = 'STAY HOME stay safe';\r\ny_correct = 'SSTTAAYYHSOAMFEE';\r\nassert(isequal(transposition(s1),y_correct))","published":true,"deleted":false,"likes_count":5,"comments_count":6,"created_by":2952,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":231,"test_suite_updated_at":"2021-09-21T10:28:08.000Z","rescore_all_solutions":true,"group_id":14,"created_at":"2012-04-08T07:35:15.000Z","updated_at":"2026-03-22T16:40:00.000Z","published_at":"2012-04-08T07:36:17.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis all about transcripting a text message. If the input string is:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es1 = 'My name is Sourav Mondal'\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, then the output is:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es2 = 'MUYRNAAVMMEOINSDSAOL'.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Just divide the string from middle, according to no. of alphabets \u0026amp; then take alphabets/letters alternatively from the two strings!!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":48175,"title":"Cipher or Decipher the number according to the second input  - 3 keys - order [1 2 3 2 1 2 3 ......]","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 316.6px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 158.3px; transform-origin: 407px 158.3px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 376.5px 8px; transform-origin: 376.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou will be given an input number. You have to figure out the cipher keys and match it with given input and cipher it and decipher it according to second input.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 151.5px 8px; transform-origin: 151.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe following are not real keys, just an example:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 81.7333px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 40.8667px; transform-origin: 404px 40.8667px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 120px 8.5px; transform-origin: 120px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eref =   [0 1 2 3 4 5 6 7 8 9];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 120px 8.5px; transform-origin: 120px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003ekey_1 = [1 2 3 4 5 6 7 8 9 0];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 120px 8.5px; transform-origin: 120px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003ekey_2 = [3 4 5 6 7 8 9 0 1 2];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 120px 8.5px; transform-origin: 120px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003ekey_3 = [2 3 4 5 6 7 8 9 0 1];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 101px 8px; transform-origin: 101px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eFor example, if x = 12321, y = 1:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 20.4333px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 56px 8.5px; transform-origin: 56px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eoutput = 25552\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 367px 8px; transform-origin: 367px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e(Hint: index: 1 -\u0026gt; key 1, 2 -\u0026gt; key 2, 3 -\u0026gt; key 3, 4 -\u0026gt; key 2, 5 -\u0026gt; key 1, 6 -\u0026gt; key 2, 7 -\u0026gt; key 3, 8 -\u0026gt; key 2, 9 -\u0026gt; key 1, ...)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 69.5px 8px; transform-origin: 69.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eOr, if x = 25552, y = 2:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 20.4333px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 56px 8.5px; transform-origin: 56px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eoutput = 12321\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function d = decyp(c)\r\n  d = c;\r\nend","test_suite":"%%\r\nfiletext = fileread('decyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, '-')),'- is forbidden')\r\nassert(isempty(strfind(filetext, 'else')))\r\n\r\n%%\r\nx=round(26740*561311/56151);\r\ny=1;\r\nassert(isequal(decyp(x,y),324920))\r\n\r\n%%\r\nx=55156;\r\ny=2;\r\nassert(isequal(decyp(x,y),round(log(152385*15275445))*2511))\r\n\r\n%%\r\nx=54;\r\ny=2;\r\nassert(isequal(decyp(x,y),round(sqrt(158485*1555)/211)))\r\n\r\n%%\r\nx=1561615;\r\ny=1;\r\nassert(isequal(decyp(x,y),1088989))\r\n\r\n%%\r\nx=324920;\r\ny=2;\r\nassert(isequal(decyp(x,y),round(26740*561311/56151)))\r\n\r\n%%\r\nx=round(log(152385*15275445))*2511;\r\ny=1;\r\nassert(isequal(decyp(x,y),55156))\r\n\r\n%%\r\nx=round(sqrt(158485*1555)/211);\r\ny=1;\r\nassert(isequal(decyp(x,y),54))\r\n\r\n%%\r\nx=1088989;\r\ny=2;\r\nassert(isequal(decyp(x,y),1561615))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":4,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":"2021-01-25T11:14:28.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-18T23:02:59.000Z","updated_at":"2024-11-20T08:57:33.000Z","published_at":"2020-12-19T13:45:00.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given an input number. You have to figure out the cipher keys and match it with given input and cipher it and decipher it according to second input.\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 following are not real keys, just an example:\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[ref =   [0 1 2 3 4 5 6 7 8 9];\\nkey_1 = [1 2 3 4 5 6 7 8 9 0];\\nkey_2 = [3 4 5 6 7 8 9 0 1 2];\\nkey_3 = [2 3 4 5 6 7 8 9 0 1];]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor example, if x = 12321, y = 1:\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[output = 25552]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e(Hint: index: 1 -\u0026gt; key 1, 2 -\u0026gt; key 2, 3 -\u0026gt; key 3, 4 -\u0026gt; key 2, 5 -\u0026gt; key 1, 6 -\u0026gt; key 2, 7 -\u0026gt; key 3, 8 -\u0026gt; key 2, 9 -\u0026gt; key 1, ...)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOr, if x = 25552, y = 2:\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[output = 12321]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":44351,"title":"Code breaker, Part I:  Operation Phoenix","description":"You have been tasked with decoding a set of coded messages that have been intercepted.  \r\n\r\nBased on previous intelligence that has been gathered, you can be confident that the messages were encoded using a simple \u003chttps://en.wikipedia.org/wiki/Caesar_cipher Caesar cipher\u003e (a type of \u003chttps://en.wikipedia.org/wiki/Substitution_cipher substitution cipher\u003e), an example of which is the \u003chttps://en.wikipedia.org/wiki/ROT13 ROT13 cipher\u003e (discussed in \u003chttps://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher Cody Challenge Problem 78\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026 numbers) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between messages (also, here you need to decode, not encode).  \r\n\r\nYou can also assume that the original message will relate to an activity that is referred to by those involved as \"Operation Phoenix\". Therefore the phrase \"Operation Phoenix\" (with that capitalisation) would have appeared at least once in the original message.  \r\n\r\nYour task is to crack the codes and report back in a \u003chttp://au.mathworks.com/help/matlab/ref/struct.html structure array\u003e:  (1) the shifting parameter that had been used in the encoding [as \u003chttp://au.mathworks.com/help/matlab/ref/uint8.html uint8\u003e];  (2)  the decoded message [as \u003chttp://au.mathworks.com/help/matlab/ref/char.html character array\u003e].  \r\nThe name of the structure array shall be \"s\", with respective fields \"shift\" and \"message\".  \r\n\r\nEXAMPLE\r\n\r\nSuppose the original message was _\"Cancel Operation Phoenix immediately \u0026 escape.\"_ and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  (Note that the shifting 'wraps' back around.)  \r\nThus the encoded message would be:  _\"Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026 ftdbqf.\"_\r\n\r\nThe correct answer would comprise:  \r\n\r\n  s.shift = uint8(1)  \r\n  s.message = 'Cancel Operation Phoenix immediately \u0026 escape.'\r\n\r\n|Note: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable and doesn't generate excessive text output). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand.|  \r\n\r\nTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".\r\n\r\n----------\r\n\r\nNext problem:  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44356 Operation Orthos\u003e.\r\n\r\n----------\r\n\r\nStatistics on solutions submitted as at 15 October 2017:\r\n\r\n* *Fastest wall time to decode 5000 messages = 93 milliseconds* , for \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1279303 Solution 1279303\u003e, with a size-based score of 40. \r\n* *Smallest size-based score = 38* , for \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1278780 Solution 1278780\u003e, for which wall time to decode 5000 messages = 515 milliseconds.  \r\n* Best combined score = 49, for \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1279303 Solution 1279303\u003e. ","description_html":"\u003cp\u003eYou have been tasked with decoding a set of coded messages that have been intercepted.\u003c/p\u003e\u003cp\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were encoded using a simple \u003ca href = \"https://en.wikipedia.org/wiki/Caesar_cipher\"\u003eCaesar cipher\u003c/a\u003e (a type of \u003ca href = \"https://en.wikipedia.org/wiki/Substitution_cipher\"\u003esubstitution cipher\u003c/a\u003e), an example of which is the \u003ca href = \"https://en.wikipedia.org/wiki/ROT13\"\u003eROT13 cipher\u003c/a\u003e (discussed in \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher\"\u003eCody Challenge Problem 78\u003c/a\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026 numbers) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between messages (also, here you need to decode, not encode).\u003c/p\u003e\u003cp\u003eYou can also assume that the original message will relate to an activity that is referred to by those involved as \"Operation Phoenix\". Therefore the phrase \"Operation Phoenix\" (with that capitalisation) would have appeared at least once in the original message.\u003c/p\u003e\u003cp\u003eYour task is to crack the codes and report back in a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/struct.html\"\u003estructure array\u003c/a\u003e:  (1) the shifting parameter that had been used in the encoding [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/uint8.html\"\u003euint8\u003c/a\u003e];  (2)  the decoded message [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/char.html\"\u003echaracter array\u003c/a\u003e].  \r\nThe name of the structure array shall be \"s\", with respective fields \"shift\" and \"message\".\u003c/p\u003e\u003cp\u003eEXAMPLE\u003c/p\u003e\u003cp\u003eSuppose the original message was \u003ci\u003e\"Cancel Operation Phoenix immediately \u0026 escape.\"\u003c/i\u003e and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  (Note that the shifting 'wraps' back around.)  \r\nThus the encoded message would be:  \u003ci\u003e\"Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026 ftdbqf.\"\u003c/i\u003e\u003c/p\u003e\u003cp\u003eThe correct answer would comprise:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003es.shift = uint8(1)  \r\ns.message = 'Cancel Operation Phoenix immediately \u0026 escape.'\r\n\u003c/pre\u003e\u003cp\u003e\u003ctt\u003eNote: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable and doesn't generate excessive text output). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand.\u003c/tt\u003e\u003c/p\u003e\u003cp\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".\u003c/p\u003e\u003cp\u003e----------\u003c/p\u003e\u003cp\u003eNext problem:  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44356\"\u003eOperation Orthos\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e----------\u003c/p\u003e\u003cp\u003eStatistics on solutions submitted as at 15 October 2017:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003eFastest wall time to decode 5000 messages = 93 milliseconds\u003c/b\u003e , for \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1279303\"\u003eSolution 1279303\u003c/a\u003e, with a size-based score of 40.\u003c/li\u003e\u003cli\u003e\u003cb\u003eSmallest size-based score = 38\u003c/b\u003e , for \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1278780\"\u003eSolution 1278780\u003c/a\u003e, for which wall time to decode 5000 messages = 515 milliseconds.\u003c/li\u003e\u003cli\u003eBest combined score = 49, for \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1279303\"\u003eSolution 1279303\u003c/a\u003e.\u003c/li\u003e\u003c/ul\u003e","function_template":"function s = decode(x)\r\n  s = x;\r\nend","test_suite":"%% NOTE:  \r\n% This test suite can be updated if inappropriate 'hacks' \r\n% are discovered in any submitted solutions, \r\n% so your score/size may therefore change over time.  \r\n\r\n\r\n%% Test 1\r\nx = 'Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026 ftdbqf.';\r\ns_correct.shift = 1;\r\ns_correct.message = 'Cancel Operation Phoenix immediately \u0026 escape.';\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'char') )\r\n\r\n\r\n%% Test 2\r\nx = 'Vwlyhapvu Wovlupe ilnpuz Ablzkhf!  Vwlyhapvu Wovlupe pz vby avw wypvypaf.';\r\ns_correct.shift = 7;\r\ns_correct.message = 'Operation Phoenix begins Tuesday!  Operation Phoenix is our top priority.';\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'char') )\r\n\r\n\r\n%% Test 3\r\nx = 'Eatpht cdit iwpi iwt ephhldgs wph qttc rwpcvts ugdb \"Fxeudyn\" id \"Dvcsbwl\".  Diwtglxht Detgpixdc Ewdtcxm xh egdrttsxcv prrdgsxcv id eapc.';\r\ns_correct.shift = 15;\r\ns_correct.message = 'Please note that the password has been changed from \"Qipfojy\" to \"Ogndmhw\".  Otherwise Operation Phoenix is proceeding according to plan.';\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'char') )\r\n\r\n\r\n%% Test 4\r\nx = 'Mncpyrgml Nfmclgv qryprcb rfpcc bywq yem.  Yjj ncpqmllcj ypc rm pckygl ml bsrw slrgj Mncpyrgml Nfmclgv gq amknjcrcb.';\r\ns_correct.shift = 24;\r\ns_correct.message = 'Operation Phoenix started three days ago.  All personnel are to remain on duty until Operation Phoenix is completed.';\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'char') )\r\n\r\n\r\n%% Rescoring \r\n% Acknowledgements \r\n% Portions of this timing test code were inspired by:\r\n% (1) Problem 937. \"Rubik's Mini Cube: Solve Randomized Cube in 11 Moves or Less; Score is by Time (msec)\" by Richard Zapor.\r\n% (2) Problem 2733. \"Evil Number\" by Jan Orwat.\r\n% (3) Feedback in comments from Peng Liu.\r\n% (4) Problem Problem 1237. \"It's race time! Write a faster function than the test suite call of unique().\" by Jeremy.\r\n\r\n% Note:  The Time Trial section does not check accuracy; that is done above.\r\n\r\n% Initialise\r\nx = 'Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026 ftdbqf.';\r\ncutoffTimeBig = 1000; % Maximum allowable walltime (in milliseconds) to run function in a loop with qBig iterations.\r\n\r\nfor dummy = 1 : 20,  disp(' . ');  end;\r\n\r\n% Run once, untimed?\r\nincludeOverheads = false;\r\nif includeOverheads, \r\n    solution = decode( x );\r\nend;\r\n\r\n% *** PRELIMINARY TIMING ***\r\n% In case the submitted function has a lot of text output, \r\n% get an estimate based on just a few iterations\r\n% Initialise\r\nqSmall = 50;\r\nqBig = 5000;\r\nt0 = clock;\r\n\r\n% Loop\r\nfor i = 1 : qSmall\r\n    solution = decode( x );\r\nend;\r\n\r\n% Compute and display elapsed time.\r\ndt = etime(clock, t0) * 1000;\r\ndisp('     -----=====-----     ')\r\nfprintf('Your wall time to decode %u messages = %i msec.\\n\\r', qSmall, floor(dt))\r\nfprintf('Your APPROXIMATE wall time to decode %u messages would be ~ %i msec.\\n\\r', qBig, ceil(dt * qBig / qSmall))\r\ndisp('     -----=====-----     ')\r\nfor dummy = 1 : 20,  disp(' . ');  end;\r\n\r\n% *** 'OFFICIAL' TIMING ***\r\n% Re-initialise timer\r\nt0 = clock;\r\nt0_cpu = cputime;\r\n\r\n% Loop\r\nfor i = 1 : qBig\r\n    solution = decode( x );\r\nend;\r\n\r\n% Compute and display elapsed time.\r\nfor dummy = 1 : 20,  disp(' . ');  end;\r\ndisp('     -----=====|||||=====-----     ')\r\ndt = etime(clock, t0) * 1000;\r\nfprintf('Your wall time to decode %u messages = %i msec.\\n\\r', qBig, floor(dt))\r\n\r\ndt_cpu = (cputime - t0_cpu) * 1000;\r\nfprintf(' ( Your CPU time for this = %i msec. ) \\n\\r', floor(dt_cpu))\r\n\r\nfDecode = @()   decode(x);\r\ndt_timeit = timeit( fDecode ) * 1000;\r\nfprintf(' [ Your ''timeit'' time to decode %u messages = %i msec. ] \\n\\r', qBig, ceil(dt_timeit * qBig))\r\n\r\n% Display a size-based score.\r\nall_nodes = mtree('decode.m', '-file');        % This is the default in Cody.\r\nstr_nodes = mtfind(all_nodes, 'Kind', 'STRING');\r\neq_nodes = mtfind(all_nodes, 'Kind', 'EQUALS');\r\nprint_nodes = mtfind(all_nodes, 'Kind', 'PRINT');\r\nexpr_nodes = mtfind(all_nodes, 'Kind', 'EXPR');\r\n\r\nsize_score = count(all_nodes) ...\r\n +sum(str_nodes.nodesize-1) ...\r\n +2*(count(expr_nodes) ...\r\n +count(print_nodes) ...\r\n -count(eq_nodes));\r\n\r\nfprintf('Your size-based score = %i.\\n\\r', size_score)\r\n\r\n% Report revised performance score.\r\ncombinedScore = size_score  +  min( 200, floor(dt*(500/qBig)) );\r\nfprintf('Your combined score = %i.\\n\\r', combinedScore)\r\ndisp('     -----=====|||||=====-----     ')\r\n\r\n% Now disallow any candidate solutions that are TOO SLOW!\r\nif dt \u003e cutoffTimeBig, \r\n    fprintf('Sorry, your submission is TOO SLOW. It must be able to finish within %u milliseconds.\\n\\r', cutoffTimeBig)\r\nend;\r\n\r\nassert( dt \u003c= cutoffTimeBig, 'Exceeded time limit specified in Test Suite.' )","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":45,"test_suite_updated_at":"2017-10-15T10:19:08.000Z","rescore_all_solutions":false,"group_id":40,"created_at":"2017-09-29T09:20:59.000Z","updated_at":"2026-04-02T08:27:57.000Z","published_at":"2017-09-29T13:45:26.000Z","restored_at":"2017-10-04T19:25:07.000Z","restored_by":null,"spam":false,"simulink":false,"admin_reviewed":true,"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\u003eYou have been tasked with decoding a set of coded messages that have been intercepted.\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\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were encoded using a simple\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/Caesar_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCaesar cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (a type of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Substitution_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003esubstitution cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e), an example of which is 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/ROT13\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eROT13 cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (discussed in\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/78-implement-a-rot13-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCody Challenge Problem 78\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e). As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026amp; numbers) are unchanged. Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between messages (also, here you need to decode, not encode).\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\u003eYou can also assume that the original message will relate to an activity that is referred to by those involved as \\\"Operation Phoenix\\\". Therefore the phrase \\\"Operation Phoenix\\\" (with that capitalisation) would have appeared at least once in the original message.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task is to crack the codes and report back in a\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://au.mathworks.com/help/matlab/ref/struct.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003estructure array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e: (1) the shifting parameter that had been used in the encoding [as\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://au.mathworks.com/help/matlab/ref/uint8.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003euint8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e]; (2) the decoded message [as\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://au.mathworks.com/help/matlab/ref/char.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003echaracter array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e]. The name of the structure array shall be \\\"s\\\", with respective fields \\\"shift\\\" and \\\"message\\\".\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose the original message was\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Cancel Operation Phoenix immediately \u0026amp; escape.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and a (right-shifting) ROT1 cipher had been applied. In that case A→B, B→C, ..., Y→Z, and Z→A; similarly, a→b, b→c, ..., y→z, and z→a. (Note that the shifting 'wraps' back around.) Thus the encoded message would be: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026amp; ftdbqf.\\\"\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 correct answer would comprise:\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[s.shift = uint8(1)  \\ns.message = 'Cancel Operation Phoenix immediately \u0026 escape.']]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNote: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable and doesn't generate excessive text output). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand.\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\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \\\"too slow\\\".\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----------\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\u003eNext problem: \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/44356\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOperation Orthos\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e----------\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eStatistics on solutions submitted as at 15 October 2017:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eFastest wall time to decode 5000 messages = 93 milliseconds\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e , for\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/44351-code-breaker-part-i-operation-phoenix/solutions/1279303\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSolution 1279303\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, with a size-based score of 40.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eSmallest size-based score = 38\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e , for\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/44351-code-breaker-part-i-operation-phoenix/solutions/1278780\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSolution 1278780\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, for which wall time to decode 5000 messages = 515 milliseconds.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBest combined score = 49, for\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/44351-code-breaker-part-i-operation-phoenix/solutions/1279303\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSolution 1279303\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\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":49347,"title":"Cipher and Decipher the message - same key for all digits ","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 230.564px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 406.495px 115.276px; transform-origin: 406.5px 115.282px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou will be given a input number \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eyou have to figure out the key according to the second input\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eref=ascii(32:126); decipher_key=[ascii(33:126) ascii(32)  ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e(eg)  x='gdkkn' if y==1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput y='hello'\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif x='hello' if y==2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput='gdkkn';\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\"If\" and \"while\" are forbidden\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = decyp(x,y)\r\n  y = x;\r\nend","test_suite":"%%\r\nfiletext = fileread('decyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, 'if')),'if is forbidden')\r\nassert(isempty(strfind(filetext, 'while')),'while is forbidden')\r\nassert(isempty(strfind(filetext, 'switch')),'switch is forbidden')\r\nx = '|#i/mh+/f#[';\r\nassert(isequal(decyp(x,1),'how are you'))\r\n%%\r\nx='/kfM-g!f;-\\a-g!fRzG)aa-.!f-Rz!a)-RzkR-M! CR-J)G\\)B)-\\ -Rz)oa)GB)a';\r\nassert(isequal(decyp(char(x+2),1),'Hard work is worthless for those that don''t believe in themselves'))\r\n%%\r\nx='Nz\\G)-d!YCf)-kG\\B)c-d!Y- ))M-k-f)ka! -.!f-d!Yf-)9\\aR) \u003e)h-m)\\ x-Y kJG)-R!-.\\ M-! )-\\a-Rz)-ako)-ka-J)\\ x-M)kMh';\r\nassert(isequal(decyp(char(x+2),1),'While you''re alive, you need a reason for your existence. Being unable to find one is the same as being dead.'))\r\n%%\r\nx='/kfM-g!f;-\\a-g!fRzG)aa-.!f-Rz!a)-RzkR-M! CR-J)G\\)B)-\\ -Rz)oa)GB)a';\r\nassert(isequal(decyp(char(flip(x+2)),1),flip('Hard work is worthless for those that don''t believe in themselves')))\r\n%%\r\nx='Nz\\G)-d!YCf)-kG\\B)c-d!Y- ))M-k-f)ka! -.!f-d!Yf-)9\\aR) \u003e)h-m)\\ x-Y kJG)-R!-.\\ M-! )-\\a-Rz)-ako)-ka-J)\\ x-M)kMh';\r\nassert(isequal(decyp(char(flip(x+2)),1),'.daed gnieb sa emas eht si eno dnif ot elbanu gnieB .ecnetsixe ruoy rof nosaer a deen uoy ,evila er''uoy elihW'))\r\n%%\r\nx = 'how are you';\r\nassert(isequal(decyp(x,2),'|#i/mh+/f#['))\r\n%%\r\nz= '_@T0UfdTqU=[UfdTD%\"z[[U|dTUD%d[zUD%@DU0d76DUOz\"=z;zU=7UD%z#[z\";z[';\r\nu='Hard work is worthless for those that don''t believe in themselves'\r\nassert(isequal(decyp(char(u+2),2),z))\r\n%%\r\nz='w%=\"zUJdi6TzU@\"=;zjUJdiU7zz0U@UTz@[d7U|dTUJdiTUz9=[Dz7+z)Uxz=7^Ui7@O\"zUDdU|=70Ud7zU=[UD%zU[@#zU@[UOz=7^U0z@0)';\r\nx='While you''re alive, you need a reason for your existence. Being unable to find one is the same as being dead.'\r\nassert(isequal(decyp(char(x+2),2),z))\r\n%%\r\nu='[z;\"z[#z%DU7=Uz;z=\"zOUD67d0UD@%DUz[d%DUTd|U[[z\"%DTdfU[=UqTdfU0T@_';\r\nx=('Hard work is worthless for those that don''t believe in themselves');\r\nassert(isequal(decyp(char(flip(x+2)),2),u))\r\n%%\r\nu='w%=\"zUJdi6TzU@\"=;zjUJdiU7zz0U@UTz@[d7U|dTUJdiTUz9=[Dz7+z)Uxz=7^Ui7@O\"zUDdU|=70Ud7zU=[UD%zU[@#zU@[UOz=7^U0z@0)';\r\nx='.daed gnieb sa emas eht si eno dnif ot elbanu gnieB .ecnetsixe ruoy rof nosaer a deen uoy ,evila er''uoy elihW';\r\nassert(isequal(decyp(char(flip(x+2)),2),u))\r\n\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-23T15:20:36.000Z","updated_at":"2020-12-23T21:08:12.000Z","published_at":"2020-12-23T21:08:12.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given a input number \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 have to figure out the key according to the second input\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\u003eref=ascii(32:126); decipher_key=[ascii(33:126) ascii(32)  ]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e(eg)  x='gdkkn' if y==1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput y='hello'\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\u003eif x='hello' if y==2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput='gdkkn';\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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"If\\\" and \\\"while\\\" are forbidden\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":44356,"title":"Code breaker, Part II:  Operation Orthos","description":"You have been tasked with decoding several batches of coded messages that have been intercepted.  \r\n\r\nBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple \u003chttps://en.wikipedia.org/wiki/Caesar_cipher Caesar cipher\u003e (a type of \u003chttps://en.wikipedia.org/wiki/Substitution_cipher substitution cipher\u003e), an example of which is the \u003chttps://en.wikipedia.org/wiki/ROT13 ROT13 cipher\u003e (discussed in \u003chttps://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher Cody Challenge Problem 78\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026 numbers) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between batches of messages — although it will be the same for all messages in a batch (also, here you need to decode, not encode).  \r\n\r\nYou can also assume that the original batch of messages will relate to an activity that is referred to by those involved as \"Operation Orthos\". However, in their secret internal communications they might not use this exact phrase at all, nor this exact capitalisation.  Therefore you should seek _simultaneous_ occurrence of the separate words \"Operation\" and \"Orthos\" (with any capitalisation) in messages within the given batch.  \r\n\r\nYour task is to crack the codes and report back in a \u003chttp://au.mathworks.com/help/matlab/ref/struct.html structure array\u003e:  (1) the shifting parameter that had been used in the encoding [as \u003chttp://au.mathworks.com/help/matlab/ref/uint8.html uint8\u003e];  (2)  the decoded messages [as a \u003chttp://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta cell array\u003e (containing \u003chttp://au.mathworks.com/help/matlab/ref/char.html character arrays\u003e)].  \r\nThe name of the structure array shall be \"s\", with respective fields \"shift\" and \"message\".  \r\n\r\nEXAMPLE\r\n\r\nSuppose the batch contained two encoded messages — _\"qspdffe x/ pqfsbujpo\"_ and _\"Psuipt jt HP!\"_ (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  (Note that the shifting 'wraps' back around.)  \r\nThus the original messages would have been:  _\"proceed w/ operation\"_ and _\"Orthos is GO!\"_ .\r\n\r\nThe correct answer would comprise:  \r\n\r\n  s.shift = uint8(1)  \r\n  s.message = {'proceed w/ operation', 'Orthos is GO!'}\r\n\r\nIf the batch of messages cannot be decoded when following the above assumptions, then simply return 'scalar' \u003chttp://au.mathworks.com/help/matlab/ref/nan.html NaN\u003e in both fields (no need for a cell array).  \r\n\r\n|Note:  Many Cody solutions are hard to read and not necessarily computationally efficient.  To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable).  Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)|  \r\n\r\nTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".  \r\n\r\n----------\r\n\r\nPrevious problem:  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351 Operation Phoenix\u003e.  Next problem:  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44383 Operation Xiangliu\u003e.","description_html":"\u003cp\u003eYou have been tasked with decoding several batches of coded messages that have been intercepted.\u003c/p\u003e\u003cp\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple \u003ca href = \"https://en.wikipedia.org/wiki/Caesar_cipher\"\u003eCaesar cipher\u003c/a\u003e (a type of \u003ca href = \"https://en.wikipedia.org/wiki/Substitution_cipher\"\u003esubstitution cipher\u003c/a\u003e), an example of which is the \u003ca href = \"https://en.wikipedia.org/wiki/ROT13\"\u003eROT13 cipher\u003c/a\u003e (discussed in \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher\"\u003eCody Challenge Problem 78\u003c/a\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026 numbers) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between batches of messages — although it will be the same for all messages in a batch (also, here you need to decode, not encode).\u003c/p\u003e\u003cp\u003eYou can also assume that the original batch of messages will relate to an activity that is referred to by those involved as \"Operation Orthos\". However, in their secret internal communications they might not use this exact phrase at all, nor this exact capitalisation.  Therefore you should seek \u003ci\u003esimultaneous\u003c/i\u003e occurrence of the separate words \"Operation\" and \"Orthos\" (with any capitalisation) in messages within the given batch.\u003c/p\u003e\u003cp\u003eYour task is to crack the codes and report back in a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/struct.html\"\u003estructure array\u003c/a\u003e:  (1) the shifting parameter that had been used in the encoding [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/uint8.html\"\u003euint8\u003c/a\u003e];  (2)  the decoded messages [as a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta\"\u003ecell array\u003c/a\u003e (containing \u003ca href = \"http://au.mathworks.com/help/matlab/ref/char.html\"\u003echaracter arrays\u003c/a\u003e)].  \r\nThe name of the structure array shall be \"s\", with respective fields \"shift\" and \"message\".\u003c/p\u003e\u003cp\u003eEXAMPLE\u003c/p\u003e\u003cp\u003eSuppose the batch contained two encoded messages — \u003ci\u003e\"qspdffe x/ pqfsbujpo\"\u003c/i\u003e and \u003ci\u003e\"Psuipt jt HP!\"\u003c/i\u003e (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  (Note that the shifting 'wraps' back around.)  \r\nThus the original messages would have been:  \u003ci\u003e\"proceed w/ operation\"\u003c/i\u003e and \u003ci\u003e\"Orthos is GO!\"\u003c/i\u003e .\u003c/p\u003e\u003cp\u003eThe correct answer would comprise:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003es.shift = uint8(1)  \r\ns.message = {'proceed w/ operation', 'Orthos is GO!'}\r\n\u003c/pre\u003e\u003cp\u003eIf the batch of messages cannot be decoded when following the above assumptions, then simply return 'scalar' \u003ca href = \"http://au.mathworks.com/help/matlab/ref/nan.html\"\u003eNaN\u003c/a\u003e in both fields (no need for a cell array).\u003c/p\u003e\u003cp\u003e\u003ctt\u003eNote:  Many Cody solutions are hard to read and not necessarily computationally efficient.  To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable).  Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)\u003c/tt\u003e\u003c/p\u003e\u003cp\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".\u003c/p\u003e\u003cp\u003e----------\u003c/p\u003e\u003cp\u003ePrevious problem:  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351\"\u003eOperation Phoenix\u003c/a\u003e.  Next problem:  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44383\"\u003eOperation Xiangliu\u003c/a\u003e.\u003c/p\u003e","function_template":"function s = decode(x)\r\n  s = x;\r\nend","test_suite":"%% NOTE:  \r\n% This test suite can be updated if inappropriate 'hacks' \r\n% are discovered in any submitted solutions, \r\n% so the assessment of your submission may therefore change over time.  \r\nRE = regexp(fileread('decode.m'), '\\w+', 'match');\r\ntabooWords = {'ans', 'assert', 'freepass', 'tic'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any(  cellfun( @(z) ismember(z, tabooWords), RE )  ), msg)\r\n\r\n\r\n%% Test 1\r\nx =                 {'qspdffe x/ pqfsbujpo', 'Psuipt jt HP!'};\r\ns_correct.shift = uint8(1);\r\ns_correct.message = {'proceed w/ operation', 'Orthos is GO!'};\r\ns = decode(x);\r\n%disp(' *** ');  disp(s.message);  disp(' *** ')\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message{1}, s_correct.message{1}) )\r\nassert( isequal(s.message{2}, s_correct.message{2}) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(s, s_correct) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'cell') )\r\nassert( isequal(class(s.message{1}), 'char') )\r\n\r\n\r\n%% Test 2\r\nx =                 {'Hfqq Ons ts 555-7839 FXFU.', 'twymtx nx ts mtqi', 'bfnynsl ktw dtzw fianhj', 'TUJWFYNTS UTXYUTSJI'};\r\ns_correct.shift = uint8(5);\r\ns_correct.message = {'Call Jin on 555-7839 ASAP.', 'orthos is on hold', 'waiting for your advice', 'OPERATION POSTPONED'};\r\ns = decode(x);\r\n%disp(' *** ');  disp(s.message);  disp(' *** ')\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% Test 3\r\nx =                 {'Ocz kvnnrjmy rvn xcvibzy: \"Knpdko\" oj \"Gjlzgk\".', 'Jkzmvodji Kcjzids rvn npxxznnapg. Izso rdgg wz Jmocjn.', 'Edi Uvkxgzout rdgg wz gzvydib Ozvh V'};\r\ns_correct.shift = uint8(21);\r\ns_correct.message = {'The password was changed: \"Psuipt\" to \"Loqelp\".', 'Operation Phoenix was successful. Next will be Orthos.', 'Jin Zapcletzy will be leading Team A'};\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% Test 4\r\nx =                 {'bxmzzuzs r/ adftae az fdmow', 'adftae etxp oaybxqfq uz 2 iwe', 'abqdmfuaz pmfq eturfqp nmow 2 p.', 'naawe dqoquhqp. fwe Vuz' };\r\ns_correct.shift = uint8(12);\r\ns_correct.message = {'planning f/ orthos on track', 'orthos shld complete in 2 wks', 'operation date shifted back 2 d.', 'books received. tks Jin'};\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% Test 5\r\nx =                 {'Hdsffafy xgj Ghwjslagf Gjlzgk zsk gxxauasddq ugeewfuwv.  Lzak oadd tw dwv tq Lwse S, kmhhgjlwv tq Lwse T sk fwwvwv.'};\r\ns_correct.shift = uint8(18);\r\ns_correct.message = {'Planning for Operation Orthos has officially commenced.  This will be led by Team A, supported by Team B as needed.'};\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% Test 6\r\nx = {'Mncpyrgml Nfmclgv qryprcb rfpcc bywq yem.  Yjj ncpqmllcj ypc rm pckygl ml bsrw slrgj Mncpyrgml Nfmclgv gq amknjcrcb.'};\r\ns_correct.shift = nan;\r\ns_correct.message = nan;\r\ns = decode(x);\r\nassert( isnan(s.shift) )\r\nassert( isnan(s.message) )\r\n\r\n\r\n%% Test 7\r\nx =                 {'Iutloxskj vgyycuxj oy tuc \"Ruwkrv\".', 'Vrgt lux uxznuy ruuqy UQ, haz tkkj suxk $$$', 'Ksgor Pot Fgvirkzfe ut xacqxb@sgzncuxqy.ius xk. Zakyjge', 'Zgrqkj zu Zkgs H.  Ngvve zu yavvuxz uvkxgzout....', 'Xk. latjy, vry zxgtylkx zu giiuatz \"YZOBKDSYX\" - ZDY', 'jUT''Z cUXXE'};\r\ns_correct.shift = uint8(6);\r\ns_correct.message = {'Confirmed password is now \"Loqelp\".', 'Plan for orthos looks OK, but need more $$$', 'Email Jin Zapcletzy on ruwkrv@mathworks.com re. Tuesday', 'Talked to Team B.  Happy to support operation....', 'Re. funds, pls transfer to account \"STIVEXMSR\" - TXS', 'dON''T wORRY'};\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% TIMING \r\n% Note:  The Time Trial section does not check accuracy; that is done above.\r\n\r\n% Acknowledgements  \r\n% Portions of this timing test code were inspired by:\r\n% (1) Problem 937. \"Rubik's Mini Cube: Solve Randomized Cube in 11 Moves or Less; Score is by Time (msec)\" by Richard Zapor.\r\n% (2) Problem 2733. \"Evil Number\" by Jan Orwat.\r\n% (3) Feedback in comments from Peng Liu.\r\n% (4) Problem Problem 1237. \"It's race time! Write a faster function than the test suite call of unique().\" by Jeremy.\r\n\r\n% INITIALISE\r\nx = {'qspdffe x/ pqfsbujpo', 'Psuipt jt HP!'};\r\nqSmall = 50;\r\nqBig = 10000;\r\n%cutoffTimeBig = 10;\r\n\r\n% EDIT (2018-06-17).  Reduced time to pose reasonable challenge.\r\n% Accounted for improving Cody server speed per Problem 44655.\r\ncutoffTimeBig = 3;    % Maximum allowable walltime (in seconds) to run function in a loop with qBig iterations.\r\ntRef = datetime('2018-06-17', 'InputFormat','yyyy-MM-dd');\r\ntNow = datetime('now');\r\nyearsElapsed = (datenum(tNow) - datenum(tRef)) / 365.24;\r\nfprintf('\\r\\n\\r\\n\\r\\nSubmission evaluated for speed on %s.\\r\\n', datestr(tNow, 'dd mmmm yyyy'))\r\nrInf = 0.2;   delta = cutoffTimeBig - rInf;  tau = 3.6;  % Data from Problem 44655, based on Problem 963.\r\nqBig = floor( qBig * (cutoffTimeBig - rInf) * exp(yearsElapsed/tau) / delta );\r\nfprintf('\\r\\n\\r\\n\\r\\nTo account for computational power increases over time, number of iterations increased to %u.\\r\\n', qBig)\r\n% END EDIT (2018-06-17)\r\n\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\n\r\n% *** PRELIMINARY TIMING WITH timeit ***\r\nfDecode = @()   decode(x);\r\ndt_timeit = timeit( fDecode );\r\nfprintf('APPROXIMATE time to decode %u message batches ~ %2.2f seconds, according to ''timeit''.\\n\\r', qBig, dt_timeit * qBig)\r\n\r\n% *** PRELIMINARY TIMING WITH SHORT LOOP ***\r\n% In case the submitted function has a lot of text output, \r\n% get an estimate based on just a few iterations\r\n% Initialise\r\nt0 = clock;\r\n\r\n% Loop\r\nfor i = 1 : qSmall\r\n    solution = decode( x );\r\nend;\r\n\r\n% Compute and display elapsed time.\r\ndt = etime(clock, t0);\r\ndisp('     -----=====-----     ')\r\n%fprintf('Your wall time to decode %u message batches = %i seconds.\\n\\r', qSmall, floor(dt))\r\nfprintf('APPROXIMATE wall time to decode %u message batches ~ %2.2f seconds, by extrapolating from %u batches.\\n\\r', qBig, dt * qBig / qSmall, qSmall)\r\ndisp('     -----=====-----     ')\r\n\r\n% *** 'OFFICIAL' TIMING ***\r\n% Re-initialise timer\r\nt0 = clock;\r\nt0_cpu = cputime;\r\n\r\n% Loop\r\nfor i = 1 : qBig\r\n    solution = decode( x );\r\nend;\r\n\r\n% Compute and display elapsed time.\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\ndisp('     -----=====|||||=====-----     ')\r\ndt = etime(clock, t0);\r\nfprintf('Your wall time to decode %u message batches = %2.2f seconds.\\n\\r', qBig, dt)\r\n\r\ndt_cpu = (cputime - t0_cpu);\r\nfprintf(' ( Your CPU time for this = %2.2f seconds. ) \\n\\r', dt_cpu)\r\n\r\n% Display (default) Cody size-based score.\r\nall_nodes = mtree('decode.m', '-file');\r\nsize_score = count(all_nodes);\r\nfprintf('Your Cody-standard size-based score = %i.\\n\\r', size_score)\r\n\r\n% Report revised performance score\r\ncombinedScore = size_score + round(dt * 10);\r\nfprintf('Your combined score = %i.\\n\\r', combinedScore)\r\ndisp('     -----=====|||||=====-----     ')\r\n\r\n% Now disallow any candidate solutions that are TOO SLOW!\r\nif dt \u003e cutoffTimeBig, \r\n    fprintf('Sorry, your submission is TOO SLOW.  It must be able to finish within %u seconds.\\n\\r', cutoffTimeBig)\r\nend;\r\n\r\nassert( dt \u003c= cutoffTimeBig )","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":29,"test_suite_updated_at":"2018-06-17T14:03:55.000Z","rescore_all_solutions":false,"group_id":40,"created_at":"2017-10-03T06:52:32.000Z","updated_at":"2026-04-02T18:15:25.000Z","published_at":"2017-10-03T11:50:21.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\u003eYou have been tasked with decoding several batches of coded messages that have been intercepted.\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\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple\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/Caesar_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCaesar cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (a type of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Substitution_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003esubstitution cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e), an example of which is 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/ROT13\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eROT13 cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (discussed in\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/78-implement-a-rot13-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCody Challenge Problem 78\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e). As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026amp; numbers) are unchanged. Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between batches of messages — although it will be the same for all messages in a batch (also, here you need to decode, not encode).\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\u003eYou can also assume that the original batch of messages will relate to an activity that is referred to by those involved as \\\"Operation Orthos\\\". However, in their secret internal communications they might not use this exact phrase at all, nor this exact capitalisation. Therefore you should seek\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esimultaneous\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e occurrence of the separate words \\\"Operation\\\" and \\\"Orthos\\\" (with any capitalisation) in messages within the given batch.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task is to crack the codes and report back in a\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://au.mathworks.com/help/matlab/ref/struct.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003estructure array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e: (1) the shifting parameter that had been used in the encoding [as\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://au.mathworks.com/help/matlab/ref/uint8.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003euint8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e]; (2) the decoded messages [as a\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://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecell array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (containing\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://au.mathworks.com/help/matlab/ref/char.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003echaracter arrays\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e)]. The name of the structure array shall be \\\"s\\\", with respective fields \\\"shift\\\" and \\\"message\\\".\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose the batch contained two encoded messages —\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"qspdffe x/ pqfsbujpo\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Psuipt jt HP!\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied. In that case A→B, B→C, ..., Y→Z, and Z→A; similarly, a→b, b→c, ..., y→z, and z→a. (Note that the shifting 'wraps' back around.) Thus the original messages would have been: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"proceed w/ operation\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Orthos is GO!\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e .\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe correct answer would comprise:\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[s.shift = uint8(1)  \\ns.message = {'proceed w/ operation', 'Orthos is GO!'}]]\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\u003eIf the batch of messages cannot be decoded when following the above assumptions, then simply return 'scalar'\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://au.mathworks.com/help/matlab/ref/nan.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eNaN\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e in both fields (no need for a cell array).\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNote: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)\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\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \\\"too slow\\\".\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----------\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\u003ePrevious problem: \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/44351\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOperation Phoenix\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Next problem: \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/44383\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOperation Xiangliu\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\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":78,"title":"Implement a ROT13 cipher","description":"Replace each character in string s1 with the character that is shifted 13 positions from it (wrap back to the beginning if necessary). So A ? N, B ? O, and so on until Y ? L and Z ? M. Case of the output should match the case of the input, so a ? n. Non-alphabetic characters are left in place and untouched.\n\nIf\n\n s1 = 'I love MATLAB'\n\nthen\n\n s2 = 'V ybir ZNGYNO'\n\nSee the \u003chttp://en.wikipedia.org/wiki/ROT13 Wikipedia article\u003e for more info.","description_html":"\u003cp\u003eReplace each character in string s1 with the character that is shifted 13 positions from it (wrap back to the beginning if necessary). So A ? N, B ? O, and so on until Y ? L and Z ? M. Case of the output should match the case of the input, so a ? n. Non-alphabetic characters are left in place and untouched.\u003c/p\u003e\u003cp\u003eIf\u003c/p\u003e\u003cpre\u003e s1 = 'I love MATLAB'\u003c/pre\u003e\u003cp\u003ethen\u003c/p\u003e\u003cpre\u003e s2 = 'V ybir ZNGYNO'\u003c/pre\u003e\u003cp\u003eSee the \u003ca href=\"http://en.wikipedia.org/wiki/ROT13\"\u003eWikipedia article\u003c/a\u003e for more info.\u003c/p\u003e","function_template":"function s2 = rot13(s1)\n  s2 = s1;\nend","test_suite":"%% Test #1\n\ns1 = 'I love MATLAB';\ns2_correct = 'V ybir ZNGYNO';\nassert(isequal(rot13(s1),s2_correct))\n\n%% Test #2\n\ns1 = 'I \u003c3 MATLAB!!';\ns2_correct = 'V \u003c3 ZNGYNO!!';\nassert(isequal(rot13(s1),s2_correct))\n\n%% Test #3\n\ns1 = 'The quick fox stumbled over the confusing instructions.';\ns2_correct = 'Gur dhvpx sbk fghzoyrq bire gur pbashfvat vafgehpgvbaf.';\nassert(isequal(rot13(s1),s2_correct))\n\n%% Test #4\n\ns1 = 'Snape kills Dumbledore on page 606. Also, there is no Santa.';\ns2_correct = 'Fancr xvyyf Qhzoyrqber ba cntr 606. Nyfb, gurer vf ab Fnagn.';\nassert(isequal(rot13(s1),s2_correct))\n\n","published":true,"deleted":false,"likes_count":13,"comments_count":3,"created_by":1,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1713,"test_suite_updated_at":"2012-01-18T01:00:28.000Z","rescore_all_solutions":false,"group_id":2,"created_at":"2012-01-18T01:00:28.000Z","updated_at":"2026-01-06T04:39:32.000Z","published_at":"2012-01-18T01:00: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:r\u003e\u003cw:t\u003eReplace each character in string s1 with the character that is shifted 13 positions from it (wrap back to the beginning if necessary). So A ? N, B ? O, and so on until Y ? L and Z ? M. Case of the output should match the case of the input, so a ? n. Non-alphabetic characters are left in place and untouched.\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\u003eIf\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[ s1 = 'I love MATLAB']]\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\u003ethen\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[ s2 = 'V ybir ZNGYNO']]\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\u003eSee the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/ROT13\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWikipedia article\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e for more info.\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":48920,"title":"Cipher and Decipher the message - 3 key ","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 258.624px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 406.5px 129.312px; transform-origin: 406.5px 129.312px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou will be given a input number (eg)  x='geikm'  y==1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eyou have to figure out the dechiper key and match it with given input and decipher it\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eref=ascii(32:126); decipher_key1=[ascii(33:126) ascii(32)  ]; decipher_key2=[ascii(34:126) ascii(32:33)  ];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e decipher_key3=[ascii(35:126) ascii(32:34)  ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput ='hello'\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif y==2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003einput='hello'\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput='geikm' \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\"If\" and \"while\" are forbidden\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function z = decyp(x,y)\r\n  z = x;\r\nend","test_suite":"%%\r\nfiletext = fileread('decyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, 'if')),'if is forbidden')\r\nassert(isempty(strfind(filetext, 'while')),'while is forbidden')\r\nassert(isempty(strfind(filetext, 'switch')),'switch is forbidden')\r\n%%\r\nx = '|G:/br+{|#J';\r\nassert(isequal(decyp(x,1),'how are you'))\r\n%%\r\nx='/`pMy8!u_-Sj-jifkKG?jay=!u(ROia?(RO!RyH!KBRy7)4\\)FT-S^-kK)^j)4@)@';\r\nassert(isequal(decyp(char(x+2),1),'Hard work is worthless for those that don''t believe in themselves'))\r\n%%\r\nx='NO\\G?(dEOCuT-`S\\FTcyz!H( ?TMy!-uTk@i y=!u(dEOfyT9SjR?^\u003e?J-dT\\KR-H^k,S)y2!y=\\KH-E^)y\\ay2z?(a`#)y!ay7)S^xyH)`Hh';\r\nassert(isequal(decyp(char(x+2),1),'While you''re alive, you need a reason for your existence. Being unable to find one is the same as being dead.'))\r\n%%\r\nx='Vkp:-8Ef_y\\jygiuRK4)j@-=Ef(kzi@)(kz!k-HE Bk-7?G\\?BTy\\^yRK?oj?G@?a';\r\nassert(isequal(decyp(char(flip(x+2)),1),flip('Hard work is worthless for those that don''t believe in themselves')))\r\n%%\r\nx='NKSGTydiHCp?-!4\\@?c( !Oy T?M(`-p?kjE (o!pydiHf(?9\\@RTK\u003eT\"-L?\\^\u001f-OKk74)(k!(o\\^:-iK)(Sa(kzTya!^)(`a(,)\\Kx(:)!:h';\r\nassert(isequal(decyp(char(flip(x+2)),1),'.daed gnieb sa emas eht si eno dnif ot elbanu gnieB .ecnetsixe ruoy rof nosaer a deen uoy ,evila er''uoy elihW'))\r\n\r\n%%\r\nx='Try your best good luck';\r\n\r\nassert(isequal(decyp(x,2), '.w|/\"k[w*LAlT{T#GJ/6Q@F'))\r\n\r\n%%\r\nx='Hard work is worthless for those that don''t believe in themselves';\r\nassert(isequal(decyp(char(x+2),2),  '_E40 |dm%UFQU\"nTH\\\"!Q[ MdmpD:n[!pD:tD ?d1+D JzMaz)TUFZUH\\zGQzMbzJ'))\r\n%%\r\nx='While you''re alive, you need a reason for your existence. Being unable to find one is the same as being dead.';\r\nassert(isequal(decyp(char(x+2),2), 'w:a\"!pJ@:6mTUE`=)Tj 0dlp7!T0 tUmT@Jn7 MdmpJ@:T T9FQD!Z+! UcT=1^UlZ@\u003c`z Bd M=1?U@Zz a[ B%!p[Ekz t[ JzFZ^ ?zE?)'))\r\n%%\r\nx=flip('Hard work is worthless for those that don''t believe in themselves');\r\nassert(isequal(decyp(char(flip(x+2)),2),'_E40 |dm%UFQU\"nTH\\\"!Q[ MdmpD:n[!pD:tD ?d1+D JzMaz)TUFZUH\\zGQzMbzJ'))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-21T21:59:49.000Z","updated_at":"2025-06-19T15:48:08.000Z","published_at":"2020-12-22T09:58:35.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given a input number (eg)  x='geikm'  y==1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eyou have to figure out the dechiper key and match it with given input and decipher it\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\u003eref=ascii(32:126); decipher_key1=[ascii(33:126) ascii(32)  ]; decipher_key2=[ascii(34:126) ascii(32:33)  ];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e decipher_key3=[ascii(35:126) ascii(32:34)  ]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput ='hello'\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\u003eif y==2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003einput='hello'\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput='geikm' \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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"If\\\" and \\\"while\\\" are forbidden\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":47970,"title":"Cipher or decipher the number according to the second input - 10 keys","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 531px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 265.5px; transform-origin: 407px 265.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 192px 8px; transform-origin: 192px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou will be given an input number as a char (e.g., x = '1233').\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 267.5px 8px; transform-origin: 267.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou have to figure out the dechiper keys and match it with given input and decipher it\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 323.5px 8px; transform-origin: 323.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; decipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;decipher_key_2=[ 3 4 5 6 7 8 9 0 1 2];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 241px 8px; transform-origin: 241px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003edecipher_key_3=[ 2 3 4 5 6 7 8 9 0 1];decipher_key_4=[ 2 3 4 5 6 7 8 9 0 1];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 143.5px 8px; transform-origin: 143.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e---\u0026gt; These are not real keys , just an example\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 62.5px 8px; transform-origin: 62.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eeg  x=1233 and y=1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42px 8px; transform-origin: 42px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eoutput =2555\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42px 8px; transform-origin: 42px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eif x=2555 y=2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42px 8px; transform-origin: 42px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eoutput =1233\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 76px 8px; transform-origin: 76px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eHint : index :  1-\u0026gt; key 1  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 85px 8px; transform-origin: 85px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                            2\u0026gt; key 2 \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 99.5px 8px; transform-origin: 99.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                                3 -\u0026gt; key 3  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 105.5px 8px; transform-origin: 105.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                                      4-\u0026gt; key 4\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 119px 8px; transform-origin: 119px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                                            5_\u0026gt; key 5\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 225px 8px; transform-origin: 225px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                                                            up to key 10    .............................\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 316.5px 8px; transform-origin: 316.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eif the number of digits exceeds 10 , 11 th digit must have the 1st key and 2nd key for 12th and so on.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 106px 8px; transform-origin: 106px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\"If\" and \"while\" are forbidden.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = cyp(x,y)\r\n  y = x;\r\nend","test_suite":"%%\r\nfiletext = fileread('cyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, 'if')),'if is forbidden')\r\nassert(isempty(strfind(filetext, 'while')),'while is forbidden')\r\nassert(isempty(strfind(filetext, '-')),'- is forbidden')\r\nassert(isempty(strfind(filetext, 'switch')),'switch is forbidden')\r\n\r\n%%\r\nx=num2str(20710655*13335135);\r\ny=1;\r\nassert(isequal(cyp(x,y),97256528638204));\r\n\r\n%%\r\nx='97256528638204';\r\ny=2;\r\nassert(isequal(cyp(x,y),20710655*13335135));\r\n\r\n%%\r\nx='01215';\r\ny=1;\r\nassert(isequal(cyp(x,y),94924));\r\n\r\n%%\r\nx='94924';\r\ny=2;\r\nassert(isequal(['0' num2str(cyp(x,y))],'01215'));\r\n\r\n%%\r\nx=num2str(20435655*136345);\r\ny=1;\r\nassert(isequal(cyp(flip(x),y),1911936178599));\r\n\r\n%%\r\nx=num2str(0435655*1363452);\r\ny=1;\r\nassert(isequal(cyp(flip(x),y),928297415645));\r\n\r\n%%\r\nx='04356551363452';\r\ny=1;\r\nassert(isequal(cyp(flip(x),y),5231324481821));","published":true,"deleted":false,"likes_count":1,"comments_count":10,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":8,"test_suite_updated_at":"2021-01-11T11:28:32.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-14T17:30:48.000Z","updated_at":"2025-06-19T15:49:28.000Z","published_at":"2020-12-14T17:50:04.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given an input number as a char (e.g., x = '1233').\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 have to figure out the dechiper keys and match it with given input and decipher it\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; decipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;decipher_key_2=[ 3 4 5 6 7 8 9 0 1 2];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003edecipher_key_3=[ 2 3 4 5 6 7 8 9 0 1];decipher_key_4=[ 2 3 4 5 6 7 8 9 0 1];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e---\u0026gt; These are not real keys , just an example\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\u003eeg  x=1233 and y=1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput =2555\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\u003eif x=2555 y=2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput =1233\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\u003eHint : index :  1-\u0026gt; key 1  \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                            2\u0026gt; key 2 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                                3 -\u0026gt; key 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\u003e                                      4-\u0026gt; key 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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                                            5_\u0026gt; key 5\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                                                            up to key 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\u003eif the number of digits exceeds 10 , 11 th digit must have the 1st key and 2nd key for 12th and so on.\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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"If\\\" and \\\"while\\\" are forbidden.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":44383,"title":"Code breaker, Part III:  Operation Xiangliu","description":"You have been tasked with decoding several batches of coded messages that have been intercepted.  \r\n\r\nBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple \u003chttps://en.wikipedia.org/wiki/Caesar_cipher Caesar cipher\u003e (a type of \u003chttps://en.wikipedia.org/wiki/Substitution_cipher substitution cipher\u003e), an example of which is the \u003chttps://en.wikipedia.org/wiki/ROT13 ROT13 cipher\u003e (discussed in \u003chttps://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher Cody Challenge Problem 78\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation, numbers, accented letters) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and will vary _between_ (not within) batches — also, here you need to decode, not encode.  \r\n\r\nThese latest activities that you are investigating have been nicknamed 'Operation Xiangliu' by your own organisation.  A few decoding options are at your organisation's disposal:  \r\n\r\n# Test the candidate decodings against all words in a large dictionary — this could work, but it is very slow.\r\n# Test the candidate decodings for the appearance of a name or phrase that is certain to appear regularly (e.g. \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351 \"Operation Phoenix\"\u003e) — unfortunately as yet there is not enough knowledge of the activities to be sure of a suitable name or phrase to use.  \r\n# Test the candidate decodings against all words in a short list comprising, say, the hundred most frequently used English words.\r\n\r\nThe *third option* will be faster than the first option, and more reliable than the second option, so this is the approach you will be taking.  \r\n\r\nYou have been careful to avoid using 'lemmatised' lists (which contain e.g. the verb \"to be\", rather than the various inflected forms such as \"am\", \"is\", \"are\") like those based on the \u003chttps://web.archive.org/web/20111226085859/http://oxforddictionaries.com/words/the-oec-facts-about-the-language OEC\u003e or \u003chttps://www.wordfrequency.info/free.asp?s=y COCA\u003e, and after setting aside \u003chttp://world-english.org/english500.htm another list\u003e you finally choose the \u003chttp://ucrel.lancs.ac.uk/bncfreq/samples/120.pdf list based on the BNC\u003e as the most reliable, and will use the first 100 words on that list.  \r\nThis list will be available for you to access as an input variable, |bncWordlist|, to your function. Note: (i) some entries on the list are morphemes (e.g. \"\u0026#x200A;n't\u0026#x200A;\" and \"\u0026#x200A;'s\u0026#x200A;\") rather than words;  (ii) some entries appear more than once (representing different grammatical word classes).  Of course, in the original messages any capitalisation might be used.  \r\n\r\nYou have been instructed that your 'certitude' (degree of confidence) in the decoding must be reported for each batch, and shall depend proportionally upon the sum of the characters for the words/morphemes in the decoded message that match words/morphemes in |bncWordlist|.  Being able to match words/morphemes accounting for three-tenths of the characters (excluding spaces) shall correspond to 100% certitude;  matching three-twentieths would be 50% certitude, and so on.  Certitude shall be reported as a percentage, rounded _up_ to the nearest integer, not greater than 100.  You need to maximise your certitude for each batch by appropriate choice of the shifting parameter.   If there are multiple shifts of equal certitude, report both options on different rows (arranged in order of ascending shift parameter).\r\n\r\nYour task is to crack the codes and report back in a \u003chttp://au.mathworks.com/help/matlab/ref/struct.html structure array\u003e: \u0026nbsp; (1) the shifting parameter that had been used in the encoding [as \u003chttp://au.mathworks.com/help/matlab/ref/uint8.html uint8\u003e] (usually scalar, but may be column vector); \u0026nbsp; (2) the decoded messages [as a \u003chttp://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta cell array\u003e (containing \u003chttp://au.mathworks.com/help/matlab/ref/char.html character arrays\u003e)] (usually an array with a single row, but occasionally with multiple rows); \u0026nbsp; (3) your 'certitude' in the decoding [as \u003chttp://au.mathworks.com/help/matlab/ref/uint8.html uint8\u003e] (always scalar).  \r\nThe name of the structure array shall be |s|, with respective fields |shift|, |message|, and |certitude|.  \r\n\r\n*EXAMPLE 1*\r\n\r\nSuppose the batch contained two encoded messages — _\"Vomftt qvstvfe, pqfo op eppst.\"_ and _\"Ffmt dbo ljmm, opu pomz xpvoe.\"_ (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  \r\nThus the original messages would have been:  _\"Unless pursued, open no doors.\"_ and _\"Eels can kill, not only wound.\"_ .  Twelve of the 51 characters have been matched:  \"no\", \"can\", \"not\", and \"only\".  \r\n\r\nThe correct answer would therefore comprise:  \r\n\r\n  s.shift = uint8(1)  \r\n  s.message = {'Unless pursued, open no doors.', 'Eels can kill, not only wound.'}\r\n  s.certitude = uint8(79)\r\n\r\n*EXAMPLE 2*\r\n\r\nSuppose the batch contained one encoded message — _\"Oa oqvvq'u cnycau dggp: \"Ctu itcvkc ctvku\".\"_ (provided as a character array within a cell array) — and a (right-shifting) ROT2 cipher had been applied.  In that case A→C, B→D, ..., Y→A, and Z→B;  similarly, a→c, b→d, ..., y→a, and z→b.  \r\nThus the original message would have been:  _\"My motto's always been: \"Ars gratia artis\".\"_ .  Eight of the 37 characters have been matched: \"My\", \"\u0026#x200A;'s\u0026#x200A;\", and \"been\".  Note carefully that:  \"\u0026#x200A;'s\u0026#x200A;\" should only be matched once;  \"to\" (in motto), \"be\" (in been), \"at\" (in gratia), \"is\" (in artis) and \"a\" (passim) should _not_ be matched at all;  and \"\u0026#x200A;'\u0026#x200A;\" will only ever be used as an apostrophe (never as a quotation mark).  \r\n\r\nThe correct answer would therefore comprise:  \r\n\r\n  s.shift = uint8(2)  \r\n  s.message = {'My motto''s always been: \"Ars gratia artis\".'}\r\n  s.certitude = uint8(73)\r\n\r\nIf the batch of messages cannot be decoded when following the above assumptions, then return the original encoded message(s) unchanged, with a shift of zero and a certitude of zero.  \r\n\r\n|Note:  Many Cody solutions are hard to read and not necessarily computationally efficient.  To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable).  Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)|  \r\n\r\nTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".  \r\n\r\n----------\r\n\r\nPrevious problem:  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44356 Operation Orthos\u003e.  Next problem:  TBA.","description_html":"\u003cp\u003eYou have been tasked with decoding several batches of coded messages that have been intercepted.\u003c/p\u003e\u003cp\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple \u003ca href = \"https://en.wikipedia.org/wiki/Caesar_cipher\"\u003eCaesar cipher\u003c/a\u003e (a type of \u003ca href = \"https://en.wikipedia.org/wiki/Substitution_cipher\"\u003esubstitution cipher\u003c/a\u003e), an example of which is the \u003ca href = \"https://en.wikipedia.org/wiki/ROT13\"\u003eROT13 cipher\u003c/a\u003e (discussed in \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher\"\u003eCody Challenge Problem 78\u003c/a\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation, numbers, accented letters) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and will vary \u003ci\u003ebetween\u003c/i\u003e (not within) batches — also, here you need to decode, not encode.\u003c/p\u003e\u003cp\u003eThese latest activities that you are investigating have been nicknamed 'Operation Xiangliu' by your own organisation.  A few decoding options are at your organisation's disposal:\u003c/p\u003e\u003col\u003e\u003cli\u003eTest the candidate decodings against all words in a large dictionary — this could work, but it is very slow.\u003c/li\u003e\u003cli\u003eTest the candidate decodings for the appearance of a name or phrase that is certain to appear regularly (e.g. \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351\"\u003e\"Operation Phoenix\"\u003c/a\u003e) — unfortunately as yet there is not enough knowledge of the activities to be sure of a suitable name or phrase to use.\u003c/li\u003e\u003cli\u003eTest the candidate decodings against all words in a short list comprising, say, the hundred most frequently used English words.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eThe \u003cb\u003ethird option\u003c/b\u003e will be faster than the first option, and more reliable than the second option, so this is the approach you will be taking.\u003c/p\u003e\u003cp\u003eYou have been careful to avoid using 'lemmatised' lists (which contain e.g. the verb \"to be\", rather than the various inflected forms such as \"am\", \"is\", \"are\") like those based on the \u003ca href = \"https://web.archive.org/web/20111226085859/http://oxforddictionaries.com/words/the-oec-facts-about-the-language\"\u003eOEC\u003c/a\u003e or \u003ca href = \"https://www.wordfrequency.info/free.asp?s=y\"\u003eCOCA\u003c/a\u003e, and after setting aside \u003ca href = \"http://world-english.org/english500.htm\"\u003eanother list\u003c/a\u003e you finally choose the \u003ca href = \"http://ucrel.lancs.ac.uk/bncfreq/samples/120.pdf\"\u003elist based on the BNC\u003c/a\u003e as the most reliable, and will use the first 100 words on that list.  \r\nThis list will be available for you to access as an input variable, \u003ctt\u003ebncWordlist\u003c/tt\u003e, to your function. Note: (i) some entries on the list are morphemes (e.g. \"\u0026#x200A;n't\u0026#x200A;\" and \"\u0026#x200A;'s\u0026#x200A;\") rather than words;  (ii) some entries appear more than once (representing different grammatical word classes).  Of course, in the original messages any capitalisation might be used.\u003c/p\u003e\u003cp\u003eYou have been instructed that your 'certitude' (degree of confidence) in the decoding must be reported for each batch, and shall depend proportionally upon the sum of the characters for the words/morphemes in the decoded message that match words/morphemes in \u003ctt\u003ebncWordlist\u003c/tt\u003e.  Being able to match words/morphemes accounting for three-tenths of the characters (excluding spaces) shall correspond to 100% certitude;  matching three-twentieths would be 50% certitude, and so on.  Certitude shall be reported as a percentage, rounded \u003ci\u003eup\u003c/i\u003e to the nearest integer, not greater than 100.  You need to maximise your certitude for each batch by appropriate choice of the shifting parameter.   If there are multiple shifts of equal certitude, report both options on different rows (arranged in order of ascending shift parameter).\u003c/p\u003e\u003cp\u003eYour task is to crack the codes and report back in a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/struct.html\"\u003estructure array\u003c/a\u003e: \u0026nbsp; (1) the shifting parameter that had been used in the encoding [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/uint8.html\"\u003euint8\u003c/a\u003e] (usually scalar, but may be column vector); \u0026nbsp; (2) the decoded messages [as a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta\"\u003ecell array\u003c/a\u003e (containing \u003ca href = \"http://au.mathworks.com/help/matlab/ref/char.html\"\u003echaracter arrays\u003c/a\u003e)] (usually an array with a single row, but occasionally with multiple rows); \u0026nbsp; (3) your 'certitude' in the decoding [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/uint8.html\"\u003euint8\u003c/a\u003e] (always scalar).  \r\nThe name of the structure array shall be \u003ctt\u003es\u003c/tt\u003e, with respective fields \u003ctt\u003eshift\u003c/tt\u003e, \u003ctt\u003emessage\u003c/tt\u003e, and \u003ctt\u003ecertitude\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003e\u003cb\u003eEXAMPLE 1\u003c/b\u003e\u003c/p\u003e\u003cp\u003eSuppose the batch contained two encoded messages — \u003ci\u003e\"Vomftt qvstvfe, pqfo op eppst.\"\u003c/i\u003e and \u003ci\u003e\"Ffmt dbo ljmm, opu pomz xpvoe.\"\u003c/i\u003e (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  \r\nThus the original messages would have been:  \u003ci\u003e\"Unless pursued, open no doors.\"\u003c/i\u003e and \u003ci\u003e\"Eels can kill, not only wound.\"\u003c/i\u003e .  Twelve of the 51 characters have been matched:  \"no\", \"can\", \"not\", and \"only\".\u003c/p\u003e\u003cp\u003eThe correct answer would therefore comprise:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003es.shift = uint8(1)  \r\ns.message = {'Unless pursued, open no doors.', 'Eels can kill, not only wound.'}\r\ns.certitude = uint8(79)\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eEXAMPLE 2\u003c/b\u003e\u003c/p\u003e\u003cp\u003eSuppose the batch contained one encoded message — \u003ci\u003e\"Oa oqvvq'u cnycau dggp: \"Ctu itcvkc ctvku\".\"\u003c/i\u003e (provided as a character array within a cell array) — and a (right-shifting) ROT2 cipher had been applied.  In that case A→C, B→D, ..., Y→A, and Z→B;  similarly, a→c, b→d, ..., y→a, and z→b.  \r\nThus the original message would have been:  \u003ci\u003e\"My motto's always been: \"Ars gratia artis\".\"\u003c/i\u003e .  Eight of the 37 characters have been matched: \"My\", \"\u0026#x200A;'s\u0026#x200A;\", and \"been\".  Note carefully that:  \"\u0026#x200A;'s\u0026#x200A;\" should only be matched once;  \"to\" (in motto), \"be\" (in been), \"at\" (in gratia), \"is\" (in artis) and \"a\" (passim) should \u003ci\u003enot\u003c/i\u003e be matched at all;  and \"\u0026#x200A;'\u0026#x200A;\" will only ever be used as an apostrophe (never as a quotation mark).\u003c/p\u003e\u003cp\u003eThe correct answer would therefore comprise:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003es.shift = uint8(2)  \r\ns.message = {'My motto''s always been: \"Ars gratia artis\".'}\r\ns.certitude = uint8(73)\r\n\u003c/pre\u003e\u003cp\u003eIf the batch of messages cannot be decoded when following the above assumptions, then return the original encoded message(s) unchanged, with a shift of zero and a certitude of zero.\u003c/p\u003e\u003cp\u003e\u003ctt\u003eNote:  Many Cody solutions are hard to read and not necessarily computationally efficient.  To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable).  Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)\u003c/tt\u003e\u003c/p\u003e\u003cp\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".\u003c/p\u003e\u003cp\u003e----------\u003c/p\u003e\u003cp\u003ePrevious problem:  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44356\"\u003eOperation Orthos\u003c/a\u003e.  Next problem:  TBA.\u003c/p\u003e","function_template":"% Comments are nice, aren't they....\r\nfunction s = decode(x, bncWordlist)\r\nend","test_suite":"%% NOTE:  \r\n% This test suite can be updated if inappropriate 'hacks' \r\n% are discovered in any submitted solutions.\r\n% The assessment of your submission may therefore change over time.  \r\n\r\nglobal bncWordlist\r\nbncWordlist = {'the', 'of', 'and', 'a', 'in', 'to', 'it', 'is', 'to', 'was', ...\r\n    'I', 'for', 'that', 'you', 'he', 'be', 'with', 'on', 'by', 'at', ...\r\n    'have', 'are', 'not', 'this', '''s', 'but', 'had', 'they', 'his', ...\r\n    'from', 'she', 'that', 'which', 'or', 'we', '''s', 'an', 'n''t', 'were', ...\r\n    'as', 'do', 'been', 'their', 'has', 'would', 'there', 'what', 'will', 'all', ...\r\n    'if', 'can', 'her', 'said', 'who', 'one', 'so', 'up', 'as', 'them', 'some', ...\r\n    'when', 'could', 'him', 'into', 'its', 'then', 'two', 'out', 'time', ...\r\n    'my', 'about', 'did', 'your', 'now', 'me', 'no', 'other', 'only', 'just', ...\r\n    'more', 'these', 'also', 'people', 'know', 'any', 'first', 'see', 'very', 'new', ...\r\n    'may', 'well', 'should', 'her', 'like', 'than', 'how', 'get', 'way', 'one', 'our'};\r\n\r\n\r\n%% Anti-hacking\r\n% EDIT (2019-07-02). Anti-hacking provision\r\n% Ensure only builtin functions will be called.\r\n! rm -v fileread.m\r\n! rm -v assert.m\r\n% END EDIT (2019-07-02)\r\n% EDIT (2018-06-18).  Anti-hacking provision\r\nRE = regexp(fileread('decode.m'), '\\w+', 'match');\r\ntabooWords = {'ans', 'assert', 'freepass', 'tic'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any(  cellfun( @(z) ismember(z, tabooWords), RE )  ), msg)\r\n\r\nfor j = 1 : randi(10)\r\n    decode({'Pizza for dinner.'}, {'mozzarella', 'mushrooms'});\r\nend;\r\n% END EDIT (2018-06-18)\r\n\r\n\r\n%% Test 1\r\nglobal bncWordlist\r\nx =                 {'Vomftt qvstvfe, pqfo op eppst.', 'Ffmt dbo ljmm, opu pomz xpvoe.'};\r\ns_correct.shift = uint8(1);\r\ns_correct.message = {'Unless pursued, open no doors.', 'Eels can kill, not only wound.'};\r\ns_correct.certitude = uint8(79);\r\ns = decode(x, bncWordlist);\r\n%disp(' *** ');  disp(s.message);  disp(' *** ')\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.' )\r\nassert( isequal(s.message{1}, s_correct.message{1}), 'Wrong message{1}.' )\r\nassert( isequal(s.message{2}, s_correct.message{2}), 'Wrong message{2}.' )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.' )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.' )\r\nassert( isequal(s, s_correct), 'Wrong s.' )\r\nassert( isequal(class(s.shift), 'uint8'), 'Wrong class.' )\r\nassert( isequal(class(s.message), 'cell'), 'Wrong class.'  )\r\nassert( isequal(class(s.message{1}), 'char'), 'Wrong class.'  )\r\nassert( isequal(class(s.certitude), 'uint8'), 'Wrong class.'  )\r\n\r\n\r\n%% Test 2\r\nglobal bncWordlist\r\nx =                 {'Doo zduiduh lv edvhg rq ghfhswlrq.', ...\r\n    'Khqfh, zkhq deoh wr dwwdfn, zh pxvw vhhp xqdeoh;  zkhq xvlqj rxu irufhv, zh pxvw vhhp lqdfwlyh;  zkhq zh duh qhdu, zh pxvw pdnh wkh hqhpb eholhyh zh duh idu dzdb; zkhq idu dzdb, zh pxvw pdnh klp eholhyh zh duh qhdu.'};\r\ns_correct.shift = uint8(3);\r\ns_correct.message = {'All warfare is based on deception.', ...\r\n    'Hence, when able to attack, we must seem unable;  when using our forces, we must seem inactive;  when we are near, we must make the enemy believe we are far away; when far away, we must make him believe we are near.'};\r\ns_correct.certitude = uint8(95);\r\ns = decode(x, bncWordlist);\r\n%disp(' *** ');  disp(s.message);  disp(' *** ')\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 3\r\nglobal bncWordlist\r\nx =                 {'Elia lrq yxfqp ql bkqfzb qeb bkbjv.  Cbfdk afploabo, xka zorpe efj.', ...\r\n    'Fc eb fp pbzrob xq xii mlfkqp, yb mobmxoba clo efj.  Fc eb fp fk prmboflo pqobkdqe, bsxab efj.'};\r\ns_correct.shift = uint8(23);\r\ns_correct.message = {'Hold out baits to entice the enemy.  Feign disorder, and crush him.', ...\r\n    'If he is secure at all points, be prepared for him.  If he is in superior strength, evade him.'};\r\ns_correct.certitude = uint8(100);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 4\r\nglobal bncWordlist\r\nx =                 {'Ax qgmj ghhgfwfl ak gx uzgdwjau lwehwj, kwwc lg ajjalslw zae.  Hjwlwfv lg tw owsc, lzsl zw esq yjgo sjjgysfl.', ...\r\n    'Ax zw ak lscafy zak wskw, yanw zae fg jwkl.', ...\r\n    'Ax zak xgjuwk sjw mfalwv, kwhsjslw lzwe.', ...\r\n    'Sllsuc zae ozwjw zw ak mfhjwhsjwv, shhwsj ozwjw qgm sjw fgl wphwulwv.'};\r\ns_correct.shift = uint8(18);\r\ns_correct.message = {'If your opponent is of choleric temper, seek to irritate him.  Pretend to be weak, that he may grow arrogant.', ...\r\n    'If he is taking his ease, give him no rest.', ...\r\n    'If his forces are united, separate them.', ...\r\n    'Attack him where he is unprepared, appear where you are not expected.'};\r\ns_correct.certitude = uint8(100);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 5\r\nglobal bncWordlist\r\nx =                 {'Aes cèwo vo foxd bémyvdo vo dowzy', ...\r\n    'Yx wo dbksdo no dbkîdbo aekxn to dbksdo no vk népksdo ne csvoxmo / Vo csvoxmo ocd n''yb, wksc t''ks mryscs vk mknoxmo', ... \r\n    'Mrkaeo wyd, mrkaeo zrbkco nsdc kfom owzrkco / Pksd no Mvkeno WM, vo mywwkxny no vk zrbkco', ...\r\n    'Mkb t''cesc ex WM n''kddkaeo, ckxc dsmc, kedroxdsaeo zkc ox dym / Zbêd à pbkzzob ceb vo lokd zyeb vo wyefowoxd rsz-ryz', ...\r\n    'Ne bkz n''kddkaeo aes pbkzzo, ézkdo, wkdbkaeo od zkdkdbkaeo / Zvec no ckxq de mvkaeoc, t''cesc WM noc Mkbzkdoc', ...\r\n    'Vo zénkqyqeo ox fyqeo ke xyw no myno Cyvkkb ye Mvkeno WM / Do zbyzyco n''émyedob moms / Ae''yx ézovvo voc fyiovvoc, nèc ae''yx cyxxo voc myxcyxxoc'};\r\ns_correct.shift = uint8([0 21]');\r\n% TIP:  The original message was not English!\r\ns_correct.message(1, :) = {'Aes cèwo vo foxd bémyvdo vo dowzy', ... \r\n    'Yx wo dbksdo no dbkîdbo aekxn to dbksdo no vk népksdo ne csvoxmo / Vo csvoxmo ocd n''yb, wksc t''ks mryscs vk mknoxmo', ... \r\n    'Mrkaeo wyd, mrkaeo zrbkco nsdc kfom owzrkco / Pksd no Mvkeno WM, vo mywwkxny no vk zrbkco', ... \r\n    'Mkb t''cesc ex WM n''kddkaeo, ckxc dsmc, kedroxdsaeo zkc ox dym / Zbêd à pbkzzob ceb vo lokd zyeb vo wyefowoxd rsz-ryz', ... \r\n    'Ne bkz n''kddkaeo aes pbkzzo, ézkdo, wkdbkaeo od zkdkdbkaeo / Zvec no ckxq de mvkaeoc, t''cesc WM noc Mkbzkdoc', ... \r\n    'Vo zénkqyqeo ox fyqeo ke xyw no myno Cyvkkb ye Mvkeno WM / Do zbyzyco n''émyedob moms / Ae''yx ézovvo voc fyiovvoc, nèc ae''yx cyxxo voc myxcyxxoc'}\r\ns_correct.message(2, :) = {'Fjx hèbt at ktci gérdait at itbed', ... \r\n    'Dc bt igpxit st igpîigt fjpcs yt igpxit st ap séupxit sj hxatcrt / At hxatcrt thi s''dg, bpxh y''px rwdxhx ap rpstcrt', ... \r\n    'Rwpfjt bdi, rwpfjt ewgpht sxih pktr tbewpht / Upxi st Rapjst BR, at rdbbpcsd st ap ewgpht', ... \r\n    'Rpg y''hjxh jc BR s''piipfjt, hpch ixrh, pjiwtcixfjt eph tc idr / Egêi à ugpeetg hjg at qtpi edjg at bdjktbtci wxe-wde', ... \r\n    'Sj gpe s''piipfjt fjx ugpeet, éepit, bpigpfjt ti epipigpfjt / Eajh st hpcv ij rapfjth, y''hjxh BR sth Rpgepith', ... \r\n    'At eéspvdvjt tc kdvjt pj cdb st rdst Hdappg dj Rapjst BR / It egdedht s''érdjitg rtrx / Fj''dc éetaat ath kdntaath, sèh fj''dc hdcct ath rdchdccth'}\r\ns_correct.certitude = uint8(11);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 6\r\nglobal bncWordlist\r\nx =                 {'Brvdujcnm mrbxamna yxbcdujcnb ynaonlc mrblryurwn;  brvdujcnm onja yxbcdujcnb lxdajpn;  brvdujcnm fnjtwnbb yxbcdujcnb bcanwpcq.' ...\r\n    'X mrerwn jac xo bdkcunch jwm bnlanlh!'};\r\ns_correct.shift = uint8(9);\r\ns_correct.message = {'Simulated disorder postulates perfect discipline;  simulated fear postulates courage;  simulated weakness postulates strength.' ...\r\n    'O divine art of subtlety and secrecy!'};\r\ns_correct.certitude = uint8(12);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 7\r\nglobal bncWordlist\r\nx =                 {'Nv treefk vekvi zekf rcczretv nzky evzxysfizex gizetvj lekzc nv riv rthlrzekvu nzky kyvzi uvjzxej.', ... \r\n    'Nv riv efk wzk kf cvru re ridp fe kyv drity lecvjj nv riv wrdzczri nzky kyv wrtv fw kyv tflekip — zkj dflekrzej reu wfivjkj, zkj gzkwrccj reu givtzgztvj, zkj drijyvj reu jnrdgj.', ... \r\n    'Nv jyrcc sv lerscv kf klie erklirc rumrekrxvj kf rttflek lecvjj nv drbv ljv fw cftrc xlzuvj.'};\r\ns_correct.shift = uint8(17);\r\ns_correct.message = {'We cannot enter into alliance with neighboring princes until we are acquainted with their designs.', ...  \r\n    'We are not fit to lead an army on the march unless we are familiar with the face of the country — its mountains and forests, its pitfalls and precipices, its marshes and swamps.', ...  \r\n    'We shall be unable to turn natural advantages to account unless we make use of local guides.'};\r\ns_correct.certitude = uint8(97);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 8\r\nglobal bncWordlist\r\nx =                 {'Oa oqvvq''u cnycau dggp: \"Ctu itcvkc ctvku\".'};\r\ns_correct.shift = uint8(2);\r\ns_correct.message = {'My motto''s always been: \"Ars gratia artis\".'};\r\ns_correct.certitude = uint8(73);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 9\r\nglobal bncWordlist\r\nx =                 {'Bestow rewards without regard 2 rule;  issue orders without regard 2 previous arrangements', ...\r\n    '\"Let advance bee richly rewarded \u0026 retreat bee heavily punished.\"', ...\r\n    ' Qwertyuiop''asdfghjkl.   Zxcvbnm-0123456789 = pass. ', ...\r\n    'αβγδ — persimon–apricot hybrid.', ...\r\n    'aIanasatbebydoheifinisitmemynoofonor''ssotoupweallandanyarebutcandidforgethadhasherhimhishowitsmaynewnotnown''toneouroutseeshethetwowaswaywhoyoualsobeenfromhaveintojustknowlikemoreonlysaidsomethanthatthemthentheythistimeverywellwerewhatwhenwillwithyouraboutcouldfirstothertheirtherethesewhichwouldpeopleshould'};\r\ns_correct.shift = uint8(0);\r\ns_correct.message = x;\r\ns_correct.certitude = uint8(0);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% TIMING \r\n% Note:  The Time Trial section does not check accuracy; that is done above.\r\n\r\n% Acknowledgements  \r\n% Portions of this timing test code were inspired by:\r\n% (1) Problem 937. \"Rubik's Mini Cube: Solve Randomized Cube in 11 Moves or Less; Score is by Time (msec)\" by Richard Zapor.\r\n% (2) Problem 2733. \"Evil Number\" by Jan Orwat.\r\n% (3) Feedback in comments from Peng Liu.\r\n% (4) Problem Problem 1237. \"It's race time! Write a faster function than the test suite call of unique().\" by Jeremy.\r\n\r\n% INITIALISE\r\nglobal bncWordlist\r\nx =                 {'Vomftt qvstvfe, pqfo op eppst.', 'Ffmt dbo ljmm, opu pomz xpvoe.'};\r\nqSmall = 50;\r\nqBig = 1000;\r\n%cutoffTimeBig = 10;    % Maximum allowable walltime (in seconds) to run function in a loop with qBig iterations.\r\n\r\n% EDIT (2018-06-17).  Reduced time [slightly] to pose reasonable challenge.\r\n% Accounted for improving Cody server speed per Problem 44655.\r\ncutoffTimeBig = 8;    % Maximum allowable walltime (in seconds) to run function in a loop with qBig iterations.\r\ntRef = datetime('2018-06-17', 'InputFormat','yyyy-MM-dd');\r\ntNow = datetime('now');\r\nyearsElapsed = (datenum(tNow) - datenum(tRef)) / 365.24;\r\ndisp(' . ');\r\nfprintf('\\r\\n\\r\\n\\r\\nSubmission evaluated for speed on %s.\\r\\n', datestr(tNow, 'dd mmmm yyyy'))\r\nrInf = 0.2;   delta = cutoffTimeBig - rInf;  tau = 3.6;  % Data from Problem 44655, based on Problem 963.\r\nqBig = ceil( qBig * (cutoffTimeBig - rInf) * exp(yearsElapsed/tau) / delta );\r\nfprintf('\\r\\n\\r\\n\\r\\nTo account for computational power increases over time, number of iterations increased to %u.\\r\\n', qBig)\r\n% END EDIT (2018-06-17)\r\n\r\n\r\n% *** PRELIMINARY TIMING WITH timeit ***\r\nfDecode = @()   decode(x, bncWordlist);\r\ndt_timeit = timeit( fDecode );\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\nfprintf('APPROXIMATE time to decode %u message batches ~ %2.2f seconds, according to ''timeit''.\\n\\r', qBig, dt_timeit * qBig)\r\n\r\n% *** PRELIMINARY TIMING WITH SHORT LOOP ***\r\n% In case the submitted function has a lot of text output, \r\n% get an estimate based on just a few iterations\r\n% Initialise\r\nt0 = clock;\r\n\r\n% Loop\r\nfor i = 1 : qSmall\r\n    solution = decode(x, bncWordlist);\r\nend;\r\n\r\n% Compute and display elapsed time.\r\ndt = etime(clock, t0);\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\n%fprintf('Your wall time to decode %u message batches = %i seconds.\\n\\r', qSmall, floor(dt))\r\nfprintf('APPROXIMATE wall time to decode %u message batches ~ %2.2f seconds, by extrapolating from %u batches.\\n\\r', qBig, dt * qBig / qSmall, qSmall)\r\n\r\n% *** 'OFFICIAL' TIMING ***\r\n% Re-initialise timer\r\nt0 = clock;\r\nt0_cpu = cputime;\r\n\r\n% Loop\r\nfor i = 1 : qBig\r\n    % EDIT (2018-06-17).   Ensure each case is unique.\r\n    characters = ['  ,   .' char(randi([97,122], [1,23]))];\r\n    x{2} = characters( randperm(30) );\r\n    % END EDIT (2018-06-17)\r\n    solution = decode(x, bncWordlist);\r\nend;\r\n\r\n% Compute and display elapsed time.\r\ndt = etime(clock, t0);\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\nfprintf('Your wall time to decode %u message batches = %2.2f seconds.\\n\\r', qBig, dt)\r\n\r\ndt_cpu = (cputime - t0_cpu);\r\nfprintf(' ( Your CPU time for this = %2.2f seconds. ) \\n\\r', dt_cpu)\r\n\r\n% Display (default) Cody size-based score.\r\nall_nodes = mtree('decode.m', '-file');\r\nsize_score = count(all_nodes);\r\nfprintf('Your Cody-standard size-based score = %i.\\n\\r', size_score)\r\n\r\n% Report revised performance score\r\ncombinedScore = size_score + round(dt * 10);\r\nfprintf('Your combined score = %i.\\n\\r', combinedScore)\r\ndisp('     -----=====|||||=====-----     ')\r\n\r\n% Now disallow any candidate solutions that are TOO SLOW!\r\nif dt \u003e cutoffTimeBig, \r\n    fprintf('Sorry, your submission is TOO SLOW.  It must be able to finish within %u seconds.\\n\\r', cutoffTimeBig)\r\nend;\r\n\r\nassert( dt \u003c= cutoffTimeBig, 'Exceeded time limit specified in Test Suite.' )","published":true,"deleted":false,"likes_count":2,"comments_count":16,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":13,"test_suite_updated_at":"2019-07-02T13:23:18.000Z","rescore_all_solutions":true,"group_id":1,"created_at":"2017-10-12T23:17:24.000Z","updated_at":"2026-04-02T20:05:58.000Z","published_at":"2017-10-15T06:52:40.000Z","restored_at":"2017-10-25T07:03:11.000Z","restored_by":null,"spam":false,"simulink":false,"admin_reviewed":true,"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\u003eYou have been tasked with decoding several batches of coded messages that have been intercepted.\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\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple\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/Caesar_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCaesar cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (a type of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Substitution_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003esubstitution cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e), an example of which is 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/ROT13\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eROT13 cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (discussed in\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/78-implement-a-rot13-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCody Challenge Problem 78\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e). As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation, numbers, accented letters) are unchanged. Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and will vary\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ebetween\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (not within) batches — also, here you need to decode, not encode.\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\u003eThese latest activities that you are investigating have been nicknamed 'Operation Xiangliu' by your own organisation. A few decoding options are at your organisation's disposal:\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\u003eTest the candidate decodings against all words in a large dictionary — this could work, but it is very slow.\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\u003eTest the candidate decodings for the appearance of a name or phrase that is certain to appear regularly (e.g.\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/44351\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\\\"Operation Phoenix\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e) — unfortunately as yet there is not enough knowledge of the activities to be sure of a suitable name or phrase to use.\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\u003eTest the candidate decodings against all words in a short list comprising, say, the hundred most frequently used English words.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ethird option\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e will be faster than the first option, and more reliable than the second option, so this is the approach you will be taking.\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\u003eYou have been careful to avoid using 'lemmatised' lists (which contain e.g. the verb \\\"to be\\\", rather than the various inflected forms such as \\\"am\\\", \\\"is\\\", \\\"are\\\") like those based on 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://web.archive.org/web/20111226085859/http://oxforddictionaries.com/words/the-oec-facts-about-the-language\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOEC\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e or\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.wordfrequency.info/free.asp?s=y\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCOCA\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, and after setting aside\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://world-english.org/english500.htm\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eanother list\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e you finally choose the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://ucrel.lancs.ac.uk/bncfreq/samples/120.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003elist based on the BNC\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e as the most reliable, and will use the first 100 words on that list. This list will be available for you to access as an input variable,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ebncWordlist\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, to your function. Note: (i) some entries on the list are morphemes (e.g. \\\" n't \\\" and \\\" 's \\\") rather than words; (ii) some entries appear more than once (representing different grammatical word classes). Of course, in the original messages any capitalisation might be used.\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\u003eYou have been instructed that your 'certitude' (degree of confidence) in the decoding must be reported for each batch, and shall depend proportionally upon the sum of the characters for the words/morphemes in the decoded message that match words/morphemes in\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ebncWordlist\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. Being able to match words/morphemes accounting for three-tenths of the characters (excluding spaces) shall correspond to 100% certitude; matching three-twentieths would be 50% certitude, and so on. Certitude shall be reported as a percentage, rounded\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eup\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e to the nearest integer, not greater than 100. You need to maximise your certitude for each batch by appropriate choice of the shifting parameter. If there are multiple shifts of equal certitude, report both options on different rows (arranged in order of ascending shift parameter).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task is to crack the codes and report back in a\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://au.mathworks.com/help/matlab/ref/struct.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003estructure array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e: (1) the shifting parameter that had been used in the encoding [as\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://au.mathworks.com/help/matlab/ref/uint8.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003euint8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e] (usually scalar, but may be column vector); (2) the decoded messages [as a\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://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecell array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (containing\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://au.mathworks.com/help/matlab/ref/char.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003echaracter arrays\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e)] (usually an array with a single row, but occasionally with multiple rows); (3) your 'certitude' in the decoding [as\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://au.mathworks.com/help/matlab/ref/uint8.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003euint8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e] (always scalar). The name of the structure array shall be\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, with respective fields\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eshift\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003emessage\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ecertitude\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eEXAMPLE 1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose the batch contained two encoded messages —\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Vomftt qvstvfe, pqfo op eppst.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Ffmt dbo ljmm, opu pomz xpvoe.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied. In that case A→B, B→C, ..., Y→Z, and Z→A; similarly, a→b, b→c, ..., y→z, and z→a. Thus the original messages would have been: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Unless pursued, open no doors.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Eels can kill, not only wound.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e . Twelve of the 51 characters have been matched: \\\"no\\\", \\\"can\\\", \\\"not\\\", and \\\"only\\\".\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 correct answer would therefore comprise:\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[s.shift = uint8(1)  \\ns.message = {'Unless pursued, open no doors.', 'Eels can kill, not only wound.'}\\ns.certitude = uint8(79)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eEXAMPLE 2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose the batch contained one encoded message —\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Oa oqvvq'u cnycau dggp: \\\"Ctu itcvkc ctvku\\\".\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (provided as a character array within a cell array) — and a (right-shifting) ROT2 cipher had been applied. In that case A→C, B→D, ..., Y→A, and Z→B; similarly, a→c, b→d, ..., y→a, and z→b. Thus the original message would have been: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"My motto's always been: \\\"Ars gratia artis\\\".\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e . Eight of the 37 characters have been matched: \\\"My\\\", \\\" 's \\\", and \\\"been\\\". Note carefully that: \\\" 's \\\" should only be matched once; \\\"to\\\" (in motto), \\\"be\\\" (in been), \\\"at\\\" (in gratia), \\\"is\\\" (in artis) and \\\"a\\\" (passim) should\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enot\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e be matched at all; and \\\" ' \\\" will only ever be used as an apostrophe (never as a quotation mark).\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 correct answer would therefore comprise:\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[s.shift = uint8(2)  \\ns.message = {'My motto''s always been: \\\"Ars gratia artis\\\".'}\\ns.certitude = uint8(73)]]\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\u003eIf the batch of messages cannot be decoded when following the above assumptions, then return the original encoded message(s) unchanged, with a shift of zero and a certitude of zero.\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNote: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)\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\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \\\"too slow\\\".\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----------\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\u003ePrevious problem: \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/44356\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOperation Orthos\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Next problem: TBA.\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":47603,"title":"Cipher or Decipher the number according to the second input   -  1 key for all digits","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 251.509px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 406.495px 125.749px; transform-origin: 406.5px 125.755px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou will be given a input number (eg)  x=12345 and y=1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 41.8909px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 20.9455px; text-align: left; transform-origin: 383.504px 20.9455px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eyou have to figure out the chiper keys and match it with given input and Cipher or Decipher the number according to the second input \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eeg  x=12345\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; cipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e---\u0026gt; These are not real keys , just an example\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput y=23456\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif y==2 and x==23456\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput=12345;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function d = cyp(x,y)\r\n\r\nend","test_suite":"%%\r\nfiletext = fileread('cyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, '-')),'- is forbidden')\r\n%%\r\nx=round(26740*561311/56151);y=1;\r\nd=903154;\r\nassert(isequal(cyp(x,y),d))\r\n%%\r\ny=2;\r\nx=1561615;\r\nassert(isequal(cyp(x,y),3093930))\r\n%%\r\nx=round(log(152385*15275445))*2511;\r\ny=2;\r\nassert(isequal(cyp(x,y),46761))\r\n%%\r\nx=round(sqrt(158485*1555)/211);\r\ny=1;\r\nassert(isequal(cyp(x,y),37))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":11,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-11-23T18:43:37.000Z","updated_at":"2025-11-22T16:51:43.000Z","published_at":"2020-12-04T18:03:22.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given a input number (eg)  x=12345 and y=1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eyou have to figure out the chiper keys and match it with given input and Cipher or Decipher the number according to the second input \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\u003eeg  x=12345\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\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; cipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e---\u0026gt; These are not real keys , just an example\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput y=23456\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\u003eif y==2 and x==23456\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput=12345;\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":751,"title":"Implement simple rotation cypher","description":"If given a letter from the set:\r\n\r\n  [abc...xyz]\r\n\r\nand a shift, implement a shift cypher.\r\n\r\nExample:\r\n\r\n  'abc' \r\n\r\nwith a shift of -1 yields\r\n\r\n  'zab'\r\n\r\n\r\n\r\n\r\n","description_html":"\u003cp\u003eIf given a letter from the set:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e[abc...xyz]\r\n\u003c/pre\u003e\u003cp\u003eand a shift, implement a shift cypher.\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e'abc' \r\n\u003c/pre\u003e\u003cp\u003ewith a shift of -1 yields\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e'zab'\r\n\u003c/pre\u003e","function_template":"function outStr = cypher(inStr, shift)\r\n  outStr = inStr;\r\nend","test_suite":"%%\r\ninStr = 'doug';\r\nshift = 10;\r\noutStr = 'nyeq';\r\n\r\nassert(isequal(cypher(inStr, shift),outStr))\r\n\r\n%%\r\ninStr = 'thequickbrownfox';\r\nshift = 5;\r\noutStr = 'ymjvznhpgwtbsktc';\r\n\r\nassert(isequal(cypher(inStr, shift),outStr))\r\n\r\n%%\r\ninStr = 'thecrowfliesatmidnight';\r\nshift = 22;\r\noutStr = 'pdaynksbheaowpiezjecdp';\r\n\r\nassert(isequal(cypher(inStr, shift),outStr))","published":true,"deleted":false,"likes_count":13,"comments_count":2,"created_by":240,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1096,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":6,"created_at":"2012-06-06T15:38:43.000Z","updated_at":"2026-02-19T13:12:57.000Z","published_at":"2012-06-08T19:08:23.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\u003eIf given a letter from the set:\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[[abc...xyz]]]\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\u003eand a shift, implement a shift cypher.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA['abc']]\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\u003ewith a shift of -1 yields\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['zab']]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":56185,"title":"Extract the Acrostic Message","description":"An acrostic cipher is a way of embedding one message within another by taking the first (or last) word of each line. Given a string s, and a positive integer n, return a string containing the message you would get by taking the first word on each line, having written the message in s with n words on each line.\r\n\r\nYou do not need to worry about punctuation. A \"word\" is anything separated by a space. The input message will use only single spaces (and no line breaks or other whitespace). Similarly, the output message should use only single spaces between words.\r\nNote that the number of words in s is not necessarily a multiple of n.\r\nAlso note that this problem can be solved more directly than using the method described above.\r\nt = \"This week's Cody challenge is designed to test an essential skill that's easy to have a problem with.\";\r\nacrostic(t,4)\r\n\r\nans = \r\n    \"This is an easy problem\"","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 783.667px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 460.5px 391.833px; transform-origin: 460.5px 391.833px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 64px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 32px; text-align: left; transform-origin: 384px 32px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 381.5px 8px; transform-origin: 381.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAn acrostic cipher is a way of embedding one message within another by taking the first (or last) word of each line. Given a string \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 4px 8px; transform-origin: 4px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; perspective-origin: 4px 8.5px; transform-origin: 4px 8.5px; \"\u003es\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 74px 8px; transform-origin: 74px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e, and a positive integer \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 4px 8px; transform-origin: 4px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-style: italic; \"\u003en\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 273.5px 8px; transform-origin: 273.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e, return a string containing the message you would get by taking the first word on each line, having written the message in \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 4px 8px; transform-origin: 4px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; perspective-origin: 4px 8.5px; transform-origin: 4px 8.5px; \"\u003es\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 16px 8px; transform-origin: 16px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e with \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 4px 8px; transform-origin: 4px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-style: italic; \"\u003en\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 63px 8px; transform-origin: 63px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e words on each line.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 466.5px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 233.25px; text-align: left; transform-origin: 384px 233.25px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline;width: 585px;height: 461px\" src=\"data:image/png;base64,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MFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1Khw9/S7zIsjm9f51gLys43/j2yOUOZOWn5l80GeWED+1sn6558/2cYLiEiYGhHpnohIFyMi9SEiwUREwtSISPdERLoYEakPEQkmIhKmRkS6JyLSxYhIfYhIMBGRMDUi0j0RkS5GROpDRIKJiISpEZHuiYh0MSJSHyISTEQkTI2IdE9EpIsRkfoQkWAiImFqRKR7IiJdjIjUh4gEExEJUyMi3RMR6WJEpD5EpPf4+X1oICMiYWpEpHsiIl2MiNSHiPQeZ1/vNEQk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\" data-image-state=\"image-loaded\" width=\"585\" height=\"461\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 381px 8px; transform-origin: 381px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou do not need to worry about punctuation. A \"word\" is anything separated by a space. The input message will use only single spaces (and no line breaks or other whitespace). Similarly, the output message should use only single spaces between words.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 212.5px 8px; transform-origin: 212.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eNote that the number of words in s is not necessarily a multiple of n.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 301.5px 8px; transform-origin: 301.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAlso note that this problem can be solved more directly than using the method described above.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 102.167px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 457.5px 51.0833px; transform-origin: 457.5px 51.0833px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 432px 8.5px; tab-size: 4; transform-origin: 432px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 16px 8.5px; transform-origin: 16px 8.5px; \"\u003et = \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 412px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 412px 8.5px; \"\u003e\"This week's Cody challenge is designed to test an essential skill that's easy to have a problem with.\"\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 4px 8.5px; transform-origin: 4px 8.5px; \"\u003e;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 52px 8.5px; tab-size: 4; transform-origin: 52px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eacrostic(t,4)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; tab-size: 4; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 24px 8.5px; tab-size: 4; transform-origin: 24px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eans = \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 457.5px 10.2167px; transform-origin: 457.5px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 116px 8.5px; tab-size: 4; transform-origin: 116px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 16px 8.5px; transform-origin: 16px 8.5px; \"\u003e    \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(170, 4, 249); border-block-start-color: rgb(170, 4, 249); border-bottom-color: rgb(170, 4, 249); border-inline-end-color: rgb(170, 4, 249); border-inline-start-color: rgb(170, 4, 249); border-left-color: rgb(170, 4, 249); border-right-color: rgb(170, 4, 249); border-top-color: rgb(170, 4, 249); caret-color: rgb(170, 4, 249); color: rgb(170, 4, 249); column-rule-color: rgb(170, 4, 249); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(170, 4, 249); perspective-origin: 100px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 100px 8.5px; \"\u003e\"This is an easy problem\"\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = acrostic(t,n)\r\n  t = t(1:n);\r\nend","test_suite":"%%\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,1);\r\nassert( isequal(s,\"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,2);\r\nassert( isequal(s,\"We these to selfevident all are equal they endowed their with unalienable that these Life and pursuit Happiness to these Governments instituted Men their powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,3);\r\nassert( isequal(s,\"We truths selfevident men equal are their certain that are and of to rights instituted deriving powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,4);\r\nassert( isequal(s,\"We to all equal endowed with that Life pursuit to Governments Men powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,5);\r\nassert( isequal(s,\"We be are are with among and That Governments deriving\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,6);\r\nassert( isequal(s,\"We selfevident equal their that and to instituted powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,7);\r\nassert( isequal(s,\"We that they certain Life That instituted\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,8);\r\nassert( isequal(s,\"We all endowed that pursuit Governments powers\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,9);\r\nassert( isequal(s,\"We men their are to deriving\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,10);\r\nassert( isequal(s,\"We are with and Governments\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,11);\r\nassert( isequal(s,\"We created unalienable of Men\") )\r\nt = \"We hold these truths to be selfevident that all men are created equal that they are endowed by their Creator with certain unalienable Rights that among these are Life Liberty and the pursuit of Happiness That to secure these rights Governments are instituted among Men deriving their just powers\";\r\ns = acrostic(t,12);\r\nassert( isequal(s,\"We equal that to powers\") )\r\n%% Randomly generated\r\nfor k = 1:10\r\n  s = [\"It\",\"is\",\"a\",\"truth\",\"universally\",\"acknowledged\",\"that\",\"single\",\"man\",\"in\",\"possession\",\"of\",\"good\",\"fortune\",\"must\",\"be\",\"want\",\"wife\"];\r\n    n = randi(numel(s),1,randi(20));\r\n    tout = s(n);\r\n    n = randi(20);\r\n    tin = join(repelem(tout,1,n),\" \");\r\n    tout = join(tout,\" \");\r\n    assert( isequal(acrostic(tin,n),tout) )\r\nend","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":571375,"edited_by":287,"edited_at":"2022-10-24T13:22:25.000Z","deleted_by":null,"deleted_at":null,"solvers_count":120,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2022-09-30T17:58:36.000Z","updated_at":"2026-03-11T20:45:20.000Z","published_at":"2022-10-24T13:12:34.000Z","restored_at":null,"restored_by":null,"spam":null,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAn acrostic cipher is a way of embedding one message within another by taking the first (or last) word of each line. Given a string \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and a positive integer \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, return a string containing the message you would get by taking the first word on each line, having written the message in \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e with \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003en\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e words on each line.\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:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"461\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"585\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"baseline\\\"/\u003e\u003cw:attr w:name=\\\"altText\\\" w:val=\\\"\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId1\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\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 do not need to worry about punctuation. A \\\"word\\\" is anything separated by a space. The input message will use only single spaces (and no line breaks or other whitespace). Similarly, the output message should use only single spaces between words.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNote that the number of words in s is not necessarily a multiple of n.\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\u003eAlso note that this problem can be solved more directly than using the method described above.\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[t = \\\"This week's Cody challenge is designed to test an essential skill that's easy to have a problem with.\\\";\\nacrostic(t,4)\\n\\nans = \\n    \\\"This is an easy problem\\\"]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"target\":\"/media/image1.png\",\"relationshipId\":\"rId1\"}]},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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MFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1KhwMFFAYKGAwEREwtSocDBRQGChgMBERMLUqHAwUUBgoYDARETC1Khw9/S7zIsjm9f51gLys43/j2yOUOZOWn5l80GeWED+1sn6558/2cYLiEiYGhHpnohIFyMi9SEiwUREwtSISPdERLoYEakPEQkmIhKmRkS6JyLSxYhIfYhIMBGRMDUi0j0RkS5GROpDRIKJiISpEZHuiYh0MSJSHyISTEQkTI2IdE9EpIsRkfoQkWAiImFqRKR7IiJdjIjUh4gEExEJUyMi3RMR6WJEpD5EpPf4+X1oICMiYWpEpHsiIl2MiNSHiPQeZ1/vNEQk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\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":47813,"title":"Cipher or Decipher the number according to the second input   -  3 keys","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 410.236px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 406.495px 205.113px; transform-origin: 406.5px 205.118px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou will be given a input number (eg)  x=12345 and y=1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eyou have to figure out the chiper keys and match it with given input and cipher it and decipher it according to second input\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; cipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;cipher_key_2=[ 3 4 5 6 7 8 9 0 1 2];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003ecipher_key_3=[ 2 3 4 5 6 7 8 9 0 1];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e---\u0026gt; These are not real keys , just an example\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eeg  x=12345\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif y=1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput y=23456\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif y=2  x=23456\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput=12345;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eHint : index :  1:3:end     -\u0026gt; key 1  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e                            2:3:end -\u0026gt; key 2 \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e                                3:3:end  -\u0026gt; key 3  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function d = cyp(x,y)\r\n\r\nend","test_suite":"%%\r\nfiletext = fileread('cyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, '-')),'- is forbidden')\r\n%%\r\nx=round(26740*561311/56151);\r\ny=1;\r\nassert(isequal(cyp(x,y),703894))\r\n%%\r\ny=2;\r\nx=1561615;\r\nassert(isequal(cyp(x,y),5535469))\r\n%%\r\nx=round(log(152385*15275445))*2511;\r\ny=2;\r\nassert(isequal(cyp(x,y),  26762))\r\n%%\r\nx=round(sqrt(158485*1555)/211);\r\ny=1;\r\nassert(isequal(cyp(x,y),26))","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":11,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-04T18:15:13.000Z","updated_at":"2025-11-22T16:53:13.000Z","published_at":"2020-12-04T18:30:51.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given a input number (eg)  x=12345 and y=1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eyou have to figure out the chiper keys and match it with given input and cipher it and decipher it according to second input\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; cipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;cipher_key_2=[ 3 4 5 6 7 8 9 0 1 2];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ecipher_key_3=[ 2 3 4 5 6 7 8 9 0 1];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e---\u0026gt; These are not real keys , just an example\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\u003eeg  x=12345\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\u003eif y=1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput y=23456\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\u003eif y=2  x=23456\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput=12345;\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\u003eHint : index :  1:3:end     -\u0026gt; key 1  \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                            2:3:end -\u0026gt; key 2 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                                3:3:end  -\u0026gt; key 3  \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":42525,"title":"Vigenere cipher - be like Sherlock Holmes!","description":"You're a young detective. Every detective needs a function to decrypt a vigenère cipher. It's a modification of a caesar cipher.\r\n\r\nLet's talk more about the algorithm:\r\n\r\n* Every letter is a number. A=0, B=1, C=2, (...), Z=26\r\n* Output should be presented in capital letters.\r\n* Use ONLY letters. Without interpunction, spaces, etc\r\n* Function has two arguments: encrypted text and key (both are strings). Your output will present a decrypted text. Let's show it on easy example from http://en.algoritmy.net/article/45623/Vigenere-cipher\r\n\r\n*Ciphertext* : CTMCCD, *Key* : Cat\r\n\r\nC – *C* = 2  – 2  = 0  = A \r\n\r\nT – *A* = 19 – 0  = 19 = T\r\n\r\nM – *T* = 12 – 19 = 19 = T\r\n\r\nC – C = 2  – 2  = 0  = A\r\n\r\nC – A = 2  – 0  = 2  = C\r\n\r\nD – T = 3  – 19 = 10 = K\r\n\r\n*decrypted word: ATTACK*\r\n\r\nIt's quite simple,right? Good luck!\r\n\r\n\u003chttp://en.algoritmy.net/article/45623/Vigenere-cipher You can read more about this cipher here. Click!\u003e  ","description_html":"\u003cp\u003eYou're a young detective. Every detective needs a function to decrypt a vigenère cipher. It's a modification of a caesar cipher.\u003c/p\u003e\u003cp\u003eLet's talk more about the algorithm:\u003c/p\u003e\u003cul\u003e\u003cli\u003eEvery letter is a number. A=0, B=1, C=2, (...), Z=26\u003c/li\u003e\u003cli\u003eOutput should be presented in capital letters.\u003c/li\u003e\u003cli\u003eUse ONLY letters. Without interpunction, spaces, etc\u003c/li\u003e\u003cli\u003eFunction has two arguments: encrypted text and key (both are strings). Your output will present a decrypted text. Let's show it on easy example from \u003ca href = \"http://en.algoritmy.net/article/45623/Vigenere-cipher\"\u003ehttp://en.algoritmy.net/article/45623/Vigenere-cipher\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003cb\u003eCiphertext\u003c/b\u003e : CTMCCD, \u003cb\u003eKey\u003c/b\u003e : Cat\u003c/p\u003e\u003cp\u003eC – \u003cb\u003eC\u003c/b\u003e = 2  – 2  = 0  = A\u003c/p\u003e\u003cp\u003eT – \u003cb\u003eA\u003c/b\u003e = 19 – 0  = 19 = T\u003c/p\u003e\u003cp\u003eM – \u003cb\u003eT\u003c/b\u003e = 12 – 19 = 19 = T\u003c/p\u003e\u003cp\u003eC – C = 2  – 2  = 0  = A\u003c/p\u003e\u003cp\u003eC – A = 2  – 0  = 2  = C\u003c/p\u003e\u003cp\u003eD – T = 3  – 19 = 10 = K\u003c/p\u003e\u003cp\u003e\u003cb\u003edecrypted word: ATTACK\u003c/b\u003e\u003c/p\u003e\u003cp\u003eIt's quite simple,right? Good luck!\u003c/p\u003e\u003cp\u003e\u003ca href = \"http://en.algoritmy.net/article/45623/Vigenere-cipher\"\u003eYou can read more about this cipher here. Click!\u003c/a\u003e\u003c/p\u003e","function_template":"function text = decrypt(cipher, key)\r\n    text = cipher;\r\nend","test_suite":"%%\r\na='CTMCCDCTWCWG';\r\nb='CAT';\r\ny_correct = 'ATTACKATDAWN';\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\n%%\r\n\r\na='ctmccdctwcwg';\r\nb='cat';\r\ny_correct='ATTACKATDAWN';\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\n\r\n%%\r\n\r\na='uaflgsqamnoeqr';\r\nb='matlab';\r\ny_correct='IAMAGREATCODER';\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\n%%\r\n\r\n%% \r\nind = randi(3);\r\nswitch ind\r\n\tcase 1\r\na='sdirmclkvtldnyimhstdoecfnfsdirmclkvtldnyimhstdoecfnfsdirmclkvtldnyimhstdoecfnfsdirmclkvtldnyimhstdoecfnf';\r\n                b='cheater';\r\n\t\ty_correct = 'QWERTYUIOPLKJHGFDSAZXCVBNMOMGKICSGEREZNFEVFLPDVALDGBSKEAKVHKCPUBGUITDBRWKEJBWDLZIYILJDRTSZWWBIHZPMMXYFUB';\r\n                assert(isequal(decrypt(a,b),y_correct));\r\n\tcase 2\r\n\t\ta='mbvoegshbukmynhaqsetnhvykz'\r\nb='matlab'\r\ny_correct='ABCDEFGHIJKLMNOPQRSTUWVXYZ'\r\n\t\tassert(isequal(decrypt(a,b),y_correct));\r\n\tcase 3\r\n\t\ta='az'\r\nb='za'\r\ny_correct='BZ'\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\nend\r\n\r\n\r\n%%\r\nfiletext = fileread('decrypt.m');\r\nassert(isempty(strfind(filetext, 'IAMAGREATCODER')),'forbidden')\r\n\r\n%%\r\na='CtMcCdCTwcWG';\r\nb='CAt';\r\ny_correct = 'ATTACKATDAWN';\r\nassert(isequal(decrypt(a,b),y_correct));\r\n\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":6,"created_by":48826,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":28,"test_suite_updated_at":"2015-08-21T23:18:15.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2015-08-21T15:15:32.000Z","updated_at":"2025-11-17T23:14:07.000Z","published_at":"2015-08-21T15:15:32.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\u003eYou're a young detective. Every detective needs a function to decrypt a vigenère cipher. It's a modification of a caesar cipher.\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\u003eLet's talk more about the algorithm:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEvery letter is a number. A=0, B=1, C=2, (...), Z=26\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOutput should be presented in capital letters.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eUse ONLY letters. Without interpunction, spaces, etc\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFunction has two arguments: encrypted text and key (both are strings). Your output will present a decrypted text. Let's show it on easy example from\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.algoritmy.net/article/45623/Vigenere-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ehttp://en.algoritmy.net/article/45623/Vigenere-cipher\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:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eCiphertext\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e : CTMCCD,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eKey\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e : Cat\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\u003eC –\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eC\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 2 – 2 = 0 = A\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\u003eT –\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 19 – 0 = 19 = T\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\u003eM –\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eT\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 12 – 19 = 19 = T\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\u003eC – C = 2 – 2 = 0 = A\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\u003eC – A = 2 – 0 = 2 = C\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\u003eD – T = 3 – 19 = 10 = K\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\u003edecrypted word: ATTACK\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's quite simple,right? Good luck!\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=\\\"http://en.algoritmy.net/article/45623/Vigenere-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eYou can read more about this cipher here. Click!\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":1080,"title":"Guess Cipher","description":"Guess the formula to transform strings as follows:\r\n\r\n 'Hello World!'    --\u003e 'Ifmmp Xpsme!'\r\n\r\n 'Can I help you?' --\u003e 'Dbo J ifmq zpv?'\r\n\r\n","description_html":"\u003cp\u003eGuess the formula to transform strings as follows:\u003c/p\u003e\u003cpre\u003e 'Hello World!'    --\u0026gt; 'Ifmmp Xpsme!'\u003c/pre\u003e\u003cpre\u003e 'Can I help you?' --\u0026gt; 'Dbo J ifmq zpv?'\u003c/pre\u003e","function_template":"function y = si(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nx = 'Hello World!';\r\ny_correct = 'Ifmmp Xpsme!';\r\nassert(isequal(si(x),y_correct))\r\n\r\n%%\r\nx = 'Can I help you?';\r\ny_correct = 'Dbo J ifmq zpv?';\r\nassert(isequal(si(x),y_correct))\r\n\r\n%%\r\nx = 'Mary had a liitle lamb.';\r\ny_correct = 'Nbsz ibe b mjjumf mbnc.';\r\nassert(isequal(si(x),y_correct))\r\n","published":true,"deleted":false,"likes_count":6,"comments_count":2,"created_by":3399,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":459,"test_suite_updated_at":"2016-12-12T18:33:18.000Z","rescore_all_solutions":false,"group_id":14,"created_at":"2012-12-01T04:15:51.000Z","updated_at":"2026-03-07T06:00:37.000Z","published_at":"2012-12-01T04:16:41.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\u003eGuess the formula to transform strings as follows:\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[ 'Hello World!'    --\u003e 'Ifmmp Xpsme!'\\n\\n 'Can I help you?' --\u003e 'Dbo J ifmq zpv?']]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":565,"title":"Transposition as a CIPHER","description":"This all about transcripting a text message. If the input string is: s1 = 'My name is Sourav Mondal', then the output is: s2 = 'MUYRNAAVMMEOINSDSAOL'. Just divide the string from middle, according to no. of alphabets \u0026 then take alphabets/letters alternatively from the two strings!!","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 63px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 31.5px; transform-origin: 407px 31.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 198.5px 8px; transform-origin: 198.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis all about transcripting a text message. If the input string is:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 113px 8px; transform-origin: 113px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003es1 = 'My name is Sourav Mondal'\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 61px 8px; transform-origin: 61px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e, then the output is:\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 2px 8px; transform-origin: 2px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 118.5px 8px; transform-origin: 118.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003es2 = 'MUYRNAAVMMEOINSDSAOL'.\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 241px 8px; transform-origin: 241px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e Just divide the string from middle, according to no. of alphabets \u0026amp; then take alphabets/letters alternatively from the two strings!!\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = transposition(s1)\r\n  y = s2;\r\nend","test_suite":"%%\r\ns1 = 'My name is Sourav Mondal';\r\ny_correct = 'MUYRNAAVMMEOINSDSAOL';\r\nassert(isequal(transposition(s1),y_correct))\r\n\r\n%%\r\ns1 = 'i am a common cipher';\r\ny_correct = 'IOANMCAICPOHMEMR';\r\nassert(isequal(transposition(s1),y_correct))\r\n\r\n%%\r\ns1 = 'BATMAN rules GOTHAM';\r\ny_correct = 'BEASTGMOATNHRAUML';\r\nassert(isequal(transposition(s1),y_correct))\r\n\r\n%%\r\ns1 = 'STAY HOME stay safe';\r\ny_correct = 'SSTTAAYYHSOAMFEE';\r\nassert(isequal(transposition(s1),y_correct))","published":true,"deleted":false,"likes_count":5,"comments_count":6,"created_by":2952,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":231,"test_suite_updated_at":"2021-09-21T10:28:08.000Z","rescore_all_solutions":true,"group_id":14,"created_at":"2012-04-08T07:35:15.000Z","updated_at":"2026-03-22T16:40:00.000Z","published_at":"2012-04-08T07:36:17.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis all about transcripting a text message. If the input string is:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es1 = 'My name is Sourav Mondal'\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, then the output is:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es2 = 'MUYRNAAVMMEOINSDSAOL'.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Just divide the string from middle, according to no. of alphabets \u0026amp; then take alphabets/letters alternatively from the two strings!!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":48175,"title":"Cipher or Decipher the number according to the second input  - 3 keys - order [1 2 3 2 1 2 3 ......]","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 316.6px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 158.3px; transform-origin: 407px 158.3px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 376.5px 8px; transform-origin: 376.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou will be given an input number. You have to figure out the cipher keys and match it with given input and cipher it and decipher it according to second input.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 151.5px 8px; transform-origin: 151.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe following are not real keys, just an example:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 81.7333px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 40.8667px; transform-origin: 404px 40.8667px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 120px 8.5px; transform-origin: 120px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eref =   [0 1 2 3 4 5 6 7 8 9];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 120px 8.5px; transform-origin: 120px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003ekey_1 = [1 2 3 4 5 6 7 8 9 0];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 120px 8.5px; transform-origin: 120px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003ekey_2 = [3 4 5 6 7 8 9 0 1 2];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 120px 8.5px; transform-origin: 120px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003ekey_3 = [2 3 4 5 6 7 8 9 0 1];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 101px 8px; transform-origin: 101px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eFor example, if x = 12321, y = 1:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 20.4333px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 56px 8.5px; transform-origin: 56px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eoutput = 25552\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 367px 8px; transform-origin: 367px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e(Hint: index: 1 -\u0026gt; key 1, 2 -\u0026gt; key 2, 3 -\u0026gt; key 3, 4 -\u0026gt; key 2, 5 -\u0026gt; key 1, 6 -\u0026gt; key 2, 7 -\u0026gt; key 3, 8 -\u0026gt; key 2, 9 -\u0026gt; key 1, ...)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 69.5px 8px; transform-origin: 69.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eOr, if x = 25552, y = 2:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 20.4333px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 56px 8.5px; transform-origin: 56px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eoutput = 12321\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function d = decyp(c)\r\n  d = c;\r\nend","test_suite":"%%\r\nfiletext = fileread('decyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, '-')),'- is forbidden')\r\nassert(isempty(strfind(filetext, 'else')))\r\n\r\n%%\r\nx=round(26740*561311/56151);\r\ny=1;\r\nassert(isequal(decyp(x,y),324920))\r\n\r\n%%\r\nx=55156;\r\ny=2;\r\nassert(isequal(decyp(x,y),round(log(152385*15275445))*2511))\r\n\r\n%%\r\nx=54;\r\ny=2;\r\nassert(isequal(decyp(x,y),round(sqrt(158485*1555)/211)))\r\n\r\n%%\r\nx=1561615;\r\ny=1;\r\nassert(isequal(decyp(x,y),1088989))\r\n\r\n%%\r\nx=324920;\r\ny=2;\r\nassert(isequal(decyp(x,y),round(26740*561311/56151)))\r\n\r\n%%\r\nx=round(log(152385*15275445))*2511;\r\ny=1;\r\nassert(isequal(decyp(x,y),55156))\r\n\r\n%%\r\nx=round(sqrt(158485*1555)/211);\r\ny=1;\r\nassert(isequal(decyp(x,y),54))\r\n\r\n%%\r\nx=1088989;\r\ny=2;\r\nassert(isequal(decyp(x,y),1561615))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":4,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":"2021-01-25T11:14:28.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-18T23:02:59.000Z","updated_at":"2024-11-20T08:57:33.000Z","published_at":"2020-12-19T13:45:00.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given an input number. You have to figure out the cipher keys and match it with given input and cipher it and decipher it according to second input.\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 following are not real keys, just an example:\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[ref =   [0 1 2 3 4 5 6 7 8 9];\\nkey_1 = [1 2 3 4 5 6 7 8 9 0];\\nkey_2 = [3 4 5 6 7 8 9 0 1 2];\\nkey_3 = [2 3 4 5 6 7 8 9 0 1];]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor example, if x = 12321, y = 1:\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[output = 25552]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e(Hint: index: 1 -\u0026gt; key 1, 2 -\u0026gt; key 2, 3 -\u0026gt; key 3, 4 -\u0026gt; key 2, 5 -\u0026gt; key 1, 6 -\u0026gt; key 2, 7 -\u0026gt; key 3, 8 -\u0026gt; key 2, 9 -\u0026gt; key 1, ...)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOr, if x = 25552, y = 2:\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[output = 12321]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":44351,"title":"Code breaker, Part I:  Operation Phoenix","description":"You have been tasked with decoding a set of coded messages that have been intercepted.  \r\n\r\nBased on previous intelligence that has been gathered, you can be confident that the messages were encoded using a simple \u003chttps://en.wikipedia.org/wiki/Caesar_cipher Caesar cipher\u003e (a type of \u003chttps://en.wikipedia.org/wiki/Substitution_cipher substitution cipher\u003e), an example of which is the \u003chttps://en.wikipedia.org/wiki/ROT13 ROT13 cipher\u003e (discussed in \u003chttps://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher Cody Challenge Problem 78\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026 numbers) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between messages (also, here you need to decode, not encode).  \r\n\r\nYou can also assume that the original message will relate to an activity that is referred to by those involved as \"Operation Phoenix\". Therefore the phrase \"Operation Phoenix\" (with that capitalisation) would have appeared at least once in the original message.  \r\n\r\nYour task is to crack the codes and report back in a \u003chttp://au.mathworks.com/help/matlab/ref/struct.html structure array\u003e:  (1) the shifting parameter that had been used in the encoding [as \u003chttp://au.mathworks.com/help/matlab/ref/uint8.html uint8\u003e];  (2)  the decoded message [as \u003chttp://au.mathworks.com/help/matlab/ref/char.html character array\u003e].  \r\nThe name of the structure array shall be \"s\", with respective fields \"shift\" and \"message\".  \r\n\r\nEXAMPLE\r\n\r\nSuppose the original message was _\"Cancel Operation Phoenix immediately \u0026 escape.\"_ and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  (Note that the shifting 'wraps' back around.)  \r\nThus the encoded message would be:  _\"Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026 ftdbqf.\"_\r\n\r\nThe correct answer would comprise:  \r\n\r\n  s.shift = uint8(1)  \r\n  s.message = 'Cancel Operation Phoenix immediately \u0026 escape.'\r\n\r\n|Note: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable and doesn't generate excessive text output). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand.|  \r\n\r\nTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".\r\n\r\n----------\r\n\r\nNext problem:  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44356 Operation Orthos\u003e.\r\n\r\n----------\r\n\r\nStatistics on solutions submitted as at 15 October 2017:\r\n\r\n* *Fastest wall time to decode 5000 messages = 93 milliseconds* , for \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1279303 Solution 1279303\u003e, with a size-based score of 40. \r\n* *Smallest size-based score = 38* , for \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1278780 Solution 1278780\u003e, for which wall time to decode 5000 messages = 515 milliseconds.  \r\n* Best combined score = 49, for \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1279303 Solution 1279303\u003e. ","description_html":"\u003cp\u003eYou have been tasked with decoding a set of coded messages that have been intercepted.\u003c/p\u003e\u003cp\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were encoded using a simple \u003ca href = \"https://en.wikipedia.org/wiki/Caesar_cipher\"\u003eCaesar cipher\u003c/a\u003e (a type of \u003ca href = \"https://en.wikipedia.org/wiki/Substitution_cipher\"\u003esubstitution cipher\u003c/a\u003e), an example of which is the \u003ca href = \"https://en.wikipedia.org/wiki/ROT13\"\u003eROT13 cipher\u003c/a\u003e (discussed in \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher\"\u003eCody Challenge Problem 78\u003c/a\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026 numbers) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between messages (also, here you need to decode, not encode).\u003c/p\u003e\u003cp\u003eYou can also assume that the original message will relate to an activity that is referred to by those involved as \"Operation Phoenix\". Therefore the phrase \"Operation Phoenix\" (with that capitalisation) would have appeared at least once in the original message.\u003c/p\u003e\u003cp\u003eYour task is to crack the codes and report back in a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/struct.html\"\u003estructure array\u003c/a\u003e:  (1) the shifting parameter that had been used in the encoding [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/uint8.html\"\u003euint8\u003c/a\u003e];  (2)  the decoded message [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/char.html\"\u003echaracter array\u003c/a\u003e].  \r\nThe name of the structure array shall be \"s\", with respective fields \"shift\" and \"message\".\u003c/p\u003e\u003cp\u003eEXAMPLE\u003c/p\u003e\u003cp\u003eSuppose the original message was \u003ci\u003e\"Cancel Operation Phoenix immediately \u0026 escape.\"\u003c/i\u003e and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  (Note that the shifting 'wraps' back around.)  \r\nThus the encoded message would be:  \u003ci\u003e\"Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026 ftdbqf.\"\u003c/i\u003e\u003c/p\u003e\u003cp\u003eThe correct answer would comprise:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003es.shift = uint8(1)  \r\ns.message = 'Cancel Operation Phoenix immediately \u0026 escape.'\r\n\u003c/pre\u003e\u003cp\u003e\u003ctt\u003eNote: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable and doesn't generate excessive text output). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand.\u003c/tt\u003e\u003c/p\u003e\u003cp\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".\u003c/p\u003e\u003cp\u003e----------\u003c/p\u003e\u003cp\u003eNext problem:  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44356\"\u003eOperation Orthos\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e----------\u003c/p\u003e\u003cp\u003eStatistics on solutions submitted as at 15 October 2017:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003eFastest wall time to decode 5000 messages = 93 milliseconds\u003c/b\u003e , for \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1279303\"\u003eSolution 1279303\u003c/a\u003e, with a size-based score of 40.\u003c/li\u003e\u003cli\u003e\u003cb\u003eSmallest size-based score = 38\u003c/b\u003e , for \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1278780\"\u003eSolution 1278780\u003c/a\u003e, for which wall time to decode 5000 messages = 515 milliseconds.\u003c/li\u003e\u003cli\u003eBest combined score = 49, for \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351-code-breaker-part-i-operation-phoenix/solutions/1279303\"\u003eSolution 1279303\u003c/a\u003e.\u003c/li\u003e\u003c/ul\u003e","function_template":"function s = decode(x)\r\n  s = x;\r\nend","test_suite":"%% NOTE:  \r\n% This test suite can be updated if inappropriate 'hacks' \r\n% are discovered in any submitted solutions, \r\n% so your score/size may therefore change over time.  \r\n\r\n\r\n%% Test 1\r\nx = 'Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026 ftdbqf.';\r\ns_correct.shift = 1;\r\ns_correct.message = 'Cancel Operation Phoenix immediately \u0026 escape.';\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'char') )\r\n\r\n\r\n%% Test 2\r\nx = 'Vwlyhapvu Wovlupe ilnpuz Ablzkhf!  Vwlyhapvu Wovlupe pz vby avw wypvypaf.';\r\ns_correct.shift = 7;\r\ns_correct.message = 'Operation Phoenix begins Tuesday!  Operation Phoenix is our top priority.';\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'char') )\r\n\r\n\r\n%% Test 3\r\nx = 'Eatpht cdit iwpi iwt ephhldgs wph qttc rwpcvts ugdb \"Fxeudyn\" id \"Dvcsbwl\".  Diwtglxht Detgpixdc Ewdtcxm xh egdrttsxcv prrdgsxcv id eapc.';\r\ns_correct.shift = 15;\r\ns_correct.message = 'Please note that the password has been changed from \"Qipfojy\" to \"Ogndmhw\".  Otherwise Operation Phoenix is proceeding according to plan.';\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'char') )\r\n\r\n\r\n%% Test 4\r\nx = 'Mncpyrgml Nfmclgv qryprcb rfpcc bywq yem.  Yjj ncpqmllcj ypc rm pckygl ml bsrw slrgj Mncpyrgml Nfmclgv gq amknjcrcb.';\r\ns_correct.shift = 24;\r\ns_correct.message = 'Operation Phoenix started three days ago.  All personnel are to remain on duty until Operation Phoenix is completed.';\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'char') )\r\n\r\n\r\n%% Rescoring \r\n% Acknowledgements \r\n% Portions of this timing test code were inspired by:\r\n% (1) Problem 937. \"Rubik's Mini Cube: Solve Randomized Cube in 11 Moves or Less; Score is by Time (msec)\" by Richard Zapor.\r\n% (2) Problem 2733. \"Evil Number\" by Jan Orwat.\r\n% (3) Feedback in comments from Peng Liu.\r\n% (4) Problem Problem 1237. \"It's race time! Write a faster function than the test suite call of unique().\" by Jeremy.\r\n\r\n% Note:  The Time Trial section does not check accuracy; that is done above.\r\n\r\n% Initialise\r\nx = 'Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026 ftdbqf.';\r\ncutoffTimeBig = 1000; % Maximum allowable walltime (in milliseconds) to run function in a loop with qBig iterations.\r\n\r\nfor dummy = 1 : 20,  disp(' . ');  end;\r\n\r\n% Run once, untimed?\r\nincludeOverheads = false;\r\nif includeOverheads, \r\n    solution = decode( x );\r\nend;\r\n\r\n% *** PRELIMINARY TIMING ***\r\n% In case the submitted function has a lot of text output, \r\n% get an estimate based on just a few iterations\r\n% Initialise\r\nqSmall = 50;\r\nqBig = 5000;\r\nt0 = clock;\r\n\r\n% Loop\r\nfor i = 1 : qSmall\r\n    solution = decode( x );\r\nend;\r\n\r\n% Compute and display elapsed time.\r\ndt = etime(clock, t0) * 1000;\r\ndisp('     -----=====-----     ')\r\nfprintf('Your wall time to decode %u messages = %i msec.\\n\\r', qSmall, floor(dt))\r\nfprintf('Your APPROXIMATE wall time to decode %u messages would be ~ %i msec.\\n\\r', qBig, ceil(dt * qBig / qSmall))\r\ndisp('     -----=====-----     ')\r\nfor dummy = 1 : 20,  disp(' . ');  end;\r\n\r\n% *** 'OFFICIAL' TIMING ***\r\n% Re-initialise timer\r\nt0 = clock;\r\nt0_cpu = cputime;\r\n\r\n% Loop\r\nfor i = 1 : qBig\r\n    solution = decode( x );\r\nend;\r\n\r\n% Compute and display elapsed time.\r\nfor dummy = 1 : 20,  disp(' . ');  end;\r\ndisp('     -----=====|||||=====-----     ')\r\ndt = etime(clock, t0) * 1000;\r\nfprintf('Your wall time to decode %u messages = %i msec.\\n\\r', qBig, floor(dt))\r\n\r\ndt_cpu = (cputime - t0_cpu) * 1000;\r\nfprintf(' ( Your CPU time for this = %i msec. ) \\n\\r', floor(dt_cpu))\r\n\r\nfDecode = @()   decode(x);\r\ndt_timeit = timeit( fDecode ) * 1000;\r\nfprintf(' [ Your ''timeit'' time to decode %u messages = %i msec. ] \\n\\r', qBig, ceil(dt_timeit * qBig))\r\n\r\n% Display a size-based score.\r\nall_nodes = mtree('decode.m', '-file');        % This is the default in Cody.\r\nstr_nodes = mtfind(all_nodes, 'Kind', 'STRING');\r\neq_nodes = mtfind(all_nodes, 'Kind', 'EQUALS');\r\nprint_nodes = mtfind(all_nodes, 'Kind', 'PRINT');\r\nexpr_nodes = mtfind(all_nodes, 'Kind', 'EXPR');\r\n\r\nsize_score = count(all_nodes) ...\r\n +sum(str_nodes.nodesize-1) ...\r\n +2*(count(expr_nodes) ...\r\n +count(print_nodes) ...\r\n -count(eq_nodes));\r\n\r\nfprintf('Your size-based score = %i.\\n\\r', size_score)\r\n\r\n% Report revised performance score.\r\ncombinedScore = size_score  +  min( 200, floor(dt*(500/qBig)) );\r\nfprintf('Your combined score = %i.\\n\\r', combinedScore)\r\ndisp('     -----=====|||||=====-----     ')\r\n\r\n% Now disallow any candidate solutions that are TOO SLOW!\r\nif dt \u003e cutoffTimeBig, \r\n    fprintf('Sorry, your submission is TOO SLOW. It must be able to finish within %u milliseconds.\\n\\r', cutoffTimeBig)\r\nend;\r\n\r\nassert( dt \u003c= cutoffTimeBig, 'Exceeded time limit specified in Test Suite.' )","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":45,"test_suite_updated_at":"2017-10-15T10:19:08.000Z","rescore_all_solutions":false,"group_id":40,"created_at":"2017-09-29T09:20:59.000Z","updated_at":"2026-04-02T08:27:57.000Z","published_at":"2017-09-29T13:45:26.000Z","restored_at":"2017-10-04T19:25:07.000Z","restored_by":null,"spam":false,"simulink":false,"admin_reviewed":true,"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\u003eYou have been tasked with decoding a set of coded messages that have been intercepted.\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\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were encoded using a simple\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/Caesar_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCaesar cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (a type of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Substitution_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003esubstitution cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e), an example of which is 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/ROT13\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eROT13 cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (discussed in\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/78-implement-a-rot13-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCody Challenge Problem 78\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e). As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026amp; numbers) are unchanged. Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between messages (also, here you need to decode, not encode).\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\u003eYou can also assume that the original message will relate to an activity that is referred to by those involved as \\\"Operation Phoenix\\\". Therefore the phrase \\\"Operation Phoenix\\\" (with that capitalisation) would have appeared at least once in the original message.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task is to crack the codes and report back in a\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://au.mathworks.com/help/matlab/ref/struct.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003estructure array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e: (1) the shifting parameter that had been used in the encoding [as\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://au.mathworks.com/help/matlab/ref/uint8.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003euint8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e]; (2) the decoded message [as\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://au.mathworks.com/help/matlab/ref/char.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003echaracter array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e]. The name of the structure array shall be \\\"s\\\", with respective fields \\\"shift\\\" and \\\"message\\\".\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose the original message was\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Cancel Operation Phoenix immediately \u0026amp; escape.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and a (right-shifting) ROT1 cipher had been applied. In that case A→B, B→C, ..., Y→Z, and Z→A; similarly, a→b, b→c, ..., y→z, and z→a. (Note that the shifting 'wraps' back around.) Thus the encoded message would be: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Dbodfm Pqfsbujpo Qipfojy jnnfejbufmz \u0026amp; ftdbqf.\\\"\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 correct answer would comprise:\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[s.shift = uint8(1)  \\ns.message = 'Cancel Operation Phoenix immediately \u0026 escape.']]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNote: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable and doesn't generate excessive text output). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand.\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\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \\\"too slow\\\".\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----------\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\u003eNext problem: \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/44356\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOperation Orthos\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e----------\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eStatistics on solutions submitted as at 15 October 2017:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eFastest wall time to decode 5000 messages = 93 milliseconds\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e , for\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/44351-code-breaker-part-i-operation-phoenix/solutions/1279303\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSolution 1279303\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, with a size-based score of 40.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eSmallest size-based score = 38\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e , for\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/44351-code-breaker-part-i-operation-phoenix/solutions/1278780\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSolution 1278780\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, for which wall time to decode 5000 messages = 515 milliseconds.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBest combined score = 49, for\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/44351-code-breaker-part-i-operation-phoenix/solutions/1279303\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSolution 1279303\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\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":49347,"title":"Cipher and Decipher the message - same key for all digits ","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 230.564px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 406.495px 115.276px; transform-origin: 406.5px 115.282px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou will be given a input number \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eyou have to figure out the key according to the second input\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eref=ascii(32:126); decipher_key=[ascii(33:126) ascii(32)  ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e(eg)  x='gdkkn' if y==1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput y='hello'\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif x='hello' if y==2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput='gdkkn';\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.9455px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.498px 10.4727px; text-align: left; transform-origin: 383.504px 10.4727px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\"If\" and \"while\" are forbidden\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = decyp(x,y)\r\n  y = x;\r\nend","test_suite":"%%\r\nfiletext = fileread('decyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, 'if')),'if is forbidden')\r\nassert(isempty(strfind(filetext, 'while')),'while is forbidden')\r\nassert(isempty(strfind(filetext, 'switch')),'switch is forbidden')\r\nx = '|#i/mh+/f#[';\r\nassert(isequal(decyp(x,1),'how are you'))\r\n%%\r\nx='/kfM-g!f;-\\a-g!fRzG)aa-.!f-Rz!a)-RzkR-M! CR-J)G\\)B)-\\ -Rz)oa)GB)a';\r\nassert(isequal(decyp(char(x+2),1),'Hard work is worthless for those that don''t believe in themselves'))\r\n%%\r\nx='Nz\\G)-d!YCf)-kG\\B)c-d!Y- ))M-k-f)ka! -.!f-d!Yf-)9\\aR) \u003e)h-m)\\ x-Y kJG)-R!-.\\ M-! )-\\a-Rz)-ako)-ka-J)\\ x-M)kMh';\r\nassert(isequal(decyp(char(x+2),1),'While you''re alive, you need a reason for your existence. Being unable to find one is the same as being dead.'))\r\n%%\r\nx='/kfM-g!f;-\\a-g!fRzG)aa-.!f-Rz!a)-RzkR-M! CR-J)G\\)B)-\\ -Rz)oa)GB)a';\r\nassert(isequal(decyp(char(flip(x+2)),1),flip('Hard work is worthless for those that don''t believe in themselves')))\r\n%%\r\nx='Nz\\G)-d!YCf)-kG\\B)c-d!Y- ))M-k-f)ka! -.!f-d!Yf-)9\\aR) \u003e)h-m)\\ x-Y kJG)-R!-.\\ M-! )-\\a-Rz)-ako)-ka-J)\\ x-M)kMh';\r\nassert(isequal(decyp(char(flip(x+2)),1),'.daed gnieb sa emas eht si eno dnif ot elbanu gnieB .ecnetsixe ruoy rof nosaer a deen uoy ,evila er''uoy elihW'))\r\n%%\r\nx = 'how are you';\r\nassert(isequal(decyp(x,2),'|#i/mh+/f#['))\r\n%%\r\nz= '_@T0UfdTqU=[UfdTD%\"z[[U|dTUD%d[zUD%@DU0d76DUOz\"=z;zU=7UD%z#[z\";z[';\r\nu='Hard work is worthless for those that don''t believe in themselves'\r\nassert(isequal(decyp(char(u+2),2),z))\r\n%%\r\nz='w%=\"zUJdi6TzU@\"=;zjUJdiU7zz0U@UTz@[d7U|dTUJdiTUz9=[Dz7+z)Uxz=7^Ui7@O\"zUDdU|=70Ud7zU=[UD%zU[@#zU@[UOz=7^U0z@0)';\r\nx='While you''re alive, you need a reason for your existence. Being unable to find one is the same as being dead.'\r\nassert(isequal(decyp(char(x+2),2),z))\r\n%%\r\nu='[z;\"z[#z%DU7=Uz;z=\"zOUD67d0UD@%DUz[d%DUTd|U[[z\"%DTdfU[=UqTdfU0T@_';\r\nx=('Hard work is worthless for those that don''t believe in themselves');\r\nassert(isequal(decyp(char(flip(x+2)),2),u))\r\n%%\r\nu='w%=\"zUJdi6TzU@\"=;zjUJdiU7zz0U@UTz@[d7U|dTUJdiTUz9=[Dz7+z)Uxz=7^Ui7@O\"zUDdU|=70Ud7zU=[UD%zU[@#zU@[UOz=7^U0z@0)';\r\nx='.daed gnieb sa emas eht si eno dnif ot elbanu gnieB .ecnetsixe ruoy rof nosaer a deen uoy ,evila er''uoy elihW';\r\nassert(isequal(decyp(char(flip(x+2)),2),u))\r\n\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-23T15:20:36.000Z","updated_at":"2020-12-23T21:08:12.000Z","published_at":"2020-12-23T21:08:12.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given a input number \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 have to figure out the key according to the second input\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\u003eref=ascii(32:126); decipher_key=[ascii(33:126) ascii(32)  ]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e(eg)  x='gdkkn' if y==1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput y='hello'\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\u003eif x='hello' if y==2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput='gdkkn';\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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"If\\\" and \\\"while\\\" are forbidden\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":44356,"title":"Code breaker, Part II:  Operation Orthos","description":"You have been tasked with decoding several batches of coded messages that have been intercepted.  \r\n\r\nBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple \u003chttps://en.wikipedia.org/wiki/Caesar_cipher Caesar cipher\u003e (a type of \u003chttps://en.wikipedia.org/wiki/Substitution_cipher substitution cipher\u003e), an example of which is the \u003chttps://en.wikipedia.org/wiki/ROT13 ROT13 cipher\u003e (discussed in \u003chttps://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher Cody Challenge Problem 78\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026 numbers) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between batches of messages — although it will be the same for all messages in a batch (also, here you need to decode, not encode).  \r\n\r\nYou can also assume that the original batch of messages will relate to an activity that is referred to by those involved as \"Operation Orthos\". However, in their secret internal communications they might not use this exact phrase at all, nor this exact capitalisation.  Therefore you should seek _simultaneous_ occurrence of the separate words \"Operation\" and \"Orthos\" (with any capitalisation) in messages within the given batch.  \r\n\r\nYour task is to crack the codes and report back in a \u003chttp://au.mathworks.com/help/matlab/ref/struct.html structure array\u003e:  (1) the shifting parameter that had been used in the encoding [as \u003chttp://au.mathworks.com/help/matlab/ref/uint8.html uint8\u003e];  (2)  the decoded messages [as a \u003chttp://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta cell array\u003e (containing \u003chttp://au.mathworks.com/help/matlab/ref/char.html character arrays\u003e)].  \r\nThe name of the structure array shall be \"s\", with respective fields \"shift\" and \"message\".  \r\n\r\nEXAMPLE\r\n\r\nSuppose the batch contained two encoded messages — _\"qspdffe x/ pqfsbujpo\"_ and _\"Psuipt jt HP!\"_ (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  (Note that the shifting 'wraps' back around.)  \r\nThus the original messages would have been:  _\"proceed w/ operation\"_ and _\"Orthos is GO!\"_ .\r\n\r\nThe correct answer would comprise:  \r\n\r\n  s.shift = uint8(1)  \r\n  s.message = {'proceed w/ operation', 'Orthos is GO!'}\r\n\r\nIf the batch of messages cannot be decoded when following the above assumptions, then simply return 'scalar' \u003chttp://au.mathworks.com/help/matlab/ref/nan.html NaN\u003e in both fields (no need for a cell array).  \r\n\r\n|Note:  Many Cody solutions are hard to read and not necessarily computationally efficient.  To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable).  Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)|  \r\n\r\nTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".  \r\n\r\n----------\r\n\r\nPrevious problem:  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351 Operation Phoenix\u003e.  Next problem:  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44383 Operation Xiangliu\u003e.","description_html":"\u003cp\u003eYou have been tasked with decoding several batches of coded messages that have been intercepted.\u003c/p\u003e\u003cp\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple \u003ca href = \"https://en.wikipedia.org/wiki/Caesar_cipher\"\u003eCaesar cipher\u003c/a\u003e (a type of \u003ca href = \"https://en.wikipedia.org/wiki/Substitution_cipher\"\u003esubstitution cipher\u003c/a\u003e), an example of which is the \u003ca href = \"https://en.wikipedia.org/wiki/ROT13\"\u003eROT13 cipher\u003c/a\u003e (discussed in \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher\"\u003eCody Challenge Problem 78\u003c/a\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026 numbers) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between batches of messages — although it will be the same for all messages in a batch (also, here you need to decode, not encode).\u003c/p\u003e\u003cp\u003eYou can also assume that the original batch of messages will relate to an activity that is referred to by those involved as \"Operation Orthos\". However, in their secret internal communications they might not use this exact phrase at all, nor this exact capitalisation.  Therefore you should seek \u003ci\u003esimultaneous\u003c/i\u003e occurrence of the separate words \"Operation\" and \"Orthos\" (with any capitalisation) in messages within the given batch.\u003c/p\u003e\u003cp\u003eYour task is to crack the codes and report back in a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/struct.html\"\u003estructure array\u003c/a\u003e:  (1) the shifting parameter that had been used in the encoding [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/uint8.html\"\u003euint8\u003c/a\u003e];  (2)  the decoded messages [as a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta\"\u003ecell array\u003c/a\u003e (containing \u003ca href = \"http://au.mathworks.com/help/matlab/ref/char.html\"\u003echaracter arrays\u003c/a\u003e)].  \r\nThe name of the structure array shall be \"s\", with respective fields \"shift\" and \"message\".\u003c/p\u003e\u003cp\u003eEXAMPLE\u003c/p\u003e\u003cp\u003eSuppose the batch contained two encoded messages — \u003ci\u003e\"qspdffe x/ pqfsbujpo\"\u003c/i\u003e and \u003ci\u003e\"Psuipt jt HP!\"\u003c/i\u003e (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  (Note that the shifting 'wraps' back around.)  \r\nThus the original messages would have been:  \u003ci\u003e\"proceed w/ operation\"\u003c/i\u003e and \u003ci\u003e\"Orthos is GO!\"\u003c/i\u003e .\u003c/p\u003e\u003cp\u003eThe correct answer would comprise:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003es.shift = uint8(1)  \r\ns.message = {'proceed w/ operation', 'Orthos is GO!'}\r\n\u003c/pre\u003e\u003cp\u003eIf the batch of messages cannot be decoded when following the above assumptions, then simply return 'scalar' \u003ca href = \"http://au.mathworks.com/help/matlab/ref/nan.html\"\u003eNaN\u003c/a\u003e in both fields (no need for a cell array).\u003c/p\u003e\u003cp\u003e\u003ctt\u003eNote:  Many Cody solutions are hard to read and not necessarily computationally efficient.  To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable).  Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)\u003c/tt\u003e\u003c/p\u003e\u003cp\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".\u003c/p\u003e\u003cp\u003e----------\u003c/p\u003e\u003cp\u003ePrevious problem:  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351\"\u003eOperation Phoenix\u003c/a\u003e.  Next problem:  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44383\"\u003eOperation Xiangliu\u003c/a\u003e.\u003c/p\u003e","function_template":"function s = decode(x)\r\n  s = x;\r\nend","test_suite":"%% NOTE:  \r\n% This test suite can be updated if inappropriate 'hacks' \r\n% are discovered in any submitted solutions, \r\n% so the assessment of your submission may therefore change over time.  \r\nRE = regexp(fileread('decode.m'), '\\w+', 'match');\r\ntabooWords = {'ans', 'assert', 'freepass', 'tic'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any(  cellfun( @(z) ismember(z, tabooWords), RE )  ), msg)\r\n\r\n\r\n%% Test 1\r\nx =                 {'qspdffe x/ pqfsbujpo', 'Psuipt jt HP!'};\r\ns_correct.shift = uint8(1);\r\ns_correct.message = {'proceed w/ operation', 'Orthos is GO!'};\r\ns = decode(x);\r\n%disp(' *** ');  disp(s.message);  disp(' *** ')\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message{1}, s_correct.message{1}) )\r\nassert( isequal(s.message{2}, s_correct.message{2}) )\r\nassert( isequal(s.message, s_correct.message) )\r\nassert( isequal(s, s_correct) )\r\nassert( isequal(class(s.shift), 'uint8') )\r\nassert( isequal(class(s.message), 'cell') )\r\nassert( isequal(class(s.message{1}), 'char') )\r\n\r\n\r\n%% Test 2\r\nx =                 {'Hfqq Ons ts 555-7839 FXFU.', 'twymtx nx ts mtqi', 'bfnynsl ktw dtzw fianhj', 'TUJWFYNTS UTXYUTSJI'};\r\ns_correct.shift = uint8(5);\r\ns_correct.message = {'Call Jin on 555-7839 ASAP.', 'orthos is on hold', 'waiting for your advice', 'OPERATION POSTPONED'};\r\ns = decode(x);\r\n%disp(' *** ');  disp(s.message);  disp(' *** ')\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% Test 3\r\nx =                 {'Ocz kvnnrjmy rvn xcvibzy: \"Knpdko\" oj \"Gjlzgk\".', 'Jkzmvodji Kcjzids rvn npxxznnapg. Izso rdgg wz Jmocjn.', 'Edi Uvkxgzout rdgg wz gzvydib Ozvh V'};\r\ns_correct.shift = uint8(21);\r\ns_correct.message = {'The password was changed: \"Psuipt\" to \"Loqelp\".', 'Operation Phoenix was successful. Next will be Orthos.', 'Jin Zapcletzy will be leading Team A'};\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% Test 4\r\nx =                 {'bxmzzuzs r/ adftae az fdmow', 'adftae etxp oaybxqfq uz 2 iwe', 'abqdmfuaz pmfq eturfqp nmow 2 p.', 'naawe dqoquhqp. fwe Vuz' };\r\ns_correct.shift = uint8(12);\r\ns_correct.message = {'planning f/ orthos on track', 'orthos shld complete in 2 wks', 'operation date shifted back 2 d.', 'books received. tks Jin'};\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% Test 5\r\nx =                 {'Hdsffafy xgj Ghwjslagf Gjlzgk zsk gxxauasddq ugeewfuwv.  Lzak oadd tw dwv tq Lwse S, kmhhgjlwv tq Lwse T sk fwwvwv.'};\r\ns_correct.shift = uint8(18);\r\ns_correct.message = {'Planning for Operation Orthos has officially commenced.  This will be led by Team A, supported by Team B as needed.'};\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% Test 6\r\nx = {'Mncpyrgml Nfmclgv qryprcb rfpcc bywq yem.  Yjj ncpqmllcj ypc rm pckygl ml bsrw slrgj Mncpyrgml Nfmclgv gq amknjcrcb.'};\r\ns_correct.shift = nan;\r\ns_correct.message = nan;\r\ns = decode(x);\r\nassert( isnan(s.shift) )\r\nassert( isnan(s.message) )\r\n\r\n\r\n%% Test 7\r\nx =                 {'Iutloxskj vgyycuxj oy tuc \"Ruwkrv\".', 'Vrgt lux uxznuy ruuqy UQ, haz tkkj suxk $$$', 'Ksgor Pot Fgvirkzfe ut xacqxb@sgzncuxqy.ius xk. Zakyjge', 'Zgrqkj zu Zkgs H.  Ngvve zu yavvuxz uvkxgzout....', 'Xk. latjy, vry zxgtylkx zu giiuatz \"YZOBKDSYX\" - ZDY', 'jUT''Z cUXXE'};\r\ns_correct.shift = uint8(6);\r\ns_correct.message = {'Confirmed password is now \"Loqelp\".', 'Plan for orthos looks OK, but need more $$$', 'Email Jin Zapcletzy on ruwkrv@mathworks.com re. Tuesday', 'Talked to Team B.  Happy to support operation....', 'Re. funds, pls transfer to account \"STIVEXMSR\" - TXS', 'dON''T wORRY'};\r\ns = decode(x);\r\nassert( isequal(s.shift, s_correct.shift) )\r\nassert( isequal(s.message, s_correct.message) )\r\n\r\n\r\n%% TIMING \r\n% Note:  The Time Trial section does not check accuracy; that is done above.\r\n\r\n% Acknowledgements  \r\n% Portions of this timing test code were inspired by:\r\n% (1) Problem 937. \"Rubik's Mini Cube: Solve Randomized Cube in 11 Moves or Less; Score is by Time (msec)\" by Richard Zapor.\r\n% (2) Problem 2733. \"Evil Number\" by Jan Orwat.\r\n% (3) Feedback in comments from Peng Liu.\r\n% (4) Problem Problem 1237. \"It's race time! Write a faster function than the test suite call of unique().\" by Jeremy.\r\n\r\n% INITIALISE\r\nx = {'qspdffe x/ pqfsbujpo', 'Psuipt jt HP!'};\r\nqSmall = 50;\r\nqBig = 10000;\r\n%cutoffTimeBig = 10;\r\n\r\n% EDIT (2018-06-17).  Reduced time to pose reasonable challenge.\r\n% Accounted for improving Cody server speed per Problem 44655.\r\ncutoffTimeBig = 3;    % Maximum allowable walltime (in seconds) to run function in a loop with qBig iterations.\r\ntRef = datetime('2018-06-17', 'InputFormat','yyyy-MM-dd');\r\ntNow = datetime('now');\r\nyearsElapsed = (datenum(tNow) - datenum(tRef)) / 365.24;\r\nfprintf('\\r\\n\\r\\n\\r\\nSubmission evaluated for speed on %s.\\r\\n', datestr(tNow, 'dd mmmm yyyy'))\r\nrInf = 0.2;   delta = cutoffTimeBig - rInf;  tau = 3.6;  % Data from Problem 44655, based on Problem 963.\r\nqBig = floor( qBig * (cutoffTimeBig - rInf) * exp(yearsElapsed/tau) / delta );\r\nfprintf('\\r\\n\\r\\n\\r\\nTo account for computational power increases over time, number of iterations increased to %u.\\r\\n', qBig)\r\n% END EDIT (2018-06-17)\r\n\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\n\r\n% *** PRELIMINARY TIMING WITH timeit ***\r\nfDecode = @()   decode(x);\r\ndt_timeit = timeit( fDecode );\r\nfprintf('APPROXIMATE time to decode %u message batches ~ %2.2f seconds, according to ''timeit''.\\n\\r', qBig, dt_timeit * qBig)\r\n\r\n% *** PRELIMINARY TIMING WITH SHORT LOOP ***\r\n% In case the submitted function has a lot of text output, \r\n% get an estimate based on just a few iterations\r\n% Initialise\r\nt0 = clock;\r\n\r\n% Loop\r\nfor i = 1 : qSmall\r\n    solution = decode( x );\r\nend;\r\n\r\n% Compute and display elapsed time.\r\ndt = etime(clock, t0);\r\ndisp('     -----=====-----     ')\r\n%fprintf('Your wall time to decode %u message batches = %i seconds.\\n\\r', qSmall, floor(dt))\r\nfprintf('APPROXIMATE wall time to decode %u message batches ~ %2.2f seconds, by extrapolating from %u batches.\\n\\r', qBig, dt * qBig / qSmall, qSmall)\r\ndisp('     -----=====-----     ')\r\n\r\n% *** 'OFFICIAL' TIMING ***\r\n% Re-initialise timer\r\nt0 = clock;\r\nt0_cpu = cputime;\r\n\r\n% Loop\r\nfor i = 1 : qBig\r\n    solution = decode( x );\r\nend;\r\n\r\n% Compute and display elapsed time.\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\ndisp('     -----=====|||||=====-----     ')\r\ndt = etime(clock, t0);\r\nfprintf('Your wall time to decode %u message batches = %2.2f seconds.\\n\\r', qBig, dt)\r\n\r\ndt_cpu = (cputime - t0_cpu);\r\nfprintf(' ( Your CPU time for this = %2.2f seconds. ) \\n\\r', dt_cpu)\r\n\r\n% Display (default) Cody size-based score.\r\nall_nodes = mtree('decode.m', '-file');\r\nsize_score = count(all_nodes);\r\nfprintf('Your Cody-standard size-based score = %i.\\n\\r', size_score)\r\n\r\n% Report revised performance score\r\ncombinedScore = size_score + round(dt * 10);\r\nfprintf('Your combined score = %i.\\n\\r', combinedScore)\r\ndisp('     -----=====|||||=====-----     ')\r\n\r\n% Now disallow any candidate solutions that are TOO SLOW!\r\nif dt \u003e cutoffTimeBig, \r\n    fprintf('Sorry, your submission is TOO SLOW.  It must be able to finish within %u seconds.\\n\\r', cutoffTimeBig)\r\nend;\r\n\r\nassert( dt \u003c= cutoffTimeBig )","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":29,"test_suite_updated_at":"2018-06-17T14:03:55.000Z","rescore_all_solutions":false,"group_id":40,"created_at":"2017-10-03T06:52:32.000Z","updated_at":"2026-04-02T18:15:25.000Z","published_at":"2017-10-03T11:50:21.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\u003eYou have been tasked with decoding several batches of coded messages that have been intercepted.\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\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple\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/Caesar_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCaesar cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (a type of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Substitution_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003esubstitution cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e), an example of which is 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/ROT13\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eROT13 cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (discussed in\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/78-implement-a-rot13-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCody Challenge Problem 78\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e). As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation \u0026amp; numbers) are unchanged. Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and may vary between batches of messages — although it will be the same for all messages in a batch (also, here you need to decode, not encode).\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\u003eYou can also assume that the original batch of messages will relate to an activity that is referred to by those involved as \\\"Operation Orthos\\\". However, in their secret internal communications they might not use this exact phrase at all, nor this exact capitalisation. Therefore you should seek\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esimultaneous\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e occurrence of the separate words \\\"Operation\\\" and \\\"Orthos\\\" (with any capitalisation) in messages within the given batch.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task is to crack the codes and report back in a\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://au.mathworks.com/help/matlab/ref/struct.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003estructure array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e: (1) the shifting parameter that had been used in the encoding [as\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://au.mathworks.com/help/matlab/ref/uint8.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003euint8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e]; (2) the decoded messages [as a\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://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecell array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (containing\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://au.mathworks.com/help/matlab/ref/char.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003echaracter arrays\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e)]. The name of the structure array shall be \\\"s\\\", with respective fields \\\"shift\\\" and \\\"message\\\".\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose the batch contained two encoded messages —\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"qspdffe x/ pqfsbujpo\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Psuipt jt HP!\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied. In that case A→B, B→C, ..., Y→Z, and Z→A; similarly, a→b, b→c, ..., y→z, and z→a. (Note that the shifting 'wraps' back around.) Thus the original messages would have been: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"proceed w/ operation\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Orthos is GO!\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e .\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe correct answer would comprise:\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[s.shift = uint8(1)  \\ns.message = {'proceed w/ operation', 'Orthos is GO!'}]]\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\u003eIf the batch of messages cannot be decoded when following the above assumptions, then simply return 'scalar'\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://au.mathworks.com/help/matlab/ref/nan.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eNaN\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e in both fields (no need for a cell array).\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNote: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)\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\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \\\"too slow\\\".\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----------\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\u003ePrevious problem: \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/44351\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOperation Phoenix\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Next problem: \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/44383\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOperation Xiangliu\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\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":78,"title":"Implement a ROT13 cipher","description":"Replace each character in string s1 with the character that is shifted 13 positions from it (wrap back to the beginning if necessary). So A ? N, B ? O, and so on until Y ? L and Z ? M. Case of the output should match the case of the input, so a ? n. Non-alphabetic characters are left in place and untouched.\n\nIf\n\n s1 = 'I love MATLAB'\n\nthen\n\n s2 = 'V ybir ZNGYNO'\n\nSee the \u003chttp://en.wikipedia.org/wiki/ROT13 Wikipedia article\u003e for more info.","description_html":"\u003cp\u003eReplace each character in string s1 with the character that is shifted 13 positions from it (wrap back to the beginning if necessary). So A ? N, B ? O, and so on until Y ? L and Z ? M. Case of the output should match the case of the input, so a ? n. Non-alphabetic characters are left in place and untouched.\u003c/p\u003e\u003cp\u003eIf\u003c/p\u003e\u003cpre\u003e s1 = 'I love MATLAB'\u003c/pre\u003e\u003cp\u003ethen\u003c/p\u003e\u003cpre\u003e s2 = 'V ybir ZNGYNO'\u003c/pre\u003e\u003cp\u003eSee the \u003ca href=\"http://en.wikipedia.org/wiki/ROT13\"\u003eWikipedia article\u003c/a\u003e for more info.\u003c/p\u003e","function_template":"function s2 = rot13(s1)\n  s2 = s1;\nend","test_suite":"%% Test #1\n\ns1 = 'I love MATLAB';\ns2_correct = 'V ybir ZNGYNO';\nassert(isequal(rot13(s1),s2_correct))\n\n%% Test #2\n\ns1 = 'I \u003c3 MATLAB!!';\ns2_correct = 'V \u003c3 ZNGYNO!!';\nassert(isequal(rot13(s1),s2_correct))\n\n%% Test #3\n\ns1 = 'The quick fox stumbled over the confusing instructions.';\ns2_correct = 'Gur dhvpx sbk fghzoyrq bire gur pbashfvat vafgehpgvbaf.';\nassert(isequal(rot13(s1),s2_correct))\n\n%% Test #4\n\ns1 = 'Snape kills Dumbledore on page 606. Also, there is no Santa.';\ns2_correct = 'Fancr xvyyf Qhzoyrqber ba cntr 606. Nyfb, gurer vf ab Fnagn.';\nassert(isequal(rot13(s1),s2_correct))\n\n","published":true,"deleted":false,"likes_count":13,"comments_count":3,"created_by":1,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1713,"test_suite_updated_at":"2012-01-18T01:00:28.000Z","rescore_all_solutions":false,"group_id":2,"created_at":"2012-01-18T01:00:28.000Z","updated_at":"2026-01-06T04:39:32.000Z","published_at":"2012-01-18T01:00: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:r\u003e\u003cw:t\u003eReplace each character in string s1 with the character that is shifted 13 positions from it (wrap back to the beginning if necessary). So A ? N, B ? O, and so on until Y ? L and Z ? M. Case of the output should match the case of the input, so a ? n. Non-alphabetic characters are left in place and untouched.\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\u003eIf\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[ s1 = 'I love MATLAB']]\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\u003ethen\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[ s2 = 'V ybir ZNGYNO']]\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\u003eSee the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/ROT13\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eWikipedia article\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e for more info.\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":48920,"title":"Cipher and Decipher the message - 3 key ","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 258.624px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 406.5px 129.312px; transform-origin: 406.5px 129.312px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou will be given a input number (eg)  x='geikm'  y==1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eyou have to figure out the dechiper key and match it with given input and decipher it\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eref=ascii(32:126); decipher_key1=[ascii(33:126) ascii(32)  ]; decipher_key2=[ascii(34:126) ascii(32:33)  ];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e decipher_key3=[ascii(35:126) ascii(32:34)  ]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput ='hello'\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eif y==2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003einput='hello'\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eoutput='geikm' \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.736px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 383.496px 10.368px; text-align: left; transform-origin: 383.502px 10.368px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\"If\" and \"while\" are forbidden\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function z = decyp(x,y)\r\n  z = x;\r\nend","test_suite":"%%\r\nfiletext = fileread('decyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, 'if')),'if is forbidden')\r\nassert(isempty(strfind(filetext, 'while')),'while is forbidden')\r\nassert(isempty(strfind(filetext, 'switch')),'switch is forbidden')\r\n%%\r\nx = '|G:/br+{|#J';\r\nassert(isequal(decyp(x,1),'how are you'))\r\n%%\r\nx='/`pMy8!u_-Sj-jifkKG?jay=!u(ROia?(RO!RyH!KBRy7)4\\)FT-S^-kK)^j)4@)@';\r\nassert(isequal(decyp(char(x+2),1),'Hard work is worthless for those that don''t believe in themselves'))\r\n%%\r\nx='NO\\G?(dEOCuT-`S\\FTcyz!H( ?TMy!-uTk@i y=!u(dEOfyT9SjR?^\u003e?J-dT\\KR-H^k,S)y2!y=\\KH-E^)y\\ay2z?(a`#)y!ay7)S^xyH)`Hh';\r\nassert(isequal(decyp(char(x+2),1),'While you''re alive, you need a reason for your existence. Being unable to find one is the same as being dead.'))\r\n%%\r\nx='Vkp:-8Ef_y\\jygiuRK4)j@-=Ef(kzi@)(kz!k-HE Bk-7?G\\?BTy\\^yRK?oj?G@?a';\r\nassert(isequal(decyp(char(flip(x+2)),1),flip('Hard work is worthless for those that don''t believe in themselves')))\r\n%%\r\nx='NKSGTydiHCp?-!4\\@?c( !Oy T?M(`-p?kjE (o!pydiHf(?9\\@RTK\u003eT\"-L?\\^\u001f-OKk74)(k!(o\\^:-iK)(Sa(kzTya!^)(`a(,)\\Kx(:)!:h';\r\nassert(isequal(decyp(char(flip(x+2)),1),'.daed gnieb sa emas eht si eno dnif ot elbanu gnieB .ecnetsixe ruoy rof nosaer a deen uoy ,evila er''uoy elihW'))\r\n\r\n%%\r\nx='Try your best good luck';\r\n\r\nassert(isequal(decyp(x,2), '.w|/\"k[w*LAlT{T#GJ/6Q@F'))\r\n\r\n%%\r\nx='Hard work is worthless for those that don''t believe in themselves';\r\nassert(isequal(decyp(char(x+2),2),  '_E40 |dm%UFQU\"nTH\\\"!Q[ MdmpD:n[!pD:tD ?d1+D JzMaz)TUFZUH\\zGQzMbzJ'))\r\n%%\r\nx='While you''re alive, you need a reason for your existence. Being unable to find one is the same as being dead.';\r\nassert(isequal(decyp(char(x+2),2), 'w:a\"!pJ@:6mTUE`=)Tj 0dlp7!T0 tUmT@Jn7 MdmpJ@:T T9FQD!Z+! UcT=1^UlZ@\u003c`z Bd M=1?U@Zz a[ B%!p[Ekz t[ JzFZ^ ?zE?)'))\r\n%%\r\nx=flip('Hard work is worthless for those that don''t believe in themselves');\r\nassert(isequal(decyp(char(flip(x+2)),2),'_E40 |dm%UFQU\"nTH\\\"!Q[ MdmpD:n[!pD:tD ?d1+D JzMaz)TUFZUH\\zGQzMbzJ'))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-21T21:59:49.000Z","updated_at":"2025-06-19T15:48:08.000Z","published_at":"2020-12-22T09:58:35.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given a input number (eg)  x='geikm'  y==1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eyou have to figure out the dechiper key and match it with given input and decipher it\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\u003eref=ascii(32:126); decipher_key1=[ascii(33:126) ascii(32)  ]; decipher_key2=[ascii(34:126) ascii(32:33)  ];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e decipher_key3=[ascii(35:126) ascii(32:34)  ]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput ='hello'\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\u003eif y==2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003einput='hello'\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput='geikm' \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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"If\\\" and \\\"while\\\" are forbidden\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":47970,"title":"Cipher or decipher the number according to the second input - 10 keys","description":null,"description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 531px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 265.5px; transform-origin: 407px 265.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 192px 8px; transform-origin: 192px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou will be given an input number as a char (e.g., x = '1233').\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 267.5px 8px; transform-origin: 267.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou have to figure out the dechiper keys and match it with given input and decipher it\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 8px; transform-origin: 0px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 323.5px 8px; transform-origin: 323.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; decipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;decipher_key_2=[ 3 4 5 6 7 8 9 0 1 2];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 241px 8px; transform-origin: 241px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003edecipher_key_3=[ 2 3 4 5 6 7 8 9 0 1];decipher_key_4=[ 2 3 4 5 6 7 8 9 0 1];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 143.5px 8px; transform-origin: 143.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e---\u0026gt; These are not real keys , just an example\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 62.5px 8px; transform-origin: 62.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eeg  x=1233 and y=1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42px 8px; transform-origin: 42px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eoutput =2555\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42px 8px; transform-origin: 42px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eif x=2555 y=2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42px 8px; transform-origin: 42px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eoutput =1233\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 76px 8px; transform-origin: 76px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eHint : index :  1-\u0026gt; key 1  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 85px 8px; transform-origin: 85px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                            2\u0026gt; key 2 \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 99.5px 8px; transform-origin: 99.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                                3 -\u0026gt; key 3  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 105.5px 8px; transform-origin: 105.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                                      4-\u0026gt; key 4\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 119px 8px; transform-origin: 119px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                                            5_\u0026gt; key 5\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 225px 8px; transform-origin: 225px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e                                                            up to key 10    .............................\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 316.5px 8px; transform-origin: 316.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eif the number of digits exceeds 10 , 11 th digit must have the 1st key and 2nd key for 12th and so on.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 106px 8px; transform-origin: 106px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e\"If\" and \"while\" are forbidden.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = cyp(x,y)\r\n  y = x;\r\nend","test_suite":"%%\r\nfiletext = fileread('cyp.m');\r\nassert(isempty(strfind(filetext, 'regexp')),'regexp hacks are forbidden')\r\nassert(isempty(strfind(filetext, 'if')),'if is forbidden')\r\nassert(isempty(strfind(filetext, 'while')),'while is forbidden')\r\nassert(isempty(strfind(filetext, '-')),'- is forbidden')\r\nassert(isempty(strfind(filetext, 'switch')),'switch is forbidden')\r\n\r\n%%\r\nx=num2str(20710655*13335135);\r\ny=1;\r\nassert(isequal(cyp(x,y),97256528638204));\r\n\r\n%%\r\nx='97256528638204';\r\ny=2;\r\nassert(isequal(cyp(x,y),20710655*13335135));\r\n\r\n%%\r\nx='01215';\r\ny=1;\r\nassert(isequal(cyp(x,y),94924));\r\n\r\n%%\r\nx='94924';\r\ny=2;\r\nassert(isequal(['0' num2str(cyp(x,y))],'01215'));\r\n\r\n%%\r\nx=num2str(20435655*136345);\r\ny=1;\r\nassert(isequal(cyp(flip(x),y),1911936178599));\r\n\r\n%%\r\nx=num2str(0435655*1363452);\r\ny=1;\r\nassert(isequal(cyp(flip(x),y),928297415645));\r\n\r\n%%\r\nx='04356551363452';\r\ny=1;\r\nassert(isequal(cyp(flip(x),y),5231324481821));","published":true,"deleted":false,"likes_count":1,"comments_count":10,"created_by":610936,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":8,"test_suite_updated_at":"2021-01-11T11:28:32.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-12-14T17:30:48.000Z","updated_at":"2025-06-19T15:49:28.000Z","published_at":"2020-12-14T17:50:04.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou will be given an input number as a char (e.g., x = '1233').\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 have to figure out the dechiper keys and match it with given input and decipher it\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eref=[0 1 2 3 4 5 6 7 8 9 ]; decipher_key_1=[ 1 2 3 4 5 6 7 8 9 0] ;decipher_key_2=[ 3 4 5 6 7 8 9 0 1 2];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003edecipher_key_3=[ 2 3 4 5 6 7 8 9 0 1];decipher_key_4=[ 2 3 4 5 6 7 8 9 0 1];\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e---\u0026gt; These are not real keys , just an example\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\u003eeg  x=1233 and y=1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput =2555\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\u003eif x=2555 y=2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput =1233\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\u003eHint : index :  1-\u0026gt; key 1  \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                            2\u0026gt; key 2 \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                                3 -\u0026gt; key 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\u003e                                      4-\u0026gt; key 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\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                                            5_\u0026gt; key 5\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e                                                            up to key 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\u003eif the number of digits exceeds 10 , 11 th digit must have the 1st key and 2nd key for 12th and so on.\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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"If\\\" and \\\"while\\\" are forbidden.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":44383,"title":"Code breaker, Part III:  Operation Xiangliu","description":"You have been tasked with decoding several batches of coded messages that have been intercepted.  \r\n\r\nBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple \u003chttps://en.wikipedia.org/wiki/Caesar_cipher Caesar cipher\u003e (a type of \u003chttps://en.wikipedia.org/wiki/Substitution_cipher substitution cipher\u003e), an example of which is the \u003chttps://en.wikipedia.org/wiki/ROT13 ROT13 cipher\u003e (discussed in \u003chttps://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher Cody Challenge Problem 78\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation, numbers, accented letters) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and will vary _between_ (not within) batches — also, here you need to decode, not encode.  \r\n\r\nThese latest activities that you are investigating have been nicknamed 'Operation Xiangliu' by your own organisation.  A few decoding options are at your organisation's disposal:  \r\n\r\n# Test the candidate decodings against all words in a large dictionary — this could work, but it is very slow.\r\n# Test the candidate decodings for the appearance of a name or phrase that is certain to appear regularly (e.g. \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44351 \"Operation Phoenix\"\u003e) — unfortunately as yet there is not enough knowledge of the activities to be sure of a suitable name or phrase to use.  \r\n# Test the candidate decodings against all words in a short list comprising, say, the hundred most frequently used English words.\r\n\r\nThe *third option* will be faster than the first option, and more reliable than the second option, so this is the approach you will be taking.  \r\n\r\nYou have been careful to avoid using 'lemmatised' lists (which contain e.g. the verb \"to be\", rather than the various inflected forms such as \"am\", \"is\", \"are\") like those based on the \u003chttps://web.archive.org/web/20111226085859/http://oxforddictionaries.com/words/the-oec-facts-about-the-language OEC\u003e or \u003chttps://www.wordfrequency.info/free.asp?s=y COCA\u003e, and after setting aside \u003chttp://world-english.org/english500.htm another list\u003e you finally choose the \u003chttp://ucrel.lancs.ac.uk/bncfreq/samples/120.pdf list based on the BNC\u003e as the most reliable, and will use the first 100 words on that list.  \r\nThis list will be available for you to access as an input variable, |bncWordlist|, to your function. Note: (i) some entries on the list are morphemes (e.g. \"\u0026#x200A;n't\u0026#x200A;\" and \"\u0026#x200A;'s\u0026#x200A;\") rather than words;  (ii) some entries appear more than once (representing different grammatical word classes).  Of course, in the original messages any capitalisation might be used.  \r\n\r\nYou have been instructed that your 'certitude' (degree of confidence) in the decoding must be reported for each batch, and shall depend proportionally upon the sum of the characters for the words/morphemes in the decoded message that match words/morphemes in |bncWordlist|.  Being able to match words/morphemes accounting for three-tenths of the characters (excluding spaces) shall correspond to 100% certitude;  matching three-twentieths would be 50% certitude, and so on.  Certitude shall be reported as a percentage, rounded _up_ to the nearest integer, not greater than 100.  You need to maximise your certitude for each batch by appropriate choice of the shifting parameter.   If there are multiple shifts of equal certitude, report both options on different rows (arranged in order of ascending shift parameter).\r\n\r\nYour task is to crack the codes and report back in a \u003chttp://au.mathworks.com/help/matlab/ref/struct.html structure array\u003e: \u0026nbsp; (1) the shifting parameter that had been used in the encoding [as \u003chttp://au.mathworks.com/help/matlab/ref/uint8.html uint8\u003e] (usually scalar, but may be column vector); \u0026nbsp; (2) the decoded messages [as a \u003chttp://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta cell array\u003e (containing \u003chttp://au.mathworks.com/help/matlab/ref/char.html character arrays\u003e)] (usually an array with a single row, but occasionally with multiple rows); \u0026nbsp; (3) your 'certitude' in the decoding [as \u003chttp://au.mathworks.com/help/matlab/ref/uint8.html uint8\u003e] (always scalar).  \r\nThe name of the structure array shall be |s|, with respective fields |shift|, |message|, and |certitude|.  \r\n\r\n*EXAMPLE 1*\r\n\r\nSuppose the batch contained two encoded messages — _\"Vomftt qvstvfe, pqfo op eppst.\"_ and _\"Ffmt dbo ljmm, opu pomz xpvoe.\"_ (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  \r\nThus the original messages would have been:  _\"Unless pursued, open no doors.\"_ and _\"Eels can kill, not only wound.\"_ .  Twelve of the 51 characters have been matched:  \"no\", \"can\", \"not\", and \"only\".  \r\n\r\nThe correct answer would therefore comprise:  \r\n\r\n  s.shift = uint8(1)  \r\n  s.message = {'Unless pursued, open no doors.', 'Eels can kill, not only wound.'}\r\n  s.certitude = uint8(79)\r\n\r\n*EXAMPLE 2*\r\n\r\nSuppose the batch contained one encoded message — _\"Oa oqvvq'u cnycau dggp: \"Ctu itcvkc ctvku\".\"_ (provided as a character array within a cell array) — and a (right-shifting) ROT2 cipher had been applied.  In that case A→C, B→D, ..., Y→A, and Z→B;  similarly, a→c, b→d, ..., y→a, and z→b.  \r\nThus the original message would have been:  _\"My motto's always been: \"Ars gratia artis\".\"_ .  Eight of the 37 characters have been matched: \"My\", \"\u0026#x200A;'s\u0026#x200A;\", and \"been\".  Note carefully that:  \"\u0026#x200A;'s\u0026#x200A;\" should only be matched once;  \"to\" (in motto), \"be\" (in been), \"at\" (in gratia), \"is\" (in artis) and \"a\" (passim) should _not_ be matched at all;  and \"\u0026#x200A;'\u0026#x200A;\" will only ever be used as an apostrophe (never as a quotation mark).  \r\n\r\nThe correct answer would therefore comprise:  \r\n\r\n  s.shift = uint8(2)  \r\n  s.message = {'My motto''s always been: \"Ars gratia artis\".'}\r\n  s.certitude = uint8(73)\r\n\r\nIf the batch of messages cannot be decoded when following the above assumptions, then return the original encoded message(s) unchanged, with a shift of zero and a certitude of zero.  \r\n\r\n|Note:  Many Cody solutions are hard to read and not necessarily computationally efficient.  To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable).  Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)|  \r\n\r\nTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".  \r\n\r\n----------\r\n\r\nPrevious problem:  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44356 Operation Orthos\u003e.  Next problem:  TBA.","description_html":"\u003cp\u003eYou have been tasked with decoding several batches of coded messages that have been intercepted.\u003c/p\u003e\u003cp\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple \u003ca href = \"https://en.wikipedia.org/wiki/Caesar_cipher\"\u003eCaesar cipher\u003c/a\u003e (a type of \u003ca href = \"https://en.wikipedia.org/wiki/Substitution_cipher\"\u003esubstitution cipher\u003c/a\u003e), an example of which is the \u003ca href = \"https://en.wikipedia.org/wiki/ROT13\"\u003eROT13 cipher\u003c/a\u003e (discussed in \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/78-implement-a-rot13-cipher\"\u003eCody Challenge Problem 78\u003c/a\u003e).  As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation, numbers, accented letters) are unchanged.  Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and will vary \u003ci\u003ebetween\u003c/i\u003e (not within) batches — also, here you need to decode, not encode.\u003c/p\u003e\u003cp\u003eThese latest activities that you are investigating have been nicknamed 'Operation Xiangliu' by your own organisation.  A few decoding options are at your organisation's disposal:\u003c/p\u003e\u003col\u003e\u003cli\u003eTest the candidate decodings against all words in a large dictionary — this could work, but it is very slow.\u003c/li\u003e\u003cli\u003eTest the candidate decodings for the appearance of a name or phrase that is certain to appear regularly (e.g. \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44351\"\u003e\"Operation Phoenix\"\u003c/a\u003e) — unfortunately as yet there is not enough knowledge of the activities to be sure of a suitable name or phrase to use.\u003c/li\u003e\u003cli\u003eTest the candidate decodings against all words in a short list comprising, say, the hundred most frequently used English words.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eThe \u003cb\u003ethird option\u003c/b\u003e will be faster than the first option, and more reliable than the second option, so this is the approach you will be taking.\u003c/p\u003e\u003cp\u003eYou have been careful to avoid using 'lemmatised' lists (which contain e.g. the verb \"to be\", rather than the various inflected forms such as \"am\", \"is\", \"are\") like those based on the \u003ca href = \"https://web.archive.org/web/20111226085859/http://oxforddictionaries.com/words/the-oec-facts-about-the-language\"\u003eOEC\u003c/a\u003e or \u003ca href = \"https://www.wordfrequency.info/free.asp?s=y\"\u003eCOCA\u003c/a\u003e, and after setting aside \u003ca href = \"http://world-english.org/english500.htm\"\u003eanother list\u003c/a\u003e you finally choose the \u003ca href = \"http://ucrel.lancs.ac.uk/bncfreq/samples/120.pdf\"\u003elist based on the BNC\u003c/a\u003e as the most reliable, and will use the first 100 words on that list.  \r\nThis list will be available for you to access as an input variable, \u003ctt\u003ebncWordlist\u003c/tt\u003e, to your function. Note: (i) some entries on the list are morphemes (e.g. \"\u0026#x200A;n't\u0026#x200A;\" and \"\u0026#x200A;'s\u0026#x200A;\") rather than words;  (ii) some entries appear more than once (representing different grammatical word classes).  Of course, in the original messages any capitalisation might be used.\u003c/p\u003e\u003cp\u003eYou have been instructed that your 'certitude' (degree of confidence) in the decoding must be reported for each batch, and shall depend proportionally upon the sum of the characters for the words/morphemes in the decoded message that match words/morphemes in \u003ctt\u003ebncWordlist\u003c/tt\u003e.  Being able to match words/morphemes accounting for three-tenths of the characters (excluding spaces) shall correspond to 100% certitude;  matching three-twentieths would be 50% certitude, and so on.  Certitude shall be reported as a percentage, rounded \u003ci\u003eup\u003c/i\u003e to the nearest integer, not greater than 100.  You need to maximise your certitude for each batch by appropriate choice of the shifting parameter.   If there are multiple shifts of equal certitude, report both options on different rows (arranged in order of ascending shift parameter).\u003c/p\u003e\u003cp\u003eYour task is to crack the codes and report back in a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/struct.html\"\u003estructure array\u003c/a\u003e: \u0026nbsp; (1) the shifting parameter that had been used in the encoding [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/uint8.html\"\u003euint8\u003c/a\u003e] (usually scalar, but may be column vector); \u0026nbsp; (2) the decoded messages [as a \u003ca href = \"http://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta\"\u003ecell array\u003c/a\u003e (containing \u003ca href = \"http://au.mathworks.com/help/matlab/ref/char.html\"\u003echaracter arrays\u003c/a\u003e)] (usually an array with a single row, but occasionally with multiple rows); \u0026nbsp; (3) your 'certitude' in the decoding [as \u003ca href = \"http://au.mathworks.com/help/matlab/ref/uint8.html\"\u003euint8\u003c/a\u003e] (always scalar).  \r\nThe name of the structure array shall be \u003ctt\u003es\u003c/tt\u003e, with respective fields \u003ctt\u003eshift\u003c/tt\u003e, \u003ctt\u003emessage\u003c/tt\u003e, and \u003ctt\u003ecertitude\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003e\u003cb\u003eEXAMPLE 1\u003c/b\u003e\u003c/p\u003e\u003cp\u003eSuppose the batch contained two encoded messages — \u003ci\u003e\"Vomftt qvstvfe, pqfo op eppst.\"\u003c/i\u003e and \u003ci\u003e\"Ffmt dbo ljmm, opu pomz xpvoe.\"\u003c/i\u003e (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied.  In that case A→B, B→C, ..., Y→Z, and Z→A;  similarly, a→b, b→c, ..., y→z, and z→a.  \r\nThus the original messages would have been:  \u003ci\u003e\"Unless pursued, open no doors.\"\u003c/i\u003e and \u003ci\u003e\"Eels can kill, not only wound.\"\u003c/i\u003e .  Twelve of the 51 characters have been matched:  \"no\", \"can\", \"not\", and \"only\".\u003c/p\u003e\u003cp\u003eThe correct answer would therefore comprise:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003es.shift = uint8(1)  \r\ns.message = {'Unless pursued, open no doors.', 'Eels can kill, not only wound.'}\r\ns.certitude = uint8(79)\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eEXAMPLE 2\u003c/b\u003e\u003c/p\u003e\u003cp\u003eSuppose the batch contained one encoded message — \u003ci\u003e\"Oa oqvvq'u cnycau dggp: \"Ctu itcvkc ctvku\".\"\u003c/i\u003e (provided as a character array within a cell array) — and a (right-shifting) ROT2 cipher had been applied.  In that case A→C, B→D, ..., Y→A, and Z→B;  similarly, a→c, b→d, ..., y→a, and z→b.  \r\nThus the original message would have been:  \u003ci\u003e\"My motto's always been: \"Ars gratia artis\".\"\u003c/i\u003e .  Eight of the 37 characters have been matched: \"My\", \"\u0026#x200A;'s\u0026#x200A;\", and \"been\".  Note carefully that:  \"\u0026#x200A;'s\u0026#x200A;\" should only be matched once;  \"to\" (in motto), \"be\" (in been), \"at\" (in gratia), \"is\" (in artis) and \"a\" (passim) should \u003ci\u003enot\u003c/i\u003e be matched at all;  and \"\u0026#x200A;'\u0026#x200A;\" will only ever be used as an apostrophe (never as a quotation mark).\u003c/p\u003e\u003cp\u003eThe correct answer would therefore comprise:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003es.shift = uint8(2)  \r\ns.message = {'My motto''s always been: \"Ars gratia artis\".'}\r\ns.certitude = uint8(73)\r\n\u003c/pre\u003e\u003cp\u003eIf the batch of messages cannot be decoded when following the above assumptions, then return the original encoded message(s) unchanged, with a shift of zero and a certitude of zero.\u003c/p\u003e\u003cp\u003e\u003ctt\u003eNote:  Many Cody solutions are hard to read and not necessarily computationally efficient.  To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable).  Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)\u003c/tt\u003e\u003c/p\u003e\u003cp\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \"too slow\".\u003c/p\u003e\u003cp\u003e----------\u003c/p\u003e\u003cp\u003ePrevious problem:  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44356\"\u003eOperation Orthos\u003c/a\u003e.  Next problem:  TBA.\u003c/p\u003e","function_template":"% Comments are nice, aren't they....\r\nfunction s = decode(x, bncWordlist)\r\nend","test_suite":"%% NOTE:  \r\n% This test suite can be updated if inappropriate 'hacks' \r\n% are discovered in any submitted solutions.\r\n% The assessment of your submission may therefore change over time.  \r\n\r\nglobal bncWordlist\r\nbncWordlist = {'the', 'of', 'and', 'a', 'in', 'to', 'it', 'is', 'to', 'was', ...\r\n    'I', 'for', 'that', 'you', 'he', 'be', 'with', 'on', 'by', 'at', ...\r\n    'have', 'are', 'not', 'this', '''s', 'but', 'had', 'they', 'his', ...\r\n    'from', 'she', 'that', 'which', 'or', 'we', '''s', 'an', 'n''t', 'were', ...\r\n    'as', 'do', 'been', 'their', 'has', 'would', 'there', 'what', 'will', 'all', ...\r\n    'if', 'can', 'her', 'said', 'who', 'one', 'so', 'up', 'as', 'them', 'some', ...\r\n    'when', 'could', 'him', 'into', 'its', 'then', 'two', 'out', 'time', ...\r\n    'my', 'about', 'did', 'your', 'now', 'me', 'no', 'other', 'only', 'just', ...\r\n    'more', 'these', 'also', 'people', 'know', 'any', 'first', 'see', 'very', 'new', ...\r\n    'may', 'well', 'should', 'her', 'like', 'than', 'how', 'get', 'way', 'one', 'our'};\r\n\r\n\r\n%% Anti-hacking\r\n% EDIT (2019-07-02). Anti-hacking provision\r\n% Ensure only builtin functions will be called.\r\n! rm -v fileread.m\r\n! rm -v assert.m\r\n% END EDIT (2019-07-02)\r\n% EDIT (2018-06-18).  Anti-hacking provision\r\nRE = regexp(fileread('decode.m'), '\\w+', 'match');\r\ntabooWords = {'ans', 'assert', 'freepass', 'tic'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any(  cellfun( @(z) ismember(z, tabooWords), RE )  ), msg)\r\n\r\nfor j = 1 : randi(10)\r\n    decode({'Pizza for dinner.'}, {'mozzarella', 'mushrooms'});\r\nend;\r\n% END EDIT (2018-06-18)\r\n\r\n\r\n%% Test 1\r\nglobal bncWordlist\r\nx =                 {'Vomftt qvstvfe, pqfo op eppst.', 'Ffmt dbo ljmm, opu pomz xpvoe.'};\r\ns_correct.shift = uint8(1);\r\ns_correct.message = {'Unless pursued, open no doors.', 'Eels can kill, not only wound.'};\r\ns_correct.certitude = uint8(79);\r\ns = decode(x, bncWordlist);\r\n%disp(' *** ');  disp(s.message);  disp(' *** ')\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.' )\r\nassert( isequal(s.message{1}, s_correct.message{1}), 'Wrong message{1}.' )\r\nassert( isequal(s.message{2}, s_correct.message{2}), 'Wrong message{2}.' )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.' )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.' )\r\nassert( isequal(s, s_correct), 'Wrong s.' )\r\nassert( isequal(class(s.shift), 'uint8'), 'Wrong class.' )\r\nassert( isequal(class(s.message), 'cell'), 'Wrong class.'  )\r\nassert( isequal(class(s.message{1}), 'char'), 'Wrong class.'  )\r\nassert( isequal(class(s.certitude), 'uint8'), 'Wrong class.'  )\r\n\r\n\r\n%% Test 2\r\nglobal bncWordlist\r\nx =                 {'Doo zduiduh lv edvhg rq ghfhswlrq.', ...\r\n    'Khqfh, zkhq deoh wr dwwdfn, zh pxvw vhhp xqdeoh;  zkhq xvlqj rxu irufhv, zh pxvw vhhp lqdfwlyh;  zkhq zh duh qhdu, zh pxvw pdnh wkh hqhpb eholhyh zh duh idu dzdb; zkhq idu dzdb, zh pxvw pdnh klp eholhyh zh duh qhdu.'};\r\ns_correct.shift = uint8(3);\r\ns_correct.message = {'All warfare is based on deception.', ...\r\n    'Hence, when able to attack, we must seem unable;  when using our forces, we must seem inactive;  when we are near, we must make the enemy believe we are far away; when far away, we must make him believe we are near.'};\r\ns_correct.certitude = uint8(95);\r\ns = decode(x, bncWordlist);\r\n%disp(' *** ');  disp(s.message);  disp(' *** ')\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 3\r\nglobal bncWordlist\r\nx =                 {'Elia lrq yxfqp ql bkqfzb qeb bkbjv.  Cbfdk afploabo, xka zorpe efj.', ...\r\n    'Fc eb fp pbzrob xq xii mlfkqp, yb mobmxoba clo efj.  Fc eb fp fk prmboflo pqobkdqe, bsxab efj.'};\r\ns_correct.shift = uint8(23);\r\ns_correct.message = {'Hold out baits to entice the enemy.  Feign disorder, and crush him.', ...\r\n    'If he is secure at all points, be prepared for him.  If he is in superior strength, evade him.'};\r\ns_correct.certitude = uint8(100);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 4\r\nglobal bncWordlist\r\nx =                 {'Ax qgmj ghhgfwfl ak gx uzgdwjau lwehwj, kwwc lg ajjalslw zae.  Hjwlwfv lg tw owsc, lzsl zw esq yjgo sjjgysfl.', ...\r\n    'Ax zw ak lscafy zak wskw, yanw zae fg jwkl.', ...\r\n    'Ax zak xgjuwk sjw mfalwv, kwhsjslw lzwe.', ...\r\n    'Sllsuc zae ozwjw zw ak mfhjwhsjwv, shhwsj ozwjw qgm sjw fgl wphwulwv.'};\r\ns_correct.shift = uint8(18);\r\ns_correct.message = {'If your opponent is of choleric temper, seek to irritate him.  Pretend to be weak, that he may grow arrogant.', ...\r\n    'If he is taking his ease, give him no rest.', ...\r\n    'If his forces are united, separate them.', ...\r\n    'Attack him where he is unprepared, appear where you are not expected.'};\r\ns_correct.certitude = uint8(100);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 5\r\nglobal bncWordlist\r\nx =                 {'Aes cèwo vo foxd bémyvdo vo dowzy', ...\r\n    'Yx wo dbksdo no dbkîdbo aekxn to dbksdo no vk népksdo ne csvoxmo / Vo csvoxmo ocd n''yb, wksc t''ks mryscs vk mknoxmo', ... \r\n    'Mrkaeo wyd, mrkaeo zrbkco nsdc kfom owzrkco / Pksd no Mvkeno WM, vo mywwkxny no vk zrbkco', ...\r\n    'Mkb t''cesc ex WM n''kddkaeo, ckxc dsmc, kedroxdsaeo zkc ox dym / Zbêd à pbkzzob ceb vo lokd zyeb vo wyefowoxd rsz-ryz', ...\r\n    'Ne bkz n''kddkaeo aes pbkzzo, ézkdo, wkdbkaeo od zkdkdbkaeo / Zvec no ckxq de mvkaeoc, t''cesc WM noc Mkbzkdoc', ...\r\n    'Vo zénkqyqeo ox fyqeo ke xyw no myno Cyvkkb ye Mvkeno WM / Do zbyzyco n''émyedob moms / Ae''yx ézovvo voc fyiovvoc, nèc ae''yx cyxxo voc myxcyxxoc'};\r\ns_correct.shift = uint8([0 21]');\r\n% TIP:  The original message was not English!\r\ns_correct.message(1, :) = {'Aes cèwo vo foxd bémyvdo vo dowzy', ... \r\n    'Yx wo dbksdo no dbkîdbo aekxn to dbksdo no vk népksdo ne csvoxmo / Vo csvoxmo ocd n''yb, wksc t''ks mryscs vk mknoxmo', ... \r\n    'Mrkaeo wyd, mrkaeo zrbkco nsdc kfom owzrkco / Pksd no Mvkeno WM, vo mywwkxny no vk zrbkco', ... \r\n    'Mkb t''cesc ex WM n''kddkaeo, ckxc dsmc, kedroxdsaeo zkc ox dym / Zbêd à pbkzzob ceb vo lokd zyeb vo wyefowoxd rsz-ryz', ... \r\n    'Ne bkz n''kddkaeo aes pbkzzo, ézkdo, wkdbkaeo od zkdkdbkaeo / Zvec no ckxq de mvkaeoc, t''cesc WM noc Mkbzkdoc', ... \r\n    'Vo zénkqyqeo ox fyqeo ke xyw no myno Cyvkkb ye Mvkeno WM / Do zbyzyco n''émyedob moms / Ae''yx ézovvo voc fyiovvoc, nèc ae''yx cyxxo voc myxcyxxoc'}\r\ns_correct.message(2, :) = {'Fjx hèbt at ktci gérdait at itbed', ... \r\n    'Dc bt igpxit st igpîigt fjpcs yt igpxit st ap séupxit sj hxatcrt / At hxatcrt thi s''dg, bpxh y''px rwdxhx ap rpstcrt', ... \r\n    'Rwpfjt bdi, rwpfjt ewgpht sxih pktr tbewpht / Upxi st Rapjst BR, at rdbbpcsd st ap ewgpht', ... \r\n    'Rpg y''hjxh jc BR s''piipfjt, hpch ixrh, pjiwtcixfjt eph tc idr / Egêi à ugpeetg hjg at qtpi edjg at bdjktbtci wxe-wde', ... \r\n    'Sj gpe s''piipfjt fjx ugpeet, éepit, bpigpfjt ti epipigpfjt / Eajh st hpcv ij rapfjth, y''hjxh BR sth Rpgepith', ... \r\n    'At eéspvdvjt tc kdvjt pj cdb st rdst Hdappg dj Rapjst BR / It egdedht s''érdjitg rtrx / Fj''dc éetaat ath kdntaath, sèh fj''dc hdcct ath rdchdccth'}\r\ns_correct.certitude = uint8(11);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 6\r\nglobal bncWordlist\r\nx =                 {'Brvdujcnm mrbxamna yxbcdujcnb ynaonlc mrblryurwn;  brvdujcnm onja yxbcdujcnb lxdajpn;  brvdujcnm fnjtwnbb yxbcdujcnb bcanwpcq.' ...\r\n    'X mrerwn jac xo bdkcunch jwm bnlanlh!'};\r\ns_correct.shift = uint8(9);\r\ns_correct.message = {'Simulated disorder postulates perfect discipline;  simulated fear postulates courage;  simulated weakness postulates strength.' ...\r\n    'O divine art of subtlety and secrecy!'};\r\ns_correct.certitude = uint8(12);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 7\r\nglobal bncWordlist\r\nx =                 {'Nv treefk vekvi zekf rcczretv nzky evzxysfizex gizetvj lekzc nv riv rthlrzekvu nzky kyvzi uvjzxej.', ... \r\n    'Nv riv efk wzk kf cvru re ridp fe kyv drity lecvjj nv riv wrdzczri nzky kyv wrtv fw kyv tflekip — zkj dflekrzej reu wfivjkj, zkj gzkwrccj reu givtzgztvj, zkj drijyvj reu jnrdgj.', ... \r\n    'Nv jyrcc sv lerscv kf klie erklirc rumrekrxvj kf rttflek lecvjj nv drbv ljv fw cftrc xlzuvj.'};\r\ns_correct.shift = uint8(17);\r\ns_correct.message = {'We cannot enter into alliance with neighboring princes until we are acquainted with their designs.', ...  \r\n    'We are not fit to lead an army on the march unless we are familiar with the face of the country — its mountains and forests, its pitfalls and precipices, its marshes and swamps.', ...  \r\n    'We shall be unable to turn natural advantages to account unless we make use of local guides.'};\r\ns_correct.certitude = uint8(97);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 8\r\nglobal bncWordlist\r\nx =                 {'Oa oqvvq''u cnycau dggp: \"Ctu itcvkc ctvku\".'};\r\ns_correct.shift = uint8(2);\r\ns_correct.message = {'My motto''s always been: \"Ars gratia artis\".'};\r\ns_correct.certitude = uint8(73);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% Test 9\r\nglobal bncWordlist\r\nx =                 {'Bestow rewards without regard 2 rule;  issue orders without regard 2 previous arrangements', ...\r\n    '\"Let advance bee richly rewarded \u0026 retreat bee heavily punished.\"', ...\r\n    ' Qwertyuiop''asdfghjkl.   Zxcvbnm-0123456789 = pass. ', ...\r\n    'αβγδ — persimon–apricot hybrid.', ...\r\n    'aIanasatbebydoheifinisitmemynoofonor''ssotoupweallandanyarebutcandidforgethadhasherhimhishowitsmaynewnotnown''toneouroutseeshethetwowaswaywhoyoualsobeenfromhaveintojustknowlikemoreonlysaidsomethanthatthemthentheythistimeverywellwerewhatwhenwillwithyouraboutcouldfirstothertheirtherethesewhichwouldpeopleshould'};\r\ns_correct.shift = uint8(0);\r\ns_correct.message = x;\r\ns_correct.certitude = uint8(0);\r\ns = decode(x, bncWordlist);\r\nassert( isequal(s.shift, s_correct.shift), 'Wrong shift.'  )\r\nassert( isequal(s.message, s_correct.message), 'Wrong message.'  )\r\nassert( isequal(s.certitude, s_correct.certitude), 'Wrong certitude.'  )\r\n\r\n\r\n%% TIMING \r\n% Note:  The Time Trial section does not check accuracy; that is done above.\r\n\r\n% Acknowledgements  \r\n% Portions of this timing test code were inspired by:\r\n% (1) Problem 937. \"Rubik's Mini Cube: Solve Randomized Cube in 11 Moves or Less; Score is by Time (msec)\" by Richard Zapor.\r\n% (2) Problem 2733. \"Evil Number\" by Jan Orwat.\r\n% (3) Feedback in comments from Peng Liu.\r\n% (4) Problem Problem 1237. \"It's race time! Write a faster function than the test suite call of unique().\" by Jeremy.\r\n\r\n% INITIALISE\r\nglobal bncWordlist\r\nx =                 {'Vomftt qvstvfe, pqfo op eppst.', 'Ffmt dbo ljmm, opu pomz xpvoe.'};\r\nqSmall = 50;\r\nqBig = 1000;\r\n%cutoffTimeBig = 10;    % Maximum allowable walltime (in seconds) to run function in a loop with qBig iterations.\r\n\r\n% EDIT (2018-06-17).  Reduced time [slightly] to pose reasonable challenge.\r\n% Accounted for improving Cody server speed per Problem 44655.\r\ncutoffTimeBig = 8;    % Maximum allowable walltime (in seconds) to run function in a loop with qBig iterations.\r\ntRef = datetime('2018-06-17', 'InputFormat','yyyy-MM-dd');\r\ntNow = datetime('now');\r\nyearsElapsed = (datenum(tNow) - datenum(tRef)) / 365.24;\r\ndisp(' . ');\r\nfprintf('\\r\\n\\r\\n\\r\\nSubmission evaluated for speed on %s.\\r\\n', datestr(tNow, 'dd mmmm yyyy'))\r\nrInf = 0.2;   delta = cutoffTimeBig - rInf;  tau = 3.6;  % Data from Problem 44655, based on Problem 963.\r\nqBig = ceil( qBig * (cutoffTimeBig - rInf) * exp(yearsElapsed/tau) / delta );\r\nfprintf('\\r\\n\\r\\n\\r\\nTo account for computational power increases over time, number of iterations increased to %u.\\r\\n', qBig)\r\n% END EDIT (2018-06-17)\r\n\r\n\r\n% *** PRELIMINARY TIMING WITH timeit ***\r\nfDecode = @()   decode(x, bncWordlist);\r\ndt_timeit = timeit( fDecode );\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\nfprintf('APPROXIMATE time to decode %u message batches ~ %2.2f seconds, according to ''timeit''.\\n\\r', qBig, dt_timeit * qBig)\r\n\r\n% *** PRELIMINARY TIMING WITH SHORT LOOP ***\r\n% In case the submitted function has a lot of text output, \r\n% get an estimate based on just a few iterations\r\n% Initialise\r\nt0 = clock;\r\n\r\n% Loop\r\nfor i = 1 : qSmall\r\n    solution = decode(x, bncWordlist);\r\nend;\r\n\r\n% Compute and display elapsed time.\r\ndt = etime(clock, t0);\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\n%fprintf('Your wall time to decode %u message batches = %i seconds.\\n\\r', qSmall, floor(dt))\r\nfprintf('APPROXIMATE wall time to decode %u message batches ~ %2.2f seconds, by extrapolating from %u batches.\\n\\r', qBig, dt * qBig / qSmall, qSmall)\r\n\r\n% *** 'OFFICIAL' TIMING ***\r\n% Re-initialise timer\r\nt0 = clock;\r\nt0_cpu = cputime;\r\n\r\n% Loop\r\nfor i = 1 : qBig\r\n    % EDIT (2018-06-17).   Ensure each case is unique.\r\n    characters = ['  ,   .' char(randi([97,122], [1,23]))];\r\n    x{2} = characters( randperm(30) );\r\n    % END EDIT (2018-06-17)\r\n    solution = decode(x, bncWordlist);\r\nend;\r\n\r\n% Compute and display elapsed time.\r\ndt = etime(clock, t0);\r\nfor dummy = 1 : 10,  disp(' . ');  end;\r\nfprintf('Your wall time to decode %u message batches = %2.2f seconds.\\n\\r', qBig, dt)\r\n\r\ndt_cpu = (cputime - t0_cpu);\r\nfprintf(' ( Your CPU time for this = %2.2f seconds. ) \\n\\r', dt_cpu)\r\n\r\n% Display (default) Cody size-based score.\r\nall_nodes = mtree('decode.m', '-file');\r\nsize_score = count(all_nodes);\r\nfprintf('Your Cody-standard size-based score = %i.\\n\\r', size_score)\r\n\r\n% Report revised performance score\r\ncombinedScore = size_score + round(dt * 10);\r\nfprintf('Your combined score = %i.\\n\\r', combinedScore)\r\ndisp('     -----=====|||||=====-----     ')\r\n\r\n% Now disallow any candidate solutions that are TOO SLOW!\r\nif dt \u003e cutoffTimeBig, \r\n    fprintf('Sorry, your submission is TOO SLOW.  It must be able to finish within %u seconds.\\n\\r', cutoffTimeBig)\r\nend;\r\n\r\nassert( dt \u003c= cutoffTimeBig, 'Exceeded time limit specified in Test Suite.' )","published":true,"deleted":false,"likes_count":2,"comments_count":16,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":13,"test_suite_updated_at":"2019-07-02T13:23:18.000Z","rescore_all_solutions":true,"group_id":1,"created_at":"2017-10-12T23:17:24.000Z","updated_at":"2026-04-02T20:05:58.000Z","published_at":"2017-10-15T06:52:40.000Z","restored_at":"2017-10-25T07:03:11.000Z","restored_by":null,"spam":false,"simulink":false,"admin_reviewed":true,"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\u003eYou have been tasked with decoding several batches of coded messages that have been intercepted.\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\u003eBased on previous intelligence that has been gathered, you can be confident that the messages were all encoded using a simple\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/Caesar_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCaesar cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (a type of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://en.wikipedia.org/wiki/Substitution_cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003esubstitution cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e), an example of which is 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/ROT13\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eROT13 cipher\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (discussed in\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/78-implement-a-rot13-cipher\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCody Challenge Problem 78\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e). As in the Cody Challenge Problem, uppercase and lowercase letters are handled independently of one another, and all other characters (e.g. punctuation, numbers, accented letters) are unchanged. Unlike the Cody Challenge Problem, here the number of letters to shift is not known in advance, and will vary\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ebetween\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (not within) batches — also, here you need to decode, not encode.\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\u003eThese latest activities that you are investigating have been nicknamed 'Operation Xiangliu' by your own organisation. A few decoding options are at your organisation's disposal:\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\u003eTest the candidate decodings against all words in a large dictionary — this could work, but it is very slow.\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\u003eTest the candidate decodings for the appearance of a name or phrase that is certain to appear regularly (e.g.\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/44351\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\\\"Operation Phoenix\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e) — unfortunately as yet there is not enough knowledge of the activities to be sure of a suitable name or phrase to use.\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\u003eTest the candidate decodings against all words in a short list comprising, say, the hundred most frequently used English words.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ethird option\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e will be faster than the first option, and more reliable than the second option, so this is the approach you will be taking.\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\u003eYou have been careful to avoid using 'lemmatised' lists (which contain e.g. the verb \\\"to be\\\", rather than the various inflected forms such as \\\"am\\\", \\\"is\\\", \\\"are\\\") like those based on 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://web.archive.org/web/20111226085859/http://oxforddictionaries.com/words/the-oec-facts-about-the-language\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOEC\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e or\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.wordfrequency.info/free.asp?s=y\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eCOCA\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, and after setting aside\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://world-english.org/english500.htm\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eanother list\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e you finally choose the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://ucrel.lancs.ac.uk/bncfreq/samples/120.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003elist based on the BNC\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e as the most reliable, and will use the first 100 words on that list. This list will be available for you to access as an input variable,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ebncWordlist\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, to your function. Note: (i) some entries on the list are morphemes (e.g. \\\" n't \\\" and \\\" 's \\\") rather than words; (ii) some entries appear more than once (representing different grammatical word classes). Of course, in the original messages any capitalisation might be used.\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\u003eYou have been instructed that your 'certitude' (degree of confidence) in the decoding must be reported for each batch, and shall depend proportionally upon the sum of the characters for the words/morphemes in the decoded message that match words/morphemes in\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ebncWordlist\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. Being able to match words/morphemes accounting for three-tenths of the characters (excluding spaces) shall correspond to 100% certitude; matching three-twentieths would be 50% certitude, and so on. Certitude shall be reported as a percentage, rounded\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eup\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e to the nearest integer, not greater than 100. You need to maximise your certitude for each batch by appropriate choice of the shifting parameter. If there are multiple shifts of equal certitude, report both options on different rows (arranged in order of ascending shift parameter).\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task is to crack the codes and report back in a\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://au.mathworks.com/help/matlab/ref/struct.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003estructure array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e: (1) the shifting parameter that had been used in the encoding [as\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://au.mathworks.com/help/matlab/ref/uint8.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003euint8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e] (usually scalar, but may be column vector); (2) the decoded messages [as a\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://au.mathworks.com/help/matlab/ref/cell.html?s_tid=doc_ta\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecell array\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (containing\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://au.mathworks.com/help/matlab/ref/char.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003echaracter arrays\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e)] (usually an array with a single row, but occasionally with multiple rows); (3) your 'certitude' in the decoding [as\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://au.mathworks.com/help/matlab/ref/uint8.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003euint8\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e] (always scalar). The name of the structure array shall be\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, with respective fields\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eshift\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003emessage\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ecertitude\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eEXAMPLE 1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose the batch contained two encoded messages —\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Vomftt qvstvfe, pqfo op eppst.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Ffmt dbo ljmm, opu pomz xpvoe.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (provided as character arrays within a cell array) — and a (right-shifting) ROT1 cipher had been applied. In that case A→B, B→C, ..., Y→Z, and Z→A; similarly, a→b, b→c, ..., y→z, and z→a. Thus the original messages would have been: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Unless pursued, open no doors.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Eels can kill, not only wound.\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e . Twelve of the 51 characters have been matched: \\\"no\\\", \\\"can\\\", \\\"not\\\", and \\\"only\\\".\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 correct answer would therefore comprise:\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[s.shift = uint8(1)  \\ns.message = {'Unless pursued, open no doors.', 'Eels can kill, not only wound.'}\\ns.certitude = uint8(79)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eEXAMPLE 2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose the batch contained one encoded message —\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Oa oqvvq'u cnycau dggp: \\\"Ctu itcvkc ctvku\\\".\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (provided as a character array within a cell array) — and a (right-shifting) ROT2 cipher had been applied. In that case A→C, B→D, ..., Y→A, and Z→B; similarly, a→c, b→d, ..., y→a, and z→b. Thus the original message would have been: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"My motto's always been: \\\"Ars gratia artis\\\".\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e . Eight of the 37 characters have been matched: \\\"My\\\", \\\" 's \\\", and \\\"been\\\". Note carefully that: \\\" 's \\\" should only be matched once; \\\"to\\\" (in motto), \\\"be\\\" (in been), \\\"at\\\" (in gratia), \\\"is\\\" (in artis) and \\\"a\\\" (passim) should\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enot\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e be matched at all; and \\\" ' \\\" will only ever be used as an apostrophe (never as a quotation mark).\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 correct answer would therefore comprise:\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[s.shift = uint8(2)  \\ns.message = {'My motto''s always been: \\\"Ars gratia artis\\\".'}\\ns.certitude = uint8(73)]]\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\u003eIf the batch of messages cannot be decoded when following the above assumptions, then return the original encoded message(s) unchanged, with a shift of zero and a certitude of zero.\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNote: Many Cody solutions are hard to read and not necessarily computationally efficient. To direct attention toward efficient runtime speed of execution, timings are measured in the Test Suite, and reported back (if the submission is runnable). Although the timings are not perfectly reproducible, they do provide an indication of computational resource demand. (Try resubmitting on another day if your code runs slowly, in case it is caused by a server issue.)\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\u003eTo provide some extra motivation for you to get your code to run efficiently, it will fail the Test Suite if it is deemed \\\"too slow\\\".\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----------\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\u003ePrevious problem: \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/44356\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eOperation Orthos\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Next problem: TBA.\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:\"cipher\"","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:\"cipher\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"cipher\"","","\"","cipher","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f534910de90\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f534910ddf0\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f534910d530\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f534910e110\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f534910e070\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f534910dfd0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f534910df30\u003e":"tag:\"cipher\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f534910df30\u003e":"tag:\"cipher\""},"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:\"cipher\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"cipher\"","","\"","cipher","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f534910de90\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f534910ddf0\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f534910d530\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f534910e110\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f534910e070\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f534910dfd0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f534910df30\u003e":"tag:\"cipher\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f534910df30\u003e":"tag:\"cipher\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":47603,"difficulty_rating":"easy-medium"},{"id":751,"difficulty_rating":"easy-medium"},{"id":56185,"difficulty_rating":"easy-medium"},{"id":47813,"difficulty_rating":"easy-medium"},{"id":42525,"difficulty_rating":"easy-medium"},{"id":1080,"difficulty_rating":"easy-medium"},{"id":565,"difficulty_rating":"medium"},{"id":48175,"difficulty_rating":"medium"},{"id":44351,"difficulty_rating":"medium"},{"id":49347,"difficulty_rating":"medium"},{"id":44356,"difficulty_rating":"medium"},{"id":78,"difficulty_rating":"medium"},{"id":48920,"difficulty_rating":"medium-hard"},{"id":47970,"difficulty_rating":"medium-hard"},{"id":44383,"difficulty_rating":"hard"}]}}