{"group":{"group":{"id":24,"name":"Matrix Manipulation III","lockable":false,"created_at":"2017-04-19T16:45:52.000Z","updated_at":"2026-04-06T14:01:22.000Z","description":"Move the contents around to be in the right bins.","is_default":false,"created_by":26769,"badge_id":38,"featured":false,"trending":false,"solution_count_in_trending_period":52,"trending_last_calculated":"2026-04-06T00:00:00.000Z","image_id":403,"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":"{\"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\u003eMove the contents around to be in the right bins.\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\"}]}","description_html":"\u003cdiv style = \"text-align: start; line-height: normal; 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=\"display: block; min-width: 0px; padding-top: 0px; perspective-origin: 289.5px 10.5px; transform-origin: 289.5px 10.5px; \"\u003e\u003cdiv style=\"font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-bottom: 9px; margin-left: 4px; margin-right: 10px; margin-top: 2px; text-align: left; white-space: pre-wrap; perspective-origin: 266.5px 10.5px; transform-origin: 266.5px 10.5px; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"display: inline; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eMove the contents around to be in the right bins.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","published_at":"2019-05-08T19:56:19.000Z"},"current_player":null},"problems":[{"id":2700,"title":"Simulate one complete step in the Biham–Middleton–Levine traffic model","description":"The \u003chttp://en.wikipedia.org/wiki/Biham%E2%80%93Middleton%E2%80%93Levine_traffic_model Biham–Middleton–Levine traffic model\u003e is a simple cellular automata model loosely mimicking traffic flow. In an m-by-n domain, we see white empty space (or 0 in our matrix representation), red cars (1 in the matrix), and blue cars (2 in the matrix).\r\n\r\nAssume the space is toroidal. That is to say, the right side connects with the left, and the top connects to the bottom. So a red car that moves off the far right of the matrix re-appears on the far left.\r\n\r\nHere is a 4-by-4 version with three red cars and two blue cars.\r\n\r\n     0     0     0     2\r\n     1     1     0     0\r\n     0     0     2     0\r\n     0     0     0     1\r\n\r\nRed cars always move to the right if they are unblocked. A red car can move either into an empty space or a space being vacated by a moving red car.\r\n\r\nAfter we move the red cars (1s) we will have this matrix.\r\n\r\n     0     0     0     2\r\n     0     1     1     0\r\n     0     0     2     0\r\n     1     0     0     0\r\n\r\nWe're only halfway through the process. After we move the blue cars (2s) we end up here.\r\n\r\n     0     0     0     0\r\n     0     1     1     2\r\n     0     0     0     0\r\n     1     0     2     0\r\n\r\nThis last value of the matrix would be the return value of your function. Assume that red cars always move before blue cars.\r\n\r\nFor some visualizations of Biham–Middleton–Levine traffic, see this very nice \u003chttp://www.jasondavies.com/bml/#0.61/769/512 simulation site\u003e.","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: 859px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 332px 429.5px; transform-origin: 332px 429.5px; vertical-align: baseline; \"\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: 309px 31.5px; text-align: left; transform-origin: 309px 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eThe\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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Biham%E2%80%93Middleton%E2%80%93Levine_traffic_model\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eBiham–Middleton–Levine traffic model\u003c/span\u003e\u003c/span\u003e\u003c/a\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 is a simple cellular automata model loosely mimicking traffic flow. In an m-by-n domain, we see white empty space (or 0 in our matrix representation), red cars (1 in the matrix), and blue cars (2 in the matrix).\u003c/span\u003e\u003c/span\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: 309px 31.5px; text-align: left; transform-origin: 309px 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eAssume the space is toroidal. That is to say, the right side connects with the left, and the top connects to the bottom. So a red car that moves off the far right of the matrix re-appears on the far left.\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: 309px 10.5px; text-align: left; transform-origin: 309px 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 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eHere is a 4-by-4 version with three red cars and two blue cars.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 80px; border-bottom-left-radius: 4px; border-bottom-right-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: 329px 40px; transform-origin: 329px 40px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     1     1     0     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     2     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; 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: 309px 21px; text-align: left; transform-origin: 309px 21px; 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eRed cars always move to the right if they are unblocked. A red car can move either into an empty space or a space being vacated by a moving red car.\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: 309px 10.5px; text-align: left; transform-origin: 309px 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 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eAfter we move the red cars (1s) we will have this matrix.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 80px; border-bottom-left-radius: 4px; border-bottom-right-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: 329px 40px; transform-origin: 329px 40px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     1     1     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     2     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     1     0     0     0\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: 309px 10.5px; text-align: left; transform-origin: 309px 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eWe're only halfway through the process. After we move the blue cars (2s) we end up here.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 80px; border-bottom-left-radius: 4px; border-bottom-right-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: 329px 40px; transform-origin: 329px 40px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     1     1     2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     1     0     2     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; 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: 309px 21px; text-align: left; transform-origin: 309px 21px; 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eThis last value of the matrix would be the return value of your function. Assume that red cars always move before blue cars.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 220px; 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: 309px 110px; text-align: left; transform-origin: 309px 110px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\"\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: 309px 10.5px; text-align: left; transform-origin: 309px 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 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eFor some visualizations of Biham–Middleton–Levine traffic, see this very nice \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://www.jasondavies.com/bml/#0.61/769/512\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003esimulation site\u003c/span\u003e\u003c/span\u003e\u003c/a\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\u003c/div\u003e\u003c/div\u003e","function_template":"function a_out = traffic_step(a_in)\r\n  a_out = a_in;\r\nend","test_suite":"%%\r\na_in = ...\r\n  [0 0 0 2\r\n   1 1 0 0\r\n   0 0 2 0\r\n   0 0 0 1];\r\na_out_correct = ...\r\n  [0 0 0 0\r\n   0 1 1 2\r\n   0 0 0 0\r\n   1 0 2 0];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in = ...\r\n  [0 0 2\r\n   2 0 0];\r\na_out_correct = ...\r\n  [2 0 0\r\n   0 0 2];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in = ...\r\n  [1 0 2\r\n   2 0 0];\r\na_out_correct = ...\r\n  [2 1 0\r\n   0 0 2];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in = ...\r\n  [0 0 2\r\n   1 1 1\r\n   2 0 0];\r\na_out_correct = ...\r\n  [2 0 2\r\n   1 1 1\r\n   0 0 0];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in = ...\r\n    [0     2     2     2     0     0\r\n     1     1     0     2     0     0\r\n     0     0     0     0     2     0\r\n     1     1     0     1     1     2\r\n     0     0     1     2     0     0\r\n     0     0     0     2     0     1];\r\na_out_correct = ...\r\n    [0     2     2     2     0     0\r\n     0     1     1     2     0     0\r\n     0     0     0     2     2     0\r\n     0     1     1     1     1     0\r\n     0     0     1     0     0     2\r\n     1     0     0     2     0     0];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in =  ...\r\n    [0 1 1 1\r\n     0 0 0 0];\r\na_out_correct = ...\r\n    [1 0 1 1\r\n     0 0 0 0];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in =  ...\r\n    [0\r\n     2\r\n     2];\r\na_out_correct = ...\r\n    [2\r\n     0\r\n     2];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n","published":true,"deleted":false,"likes_count":7,"comments_count":0,"created_by":7,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":36,"test_suite_updated_at":"2014-12-04T15:56:53.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2014-12-01T23:45:31.000Z","updated_at":"2026-03-29T06:52:52.000Z","published_at":"2014-12-02T19:28:14.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\u003eThe\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/Biham%E2%80%93Middleton%E2%80%93Levine_traffic_model\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eBiham–Middleton–Levine traffic model\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a simple cellular automata model loosely mimicking traffic flow. In an m-by-n domain, we see white empty space (or 0 in our matrix representation), red cars (1 in the matrix), and blue cars (2 in the matrix).\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\u003eAssume the space is toroidal. That is to say, the right side connects with the left, and the top connects to the bottom. So a red car that moves off the far right of the matrix re-appears on the far left.\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\u003eHere is a 4-by-4 version with three red cars and two blue cars.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[     0     0     0     2\\n     1     1     0     0\\n     0     0     2     0\\n     0     0     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\u003eRed cars always move to the right if they are unblocked. A red car can move either into an empty space or a space being vacated by a moving red car.\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\u003eAfter we move the red cars (1s) we will have this matrix.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[     0     0     0     2\\n     0     1     1     0\\n     0     0     2     0\\n     1     0     0     0]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWe're only halfway through the process. After we move the blue cars (2s) we end up here.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[     0     0     0     0\\n     0     1     1     2\\n     0     0     0     0\\n     1     0     2     0]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis last value of the matrix would be the return value of your function. Assume that red cars always move before blue cars.\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=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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\u003eFor some visualizations of Biham–Middleton–Levine traffic, see this very nice \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.jasondavies.com/bml/#0.61/769/512\\\"\u003e\u003cw:r\u003e\u003cw:t\u003esimulation site\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\",\"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,iVBORw0KGgoAAAANSUhEUgAAAdEAAADWCAYAAACOsbiXAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH5AkBDysfBIlBgQAAAAd0RVh0QXV0aG9yAKmuzEgAAAAMdEVYdERlc2NyaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRFWHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVYdFNvZnR3YXJlAF1w/zoAAAALdEVYdERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aHAAAAB3RFWHRTb3VyY2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tInAAAgAElEQVR4nOzdeZwU9Z34/1dVdXX1OT0nzAEzDAww3AMioFEkChK8UIMHbrLumqhZs2u+bpLdx2OTb3bz2P0+dh+PmE2yyS+JGl0TRRAV44X3hSIqRkC55BzO4Zh7+u6uqt8fPdXOwCA4DHO+n49HO9jT01Uz9e73u+pzlWLbto0QQgghvjS1r3dACCGEGKikiAohhBDdJEVUCCGE6CYpokIIIUQ3SREVQgghukmKqBBCCNFNUkSFEEKIbpIiKoQQQnSTFFEhhBCim6SICiGEEN0kRVQIIYToJte5fHPbtlEUBYB4PM7u3bvZsGED9fX1RCIREokEHo+HQCDAsGHDOO+88ygvL8cwjJN+XogvIxaLsXPnTjZu3EhjY2M23rxeL36/n+LiYs477zxGjhyJ2+0GJN7E2XPy3Mcff0xDQ8Mp81xFRYXE3SBxTouooig0NTXx+uuv8+abb1JbW0skEsE0TSzLwrIsVFVFVVU0TSMnJ4fRo0czf/585s2bRyAQOJe7Jwah+vp6Xn31Vd5++232799PNBrFNE1M08S27Wy8uVwucnJyqKqqYsGCBcydOxefz9fXuy8GqMbGxmye27dv32nz3JgxY5g/fz6XXHKJ5LkBTunpu7h0PKt64403WLlyJVu3bsW2bVwuF6qqoihKpzMv27axbRvLskin02iaxrRp01i6dClz5sw56X2FcHSMi5deeoknn3ySzz77DEVRsvEGnDLeUqkUuq4zY8YMli5dysyZM096XyFO1DE+XnvtNVauXMn27du/dJ6rqalh6dKlzJ49+6T3FQNDjxZRJwCSySTLly9n2bJlRCIRvF7vlwoMy7KIxWLk5eVx2223sXjxYlwulwSY6MSJh3g8zh//+EdWrlxJPB7vVrxFo1GKioq4/fbbufLKK1FVVeJNdMmJi0QiwbJly1i+fDnRaLTbeS4/P59vfetbXHPNNWiaJnE3wGj/9m//9m898UYdA+t3v/sdjz32GJZl4fF4vnRAKIqC2+0mFovx0UcfYVkWNTU1kthElhMH0WiUX/3qVzz11FMoioJhGN2Ot2g0yocffoiu60ydOhVFUSTeRCcdT9x++9vfsmLFCmzbPus8t379egBqamok7gaYHiuikAmw5cuX89hjj6FpGrqun9HPnCpYNE3DNE22bNlCbm4u48ePl+ASWaZp8sc//pGnnnoKXddxuU7dxe80uHxR7GiaRiqVYvPmzRQVFVFVVSXxJk5i2zbLli1jxYoVuFyuHok70zTZunUreXl5jBs3TuJuADnrKS5OG7+iKLzzzjssW7YM4AsDy5FKpYhGo6TT6VMGjK7rpFIpHnroITZs2ICqqliWdba7LQaojvH2+uuvs3LlyuyAja5em0wmiUajnR7xeBzTNLt8f7fbTTwe54EHHmDLli3Z1g8xtHWMu7fffpvly5ejKEqXcQeZ3BaLxTrFXTKZPGUs6bpOIpHgwQcf5JNPPpE8N4Cc9ehc54ypoaGBp556inA4fEajHKPRKDNnzuTmm2/m2Wef5d1338Xj8XT5WsMwaGhoYNWqVYwdOxa/358d8SaGFmeE7ZEjR1i1ahWxWOyU8RaLxaipqWHRokWUlpaiaRqRSIQPPviAV155hWg0mp1m0JFhGNn3r6ysxOPxZLcrhibn+NfX1582z0WjUcaPH89VV13F6NGjATh48CAvvvgimzZtOmXTr2EYHD9+nFWrVjFmzBh8Pp/kuQHgrJpznbMqy7J49dVXef7559F1/bTNEMlkErfbzT333MOcOXPYsmULn3zySZcJzaGqKnV1dVRWVjJq1Kjsc2LocOLNNE1eeOEFXnrppVP2gUajURYuXMhPfvITJk+eTF5eHn6/n3HjxnHBBRdQXl7Oxo0bicfjXcaRoigcOXKEqqoqRowYAUi8DVUd4+7ll1/mhRdeOGWei8fjTJs2jZ/+9KfMmjWLvLw88vPzmTRpEnPnzuXIkSPs2rXrlC11zgliZWUlFRUV2edE/3VWR8dp4ojH46xdu5ZUKnXaAx6LxVBVlbvvvptZs2YBmaJ6usKraRrRaJR169aRTqez86/E0OHEWzgc5r333jtlv1EikaC6upq7776bQCDAgw8+yHe+8x3uuusufvSjH1FbW8vcuXO5+uqriUajXW5L0zRaW1t5//33s7Em8TY0OXEXjUZZu3Yt6XS6yzxnmiahUIh/+Id/oKSkhBUrVnDHHXdw55138pvf/IZgMMjdd9/NyJEjSaVSXW5L0zTC4TDr1q3rNM9U9F9nXURt22b37t3U1taetoBalkV5eTk/+clPWLx48SkT2Cl3VlXZsWMH+/bt67R9Mfg5x9q2bXbs2MH+/ftPGW+JRILzzz+f3Nxc1q1bxwMPPMCOHTs4dOgQq1evZtmyZViWxZw5cygsLCSdTp/0Hs4cv+3bt3Pw4MFz/euJfuzEPHeqftBYLMb5559PdXU1O3fu5P7772fHjh3s3r2blStX8u6771JQUMDs2bNPWUQhE3uS5waObveJOmdItm3z2Wef0dTU9IWDiVKpFHl5efzqV78iNzeXn//851RXV3PllVee+c66XBw7doxdu3YxatQo6S8YQpyrAcuy2LZtG62tradMZh6Ph02bNvHwww+zadMmdF3P9rebpkldXR2WZREMBvH5fITD4S7fR9d1Dh8+zJ49eygrK8sOLJFRk0PHiXmupaXllHFnGAa1tbU88MAD7Nmzh1QqRTAYJJVKEYlEOHLkCEC2j/1UdF3n6NGj7N69m4qKCimg/dxZDSxyVt5oamoilUp9YZ8mZIJn165dPPnkk7z88sv867/+65fanjMPtaWlJbvihwwFHzpM08zGm2maX5jMtm7dykcffYTH48Hr9XZaLWbcuHG4XC4OHDhAfX39Kd/HibfW1tbssoGneq0YvJxlI0+X59xuN3v37mXLli243W68Xi8tLS3ous6cOXO4/PLLSaVS2RO7U3HmoXbMc84KSKL/6VYRdRKSaZrZs6xTTRlw6LpOfX09P/7xj0mlUng8njOaBtORsxqSsz1nUrIY3E5cpu908WbbNm63u9MC35BpbqusrGTJkiUArF27llgsdsq1S50iGolESKfT6LouJ21DSHfiTtd1QqFQdjTvlVdeyYwZM5g3bx4ADzzwAJs3b/7CCw5FUTptT+Ktf+tWEXUOqnMl6sx/OtODbRgG8Xi8W9u1bZtUKpXt3JcAG/yc4+5ciSaTyezzZyoWi1FUVMT3vvc9SktLefPNN3njjTe+cDqWoijZBOpcEYih42zynGmaeL1e7rnnHoLBIJAZQJlKpdA0DcuyvrAFpGOek7jr37rdnOucpTkH+UybVs+mD7Pj4s7OwuFyJTr4dRxU5Bz3M40j27aJRqOMHTuWe+65h5qaGtasWcMvfvELotFo9rZ7p/pZZypDOp3G7XZLvA0xZ5PnTNPkvvvuIxKJMHbsWK666iq+973v4fV6efTRR095ESB5bmA5qz5R5+rA7Xb3ytmSk9R0Xc929ouhoePVqNvtPqN1lJ0Fvi+++GLuvvtuysrKWLNmDT/72c9obm4+5eIeDieZ6bqe7RMVQ8+Z5jmnGTaRSOB2u0mlUjzzzDPYts0LL7zA4cOH+f73v8/111/PmjVr2L9//ylP4iTPDRxnvWKRZVmEQiHcbvc5b7+3bRufz0cwGJS5U0NIx75v27az8eaMlu2KM3/5iiuu4B//8R/x+Xw8/fTTPPDAA4TD4dMWUOc9cnJyCAQCksiGqI79oqfLc+l0mqKiIkpLS6mrq+PYsWPZOFMUhc2bN9PW1kZ+fj75+fns3bu3y22apkkgEJA8N0Cc1fwQp8+ovLyc/Pz80w4uOlumaWaD1NmWJLfBr+Mi3pZlUVlZSSgU+sIEk0gkuOyyy/jnf/5nFEXhl7/8Jb/85S9pampCVVWSyWSX80M7Mk2T4uJiiouLz3lsi/7JmdJkWRYVFRXk5uaeMhYikQjz5s3jl7/8Jbfeemt2vdx0Ok0ikSAUCmEYBtFoNLvoTFecPFdSUiJxNwB0q4h2TGqqqpKTk0NZWVmP7lhX21QUhZEjR+L3+7N3ipeBRUODk8xUVSUUClFSUnLKIhqPxxkzZgzf/e530XWdZcuW8fLLL5OXl8eIESMoLCxk+PDhhEKhU27Pmc4ycuRIfD6fxNsQ5OQ559ifLs+5XC5qa2uxLItLL72U+fPnYxgGbrebqqoqbrrpJgzD4J133mHHjh1dNuU6cVdeXt4pz4n+q9vNuU5Cc255NmHCBLZu3UoikTjj/lHndWcSJE7TWnV1dXa7ktCGjo7xZhgGEydO5LPPPsM0zU7x4zTxLl68mOHDh2PbNgsWLGDBggWd4tLlcrF9+3Z+8Ytf0NraetJ0K9M0s7elcu7WIfE29HSMO7fbzcSJE9m+fXuXec7n8/Hee+/x8MMPc9ttt/Hv//7vbNmyhWg0yrhx48jLy2PXrl3Ze5B2FU9Os/H48eOz25WTt/6t21NcnODSdR23201FRQXjxo1jw4YNZ1REFUUhEonQ0tJCPB4/bZCYpsmkSZMoLS3F7XbjcrkksQ0RTrw5J2y6rjN69GiqqqrYvHlzpzN60zTJz89nxIgRtLS0oCgKRUVFXcZJfn5+lyMfnX6wyZMnU1xcnL1XqSSzoaVjnnMGmI0aNYqqqio2bdrUZZ4zDINHHnmExsZGrr/++uxJWGNjIytXrmTVqlUcPnz4lFehpmkyceJESktLO8Wd6L/O6krUSWput5tAIEBNTQ2HDh2ivr7+tDfkDgaDPProo6xYsYJkMonX6z3la5PJJGVlZUydOhWv15ttIpGkNnR0jDfDMAgGg0yfPp3Dhw/T3NycjTdd14lGo/zHf/zHaWPDsiwSicRJsZpKpaioqGDy5Ml4PJ5svMl8vaHHiTu3241hGAQCgWzcNTQ0nBQ7zqjxZ599ljfffDPbwmFZVnbRjlONyE2lUowcOZIpU6bg8XjweDyS5waAbt8KreNBNU2TZDKZbWo7ePAg8Xj8tMPBk8kkiUTiC9fAddbcnTdvHhUVFYRCIXJzc/F6vdk5fBJgg59zjJ2z9WQyicvlwu12c/DgQZLJZKcYSiQSp32c+DOQibeCggLmzZvHyJEjT4o3uSoYWrqKOyfPHTp0qMs85zTDOvmtY6yd6uKiqzwXCoUkzw0AZ3U/UYezSHMymcyetR8/fpxEIvGFB/+LBms4E5xzc3O54IILqKqqIjc3l/z8fILBIIZhZPsLxNDixFsikcDr9aJpGseOHcveUs9pgjuTh8OJt4KCAi688EJGjx7dKd7kikA4U12cPKfr+inzXFcx+EV5Li8vjwsvvJAxY8ZInhtgzrqIOsHTcUUZv99PMBikubmZSCTS6bWn4wSqbdsUFxd3CqyCgoJOZ2fSvDY0OfHmLMcWCAQIBAI0NTV1ur3el4230tJSLrzwQiorKyXeRCcd85yzFKQTd2eb50pKSjqduEncDSxnVUSdYHECzPl/Z93IgoKC7M20k8nkSVMSTpxE70xiDgaDVFdXM2PGDEpKSsjNzaWwsJC8vDwCgUD27EyuCoaWruLNsixM08Tn81FQUICqqmcUb87PKYpCTk4OEyZMYPr06RQXF3eKN7/fn+0PlXgbmk6MO/g8X/l8PvLz8884z50Yd9XV1UyfPp3S0lJCoRCFhYXk5+fj9/slzw0QZ71ikdNsYRgGfr8/uzya04QRCAQYMWIEhw8fpr6+ntbWVpLJZPb2Qk5ThdvtziavsrIyCgsLycnJyZ6ZOQXUaVYTQ5Mz0MMZ5OFMRnfiLRgMMmLECOrq6rLxlkqlOsWbpml4vd4vjLfc3NxOBVQMbR3zXCAQyBZK53kn7pw819LSclLcqaqajbuCggLKysooKioiGAx2eeImeW5g6JEi6iSZjiNsOw4L93g8DB8+nHA4TEtLC4lEAtM0swOKNE3D4/EQCoWyhTIYDBIKhcjLyyM3N5dgMJi9fZr0TQ1dHePN6UI4cRqCx+OhpKSE1tbWTidtTry5XK5svPl8PjweD4FAgNzc3C7jTQZ1iC/Kc860qy+b55yCnJubm31Inht4zrqIOjqOPFMUJTty0uv10tbWRjgcxufzkZeXRzqd7jIBOsktEAiQk5NDTk4OwWAQv98vCU104rRedJxDahhGNt4ikUi2S+FU8eYkvq7izTAMiTdxkjPNc/n5+aRSqS/Mc8FgkGAwKHlugOuxItpx8YWOc6ucBeMjkQixWCx7Tz2n2ffE+X9erxe/34/P58sGldOkJmdmwnFivHVMZl3FmzOIo2O8eTyebLw5MddxTqjEmzhRT+c5J+4kzw1cit3DK7ifeDf4ZDJ50nypdDqd7cvqGJROYnMSmfOcE1QSWOJETqx1vHFyMpkkHo+TSCRIpVLZIgqd482ZQO88TlyZSOJNnErH0bWS54a2Hi+iDqeYOh3r6XQ6G1ROP4HD6S9wztScf8ui3+JMfVG8Oc25DifenKY1iTfRXd3JcxJ3g8s5K6KOjkO7nTM359GRE0QdvwrxZUm8ib4gcTd0nfMiKoQQQgxWZzWwyLIsfv3rX7Nv377TLjjf0amWvxJdi8Wgra33tpdKpZg6tZwf/OAfUNX+M0cykUjwq1/9iiNHjki8nUPRKITDvbe9VCrF+eeP4XvfuwvoX02aW7du5aGHHurWVaPEXf/kjNe59tprmTdv3lm/31kV0ebmZj777DN+/OMfS3v+OfT738Ovf92bW7TZuPH/cc89zahqQW9u+AsdP36c2tpaibdz7Gc/g4cf7s0tpti58z/53veigL83N3xa69evZ8SIEdx4440Sc4OEbdu8//77rF27tu+LqG3b+P1+SktLz3pHxKkNG9b72zQMP9C/zppt2yYnJ0fi7RwrKur9bRqGj/4Wb5C5mhw+fLjE3CBTVlbGjh07euS9pFd7ADhhKc5e0V9PuqU57Nzr/XhL99t4UxQlO01FDB7pdLrHWhakiAohhBDdJEVUCCGE6CYpokIIIUQ3SREVQgghukmKqBBCCNFNUkSFEEKIbpIiKoQQQnSTFFEhhBCim6SICiGEEN0kRVQIIYToJimiQgghRDdJERVCCCG6SYqoEEII0U1SRIUQQohukiIqhBBCdJMUUSGEEKKbpIgKIYQQ3SRFVAghhOgmKaJCCCFEN0kRFUKcBbv9q9XFc0IMflJEhRDdZAMKweBOzjvvh4wf/xtUNQooSCEVQ4UUUSFEN2UKZVnZC4wYsZrKymUEAntO+r4Qg5mrr3dACDEQ2YAJQCrloalpAqbpxrZNMk27NnKOLoYCKaJCiC/J5vMiGmH37sXs3r2ITDOuB4gCBlJExVAgRVQI0Q1OIU0DGpni6fSFmkhTrhgqzq6I2jboeg/tijiVeLz3t5lKgaL0/nZF34ud8XFXAAPD2ERhYS2m6eLIkZlAsP17Zy6d/nL7KMTZyMnpufc6uyLq98Onn8Jf/3UP7U4/d911mUcvu/pqKC7u3W2++ipEIhAK9e52+6V0Gn74Q2ho6Os96RU3VV7D+D8tOeX3bRtAwTQVVNXPunWvs3PnE7hcXv7hH35FWVkltm2jqmd2Imaa8NZbmZNFj6enfosBbtMm+PnP+3oves2P+Q/2U95r2zt+HC67rGfe6+yKqNsNBw/C88/3zN70d8XFfVJEq6szj960fTskk727zX7LsuDBB6Gtra/3pFdM+ZdCpnzz1EX0RIcP27z1loXfb3H11TZTpnz5bW7blmn9kCLabu9eeOSRvt6LXvMo32NfLxZRgAULeuZ9pDn3y/D5+noPeo00554gL2/IFFGUL45z2wbLskkmLVKpMNOmzeL224O43W40LY9oNIHL5cLlUlHV0wdROp15SLx14Hb39R70qlxc7OvrnegmGVgkhOgW27aJx+NMmzaNqVOnorRXwUQigaZpfbx3QvQOKaJCiLNiWRapVApVVXG5XCiKki2oQgx2UkSFEN2iqio5OTksX76cd999F8MwuP322ykqKpJCKoYMmQ0thOgWRVEwDIN9+/axbt06PvjgA2KxGPpQGichhjy5Eu1ltm3LGboYFGzbxjRNfD4f+fn5eL1eVFXFNM3s9yXWxWAnRbSXOAmlpaWFBx98kHnz5jFjxoxskpGEIwYay7JoaWnhqquu4qKLLkLTNIqLi4nFYnhkrooYIqSInsBZrOzEcmYD2PbJz3dR/OzMbPROzzv/TqVSvPLKK7z44ovMmzePRYsWSTEVA1Y6nSYUChEIBFBVFUVRME0z+xkQYrCTIgqkFIVDPh8uy6IsFgOgVdc5ZhgAFCUS5LRPnDx07Bix1lZ0XaesrAxVVYnH49TV1WFZFqFQiIKCAgDq6+tpaWlBURSKi4vxer0kEgk8Hg+NjY2sXr2adevWMWvWLBYvXsyUKVNkaoAYUHRdp66ujoaGBjRNo7y8nGAwKCeCYsgY8kU0pSj8oaqKZaNHM6m5md9/8AEK8OawYfzHtGkA/GjTJq49dAhbVfl/v/0t6194gbKyMh566CHy8/PZuXMn3/3ud4nFYixdupTvf//7ADz88MM8/vjj+Hw+/ud//oepU6cSjUaxbRuXy4XH4yESifDqq6+ybt06LrjgAhYuXMj06dMx2gu4EP2VMzp39erV/PnPf8br9fKf//mflJeXS4uKGDKGbBG1yDTZxhSFj/Pzqfd6iYXDJGi/mZOqEtF1bCCmZgYxJ9JpotEo4XCYSCRCvH1l+FgsRjgcJhaLEY1Gs9twXmvbNrFYjFgsRiQS6dTUpes6qqrS1tbG66+/jmEYjB8/HsMwJBGJfkvTtGyria7rWJaFbdv4fD5crkxasSxL4lcMekO2iNpAClAsi1t27qQwGmV4LEa4/fmiSISF+/ZhA4WRCG1AIh5nek0Nuek0eXl5pFIpWltbMQyD+fPnk0wmGT16NC0tLQBUVVWxcOFCDMNA13Xa2tqItTcXK4qCbduk02k8Hg9Tpkzh8ssvZ/r06ei6TiqVQtM0SUKi31EUhbq6OjZu3IimaRw8eBCPx4PL5eL999/n6NGj+P1+Zs2ahXuILV8nhp4hW0Qhc9fDOFDd2MiExkYAImRuKTy2sZHvNzZm75rYBNiJBNdfdx1ccknm502T5uZm8vLyuPvuu4HMwKDm5mYA5s6dy8UXX4yiKCSTScLhMMlkknQ6TSqVwuv1Mnr0aKZNm8a0adMYPnw4lmWRTqezV6hC9CdOK0okEuG+++5j37595Obm4vP5sG2bRx99lLa2Nm688UZmz57d5SA7IQaTIV1EHUkyV58qmdsLK+3PRckUUANwpo/H4nHSbW2oqprttzRNk1gslu3rdJpi4/E4qVQKRVGyy6HZto1hGAwfPpxx48ZRUlJCXl4epmkSj8fxDaFF7sXA45zkjRgxgoULF7J8+XI0TcsWS5fLRWVlJQsXLgQyo3ed5l0hBqMhHd0ameJokCmgThFVyRRSF5ki6nb+7XKheL2Y7ZPK3W53dr1QJ5FompZdscX5nvNvy7Lw+/0sXryYQCCQfb3H48Hv9+Pz+TAMA03TUFVVrkRFv2LbdrYLIhaLMX36dN544w2OHz+ejXnTNKmpqWHYsGGEw+HsFapciYrBasgWUYVMsXQKqNnhOcgUV4tMEXW1P2/rOm6vF6t9CH/Hq8t0Og1kiqUz4MI0zezqLQDJZJJQKMS0adNoamrCsiwMwyAQCJCTk0MgEMDr9WaLsxD9kWVZ2VaTqVOn8tprrwGZeA+FQkyePDnbbWFZVh/vrRDn1pAuos6MTI2TF1mwT3hOAXC5sBQFAoHM8+2LbDtn6A6nADoJxLZtLMtC07TsRHSnAHs8Hnw+Hx6PB8Mw2u/JqGUnrgvR33RcGGTcuHF8/PHHNDc3Y9s2VVVVFBUVZbsxJIbFYDeki2i2OHL6IgqgaBoWZG9EfqZFFDJn6c7r3W43lmWhqiq6ruN2u9F1XZpxRb/mxK/TZaGqKsOGDWPcuHG89957BAIBJk2adFI8SyEVg9mQLaIO5YSvHXVVyjSALlYV6qrwdVx9SFGUbFOv2+3O9hM58+2c4inLpYn+zIlZt9uNz+fD6/UyZcoUNm/eTGVlJRUVFXg8Hrxeb7bQShEVg9mQL6Kn0uXH/hTJ4EyShJN8nL5Uh1N8nfeQhCP6M+dkzymifr+fsrIyLrnkEoqKirLr6Ho8HpmmJYYEKaK9xCmOJyYVKZpioHG6ITweD8FgkHQ6zUUXXYSqqgQCAQKBQHaUucS3GOykiPYySSpioHNaVQzDwO/3A+Dz+VBVFa/Xi8/ny44wl3gXg50UUSHEl+L07+u6js/nQ9M0UqlUtplXrkLFUCJFVAjxpXUcYOSs3nXiQDkhhgIpokKIbnGKZsdR5c40GLkKFUOFFFEhRLd0NU9aCqgYaqSICiHOihROMZSdXceFokAq1UO7MhBET/8SMTi13ypvaIj09Q6IZLKv96BXNZHu613otrO7Eo3FoLoavvGNHtqd/u2V8AW88oPe3+5FF8G11/b+dkU7TYP//m9obe3VzT73HLz9dq9uEoDLmMOi3t+s6GjaNLj33r7ei17zH5RzrBe3V1sLHe4NclbOrojG41BZCd//fs/sTT/3+k/h5z/v/e02NkoR7VOaBrff3uubXd0Mv++DImqCFNG+NoTyKsA3e3l7W7bA88/3zHtJc+6X0Fe3y26/aYwYYvyxPtpu32xWiF7T3Nxz7yWTuYQQQohukiIqhBBCdJMUUSGEEKKbpIgKIYQQ3SRFVAghhOgmKaJCCCFEN0kRFUIIIbpJiqgQQgjRTVJEhRBCiG6SIiqEEEJ0kxRRIYQQopukiAohhBDdJEVUCCGE6CYpokIIIUQ3SREVQgghukmKqBBCCNFNUkSFGDTs7FdFMU94TghxLrj6egeEED1FweVqY9y4+/B66/jss7sIh8eQKaRKX++cEHY5KscAACAASURBVIOSFFEhBjy7/aGSk7OVysrluFxRmpur24uoRabRSQqpED1NiqgQg4KV+a8Fzc3jUNU0qZQHMPm8iAohepoUUSEGBQuI0dxcydq1P2v/fx1oA7xIk64Q54YUUSEGPGfwkNn+b3cXzwkhzgUpokIMGm4Mo46Cgo9QFJPW1nG0tU1FrkCFOHekiAox4CntDy/B4AHOO+/nqGqK7dtv47PPLgBSfbx/QgxeMtpAiEFEUUBRbBTFGbEL0pwrxLkjV6JfQjLZN9tNWH2wUU0Du58lX9sG19AJ2UTiTF9pkxlIFOX48WLWrbsTRUnT1DQZCJMZYOQU1dM37fZVnPdLtg1eb1/vhejHhk5G6gEjR8K0ab2/3dHeeth0qHc32tLS/wqWywWNjbBpU+9uV1FgwgTQ9V7dbGXlmcWbbWcelpUgnS4gmVwMWIRCKm53HFV1obTXTuUMukfLy89qtwcXlwt27Oj9mMvJyQRAL7Jt2L69b06ixo0buOcq/SxL9m/f+U7m0et+swxq/k/vbnPGDAgEenebp5OTA2+/Db//fe9uV1Vh795ery7/+I+Zx5kwTYhEIBq1SaVSWJaFrrvxejOHsZfr/+ARCsGPfpR59KaFC+Gll3p1k6aZ2eyBA726WQA2bICamt7fbk+QIjoQ2DK6sk+p/X/ogG0r+HwBtm7dzkMPPUQ6nWbhwsv5+te/3t4q7ww+EgPCmTQZnAN9Fep99Ov2CCmiA0IfRFh/jeq+2K9+XkQtK/Nwu920tob54IP1pFIpJk2agstlkEgksKx+/2uIjvroYEmMfHlSRIUYJEzTRNd1CgsLSafTeL1e0uk0ALZtY9s2Sn89ORJigJIiKsQgYNs24XCYyspK/uu//gvLssjNzaW1tRWfz9fXuyfEoCVFVIhBIp1Oo+s6JSUlWJaFpmmk02ns/jZVSYhBRIqoEIOErus0NTVRW1uLZVkMHz6c8vJyacIV4hySbmQhBgFFUQgEAtTW1vJ//+//5V/+5V946623CIVCKIqSfQghepZciQoxCDhF0rIsIpEIqVSKVCqFqqpSPIU4h6SICjEI2LZNIpEgLy+PRYsWkU6nqaqqIhaLoaqqjM4V4hyRIirOmpOgVZlk1mfcbjeJRIKqqip++MMfYlkWLpcLy7LwDtT11IQYAKSIim5zrmzS6TS/+c1vmDx5MhdffDEej6evd21ISSQSfPrpp7S2thKPx4nH40CmsHq9XjweDxMnTqSgoKCP91SIwUeKqMjqeI8PDXC1L7jaVTNgx2kTuq6zfv16nnjiCS666CIWLVrEV77yFdxud+/s+BDV8Rg8/fTTvPzyy/j9/k6vicVijB49mnvvvZeCggJp0hWih0kRHaKcG2Md9PlIaBoV4TC6bZNQVQ74/TQrCnUHDpA7ciQAx44do7GxEVVVKSsry66Gs2/fPiKRCIqioGka7777Lh9//DHTpk3jmmuuYdasWdKceA6l02kMw+DKK69k48aNxONxXO1337EsC1VVWbhwIaWlpaRSKTRNA5BCKkQPkU6sIci54ny+rIw7LriA786eTYPbjQLU+nx864ILWK9pPPXHPwKZhPv4449zyy23cOutt7Jt2zZUVaWtrY1/+qd/4u///u85evQoHo8Hv9+PZVl8+OGH/PSnP+VHP/oRL7/8Mm1tbX35Kw9Ktm1jmiatra1UVFQwZcqU7DJ/kFkGsKysjPPOO4+2tjZSqVQf7q0Qg5MU0SHGuX0zwPZQiDqfj5jLRbz9yiSmKER1HUtViUWj2SbDaDSafcRiscxrYzFisRiJE+4erWladqDL+vXrWbNmDa2trdi2jWX1xR3GBy9nVG46nWb69On4/X5M08x+r6amBq/XSzwex7Is+fsL0cOkOXeIsQETSACLamtR0mmiLhd2Ok0roKdSfK22lvVeL6PHj89eQY4ZM4arr74al8uFz+ejpaWFZDLJhRdeSH19Pbt37yYej2cHGrndbqZNm8Zll13G7NmzycnJIZVKZZsaRc9RFIV4PE5JSQmVlZVs3boVy7IoKipi7NixpFIp6QsV4hyRjDYEWUAcKIxG+eaOHShAEmgGgvE4d23Zwr9OnMjMuXNpa2vDNE1mzZrFnDlzsleTzc3NWJbFkiVLOHr0KL/5zW9obm7G5/NRXl7O1KlTmTZtGqWlpZimSSqVQtd1Wce1BymKgqqquFwuXC4XhmEwadIkdu3aRSKRYPz48eTn56MoCi6XC1VVZfEFIXqYFNEhLE3milQhMxpXa38uTvvVajwO7SNsE4kEqVQKRVEwDANN07Btm0gkQjgcRlVVRo4cSXV1NSNGjMhOp4jFYjKw6BzSNA1d1/F4PBiGwejRoykvL+fo0aNMnjwZj8eDx+PB7XajaZoUUCF6mBTRIUglc+ANOk9pcR4uwKVp2cRsmmb2ikdRFHRdzyZkj8eDz+fj0ksvxev1YhgGLpcrO8jI5/Ph8XjQdV2ugs4BVVWzRdTn85Gfn8/MmTNpbm6mpKQEn8+Hz+eTIirEOSJFdIhRyBRRd/u/9favzsOZ+uJWVXztRdDp43QGpTjJ2FkRxzRNpk6dSjgcBsDj8RAIBAgGgwQCAXw+X6fCK3qG87d0TloCgQDJZJKpU6diWRaBQIBAIIDX682eAAkhepYU0SHGabrtWEyd5zu+Rtc0vO1Xkel0utOoTicZ67qeXfjc7Xbj9/tRVRXDMPD5fNnVcnRdz/bJSSLvWU6/qK7r2elFhmFg2zaGYRAIBLLN7/K3F6LnSREdgpwCqpK56uz4vPNVUxRc7U2wuq5jWdZJSdiZuK9pGl6vt1Ozr2EY2atPp3hKEj83nFYBwzAAskXUaeaVExghzh0pokOUcsLXrmjtC8o7qxGd9B7tV6DOvFBnEXpVVbPFUxal7x2qquJ2u7PHxLZtNE3LFlAhxLkhRVR06UyvWTr2j2Z/tr2JUfSOjjfddu4pCnRqAZCrUCHODSmiotucxHxiwZSE3Xe6uvqX4yHEuSNFVJw1SdL9gxwHIXqftLkNBJIc+54cg3Omvxf//r13PacvD0Nvb7snY+6srkRt25Y7Q/SGPvgbpxIJ+tsCfTaQar/hdK9KJkGWKzyn+mseMU2TPlmyP5nsi63SFx8vgN6+L4Jpmp3ueHQ2zqqIhkIhvF4vd999t9yA+Vw6fBhmz+61zSWTSfyzZxPqYkRuXyrQdZS5c7k7FOrdeFMU+NnPoH0KiehZiUSCvLy8frk85PiSEh74ylfYmEh0OUL9nHG54Ac/6L3tkTlPHDsWyst7dbMA3HcfnHA/+XPGsixaW1tZtGhRj7yfYp/liuCpVIrW1tZ+3yQzoLnd0IsJxrZtcjQNvR8e06Rl0dbFnNVzyrYhHO790+UhJCcnp9/e4SdsmiRtu3fbHNNpiER6b3vtgkHoi4H14TC038GvV2iaRigU6pH3OusiKoQQQgxVMrBICCGE6CYpokIIIUQ3SREVQgghukmKqBBCCNFNUkSFEEKIbpIiKoQQQnSTFFEhhBCim6SICiGEEN0kRfQcsjExbVnlRgghBqseL6JmPMbBAwfYs3cPe/bsoa7uSDfexea1p1fx6Ion+mbx5x7y4vNPc/+Df+R0yxy/9PyfefKpV7pc8N1Kp2luauq3C3T3tXBbG/v37WPPnj3sra0lHIm2f8fm6Sce54VX3+jT/et9Nq+ueopHH3+y391AYDCJhDNxV1/fcPI3U0kO7N9PfUNj7+9YL9m+dRP33fcALYnEF74uGg7T2trWS3vVN3p8scrw7p38zx8exh0MoNgWkUiMr156DZdffgnGGa8ZrtDS0MCxWC8upngOjB4znvzhidOeqTQ1NtIaT3Z5y6WWXTt4+IVX+Mbf3EpRQd652M0B7S8fruPpZ18gNy+PaCxKYVEJt976XYYXuWloqMfDULsxQuazczwhJfRc+mTjxzz8p0cprxzH//nBPfj1z1PpxrVr+O0jy7ngkku59Zt/hdr/lqA+a7FohCNHjpL+olVjLZPXn15FOreI667umcXe+6MeL6JmOk1ufj7X37yUwrwQH6//gFffeIFx4ysYP3YUAKl4jOONTXi8XvLzPi8MqWSCpuYWfD4fLsONO33y1Vc6nSISiRIMBmltbcWybfLz8rDMNA0NjXh8PoKBwOf7Y6ZpamrGsixy8/Jw6zrRaIR4PEVeXm52Tel4OEzCShPKyQWgsaGBeDJJQX4hhqFnXmSZHKtvwAby8vJx653/fOG2NlweHWyw0hbjxk/CNK1sEU0m4jS3tOL3+1EUBcuyCQT8uFwuDEMnmUzS0tKM1+cn4PeTSCQ4tH8fx47Xc/ToUbyGm0Cgl251MECkUglGlk9j6TevxWVFeeIPD/P6m69zy42L0F06LlfmzhutLS24PV48hhssi7ZwGN1t4PFk7sySTsQ51tCIx+MlP//kkxXTTBMORwgGg7S1tWGaFvn5ediWSX19Ax6vl2AwmH29ZZo0NTVhWhah3FwMt5tYLEo0liAvNy+7yHciEiGeThEKZeKuqbGRWDxOfn4hHk/7CYBlcbyhHsuyM3Hn1k/+O5zw2dGtz09Au/oMxONxorEEoVAITQUrkSCcTJLT/ju0tbag6S5URcM0TTyGQWNTEx6Pl2AwcNL2hyLD4+Fo3SE2b97C7OnTADCjEdZt+hTD70c9YSX3psZGkqkUwZwcfF4vqVSS5pY28nILcNbeN+NxWmNRcvPyUYBwayut4TA5ObkEAr5T7ktbawvRWBzD8BIK5aAoZN6/uQUUhby8PFyaBti0trbh8XiwLJO2tnDmey4XTY2NWEB+fmbbyWSCWCxBTjBAc3MzFlCQnw+Aqqrout7pxP/48eOYpklh4XBcLoWW40c5eOAALkulvr6B3Pw8XKpKIhqhvrkFv99Pbg8tAt+XeryIWraN2+2mrLSMoN9D5aiRaKobm0yyat5fyxPPPU8klSYRSzDnovlccvF5NNYf57HHlnHg0BFGlI+gubGR4aUVJ73/0boD/OEPf6Ri9GiaGuo5fOQ4CxcuIBFpY83adRheH7f+7W2MqRiJ3dbKn1asYOfeWgCGF5dy09KbSTYd4Y+PPM11t3ybyRNKSITD/On3v6do4gVc97UL+PjN13hjwyeoqoKh53DDN28gFHDz3GNPsmVvLYah89VLlzB71tgOe2bz3KpVhLU04eZmRpZXEQrq7NxxmL+789vUH61j2aPLOHq8gdKRmd9v1JjxfPOWG9FdBi3HD/D0U0+xYeNGvIEg37nrLiINx1i55l0i8TCPPfoIX12wkAVfndvTh2xAs20Ljy+X0mH5kNBRdZ2c0OfFTNM0TEweuv8+Znx1PnNnzoBwG4888Acmzf4Kl1w0h9ZDB3jimedoTSVJROPMmnMp8746q1MLQsPxOu77/YOUjaqgrbmZAwfrWHD5fOxUnLfeeQ+X7uav//Y2xo0eBeE2Hn1iJdt27kJBobBoODffshSiTfzv/z7OFTfcxvQpI0jGYiy7/34CldO5cfElfLrmTV5e/zGaquDS/Cz5qxspyvfx/IpVbNy5C4+hc/Hca/nKhRM6/Q3qjx9j+WPLOHj4aPazU1w2CgUyn4HHV7BzTy0Aw4pLWbr0ZuxwM39a9hSLl97O+DH5vPXcn3l7yy7u+ecfkGunWPHgnzhv/tXEm/ay7sOPKS8fySebNmGpLr55661UV40+58e2PzNNk2HDizF0nS2fbGVWzTQUBbbt2EprJEFF+Qhsy8qcpKdSPP/cM6z96C+oqobX6+PGpUspyfPzyO/uZ8pF17Dgq1OxbJvnVyyjzgzxnW8tYf+mj1n12pugqaRTcMXiJUwcN/KEPbHZ9M47PPHiS6SsNKNGzeBv/+ZmtNgx7ntkOYePHsO2LCpHV3HDkq+Tl5fD4489QlssRV5uDlu2bmXixClMmjCGN15fw5Hjx7ni6sUsvGweuz7bwhNPPceEidXU7q3l6LHjzP/alSxaMO/zEwRVg0Sct156kY927QHLpKCgnMVLruTV115j29FjuBsbeaS5mdu+dRup+iOsfOY5ktgkYknmzb+S2TMn9fbh61E93ifqcrkIt7XxwgvP8ednnuH5F19j8tSpVFaUEI81s/zxlfiGlbBkyRKmTB7PKy+vprEpwasvP0tTq8Wd37mTSy+ZSyqRwLKtLpo4bSLhMKalcO3111MzcRx/XvU0BPK48847KdJV3nhrDdg2zz+7iiP1Mf7mb7/FHXfcjqGZrHr6ecrHTCAv5Gbzto8AOHpkH7uO1jPz/Bo++/QvrH7nfS772tdY8vUltLYcZs1bG6nbtof3P93CDTcv5e/+7u8YW1Vywn4pmKTZvmEHE8bVcMGsWVjxFOm0BbbF88+sIp42uPM7dzL3K3OIhdtItl9pKyrU1R1n1NgJ3HHHtwlaaV5+7Q1GVIxi8VcuJOjP4YYbb2LWzOk9fbgGPLfh5eD+jTxw//387N5fkvQFuXTuhQDYHXoF0+k0VodbmWVuyKtgWzFWPL4SV14hS77+dWbUTObVV1dz+OiJfT020WiEZMrmmsXXcn7NZJ778zMkdB933HEHIwJeXn/jLbBtXlr9DAcONXPr33yLO+64gxyfxhNPPUNp+VgKC/xs3voBAA3H9rP98BFmzp7Orm2beOaNd7hk/uUsWXIDsWg9b7yxnqM79rF2wyau//oS7rrrLqrHn5BEbYsXn/8zLWG7/bNzEalEHMsGbJvVzz3NkWPR7GfA67J48s/PU1xcht9lsXffJ4DNjiNHibS10lAf53BdHc3RBCNHjCKdTNDQ0ERZxWhu+/a3qQz5eemVV0/bzz/Y2ZaFbnj52pxZ1B88wN6DdQAc+mw7o6svpLhoOKaVyV8fr3uLDz/azJIbbuXOO+5g4rgKVjy2EndOHmPHV7Dp03cBSIYbWL9jFzXn1VB/7CCPrXqWyefPYsmSGwgFdV5Y/RKJZOdRIjs3b2Tl869wyfwbuOvv7uLqqy9FV+OsXLGCtO3n9m9/m29/+9uEm46x+pU3sW2VdCpFU1MLF3zlYpZcdy2ffvwRH2zcxk1Ll3L1Beez5s03CcfjaJpKa0sLmtvLjTfdzOJrFvDGSy+y70ALmqaDomDoKuvffYv3tuzgyquu4rprF7N39ybWrd/J/AWLGF9SzPhJ01h68w0oyRaWPbaC4WPGcsOSJYypLGP16hdobh3Y3XY9fiWqKArpdIrjR44QaToO3nKuve7rGG5o2XmEfcfrKTE8vPjiiyQScYYVDyO6fy9Nh45z4cWXMLqyEoAZY//CgZiJDZ0KqW3bGIaXORd8jcpRwwjUNLJj9z5qJk2mbHgBVZPHsedYDNqa2bGrlvPmLmDc2DEAnDdjOs+/9AENYY1pE8by/rY6kvEUB7duY/jIMYwsMHjtzZ00xWL85f33sSwL3eNFV9J4dDd5uspbb7/NooWXU1lx8p1rU6kEZSMmsvDyy1CAzTYouguruYnmow1cfPlVjBo1ChjFtg8/orU9qaeSCcpGTGDWzBoUYMzEKo60RnAbHkYNK0J3uSmvqCDUoblQZNiWja7r5OUXEsgJsn/vHl555UWuuebKTvccVVUVVTvx/zWsY43UHj1OoeripRdfIplMMGxYAfFIE1D8+XZsG5duMGf2Qiory8iPtbHts13UTJpMRVkxY6dUs7m2HsKt7Nixl5pZF1E9rgqA82fO5Mk/v8nRZpVpE8bx1oYDxKMpDm3dTmHJKCqLfLzz/k4aYlE2fvQhtmWh6QaGZqNrLgo8Om+tWcMVVyyiatQJrTPNTTQeOsqFcxdkPzvTqz7mcNqGthY+21XLeRdd1ukz8OzqddTHvQwbVcqxYy0c338Ef06AcZOqOLB7MwGvTaAwRGEepNImw4ZXMOv8mbhUqJ4xiTfe+5S4ZRHoixtP9iNmKkVJdTXBjRvYufsgxTleth84xjU3LeC9N3djKy5IJtnx6TbKq6s5b3o1ALryFT7++EH27jOZUD2Rj7e8zJFjMRIHdmB485g4ehhHN2/gSFuY3du2smf7NiKxJLnBXBKJBIbbubewzc6Nn5JbWsqCSz8/wTYP1bLrwFGuvOEWKttjYsqUiXy0qY62MKiKyYRJc6geNxbKS/n47TWUj65i9OhK/HqSd7fuIp5MYmPj84eYM2chZcUGRYW5vPX6uxyqi5LrVUBV0aIxdu+upS0W4b1338FMmwRDeagkKSgoIM/rRcvNp3j4cI58upH9DY1o+/bywuFDJBJRCvNDxKJt5LZ3ow1EPV5E0+k0odx8br3t2xjpOL/99a9Z/cob3HjtArAsNFXjonmXUT2mAtsGzWVgtLSQTqVxuT+/c7ymqEDXZyiKopCdOWJbBAKBbP+kqSiZO9DbNioKmqZ2+DkV3aWgqTDzvBpeW/cwG3Zv4sM9+5g5ewGoLlLxBMOLS7jh5qUotoWmqqiaF69H5e++cycvvL2G+3/3W+YvXMRlX72kw17ZKKgMKwmddPVsWxYKCq4Ofaid+ksUBb/fk/257O8AJNtH5cptX7uWSsUZXjyRJUuuB+DVl57mrXc289VLr0T7PJwwzTTJSPtfuMNxsNNpNEXlKxfPY3J1FbZtoao6uttz0rYURcE5DLZl4ff7ceuZ/sm0QjbutBPiDhR0l4qmwnkzanhxzXo27N7AX3bvZcbMi1BcOql4gqKi4Sy58SY0hfa48+D1aHznzjtZvWYND/3ud1wyfwGXz7/s8/tDWyYKCvqJnx2FDvvyeUQqioKuK+gumDFmNM+v3cbajzZSVDqS3BwPtbv343JZjCyf2v4WFqqqkU6By4A0nNTXN1RZloXuDTL7gvNYs/YTEnV7yCkcwYjiQsx0GlyZPm3VJvt5hkymcLlUbMukavx4vK7VbNqxjuP791E1bgI5OTnsj8YIBIJcufg6cgNeFEVBVQwMT4f+cNsmFYng858wTsK00JQTjjsqukvF5QJbAcXJNuk0httNsH2sRaI95zknoIqioqrt+27aaC4XHkNx3hQsCzuVpmLUGG5eegNmOo3L5UJ1+SAVI22aOL+5nU5j6G4uu3wRI0uGAaCpOrphnP3B6EPn5NNgWSbRaAwjN49FV3yNj9a+xNbP9uKvHIHLpbB3Tx2q6gLL4sDB/aghH5rb4NNPP6WxsZG9u3axac8eXJra5YhV27azRcW2bSzL+rzI2BZ22oRgiJxheWz6y6ccPV5PQ0MDW7dtI6+omGAAPMXlVI0awcvPvUjCVKiuKgMgWF5Kw5HjHDsWwWsYNByvpzVcTzLSilY4jFtuuYVJpcVs/GQnlmWfsF8KmtF5j23LQvMHUDSNTZ9+QmNjIzu3b2Pbvn3tHf3O79Ch8bHj76MoxOMxjh49SqQP7nTf3ymKSjzeyrHjLTQ2NHDo8BH8fi9uPXOVatt2e8Kw2LPjIE1NjWzcspm6xiY0RcFVUohuaOzZfRhFyXwcDh46AK6TT1q+OO5sbNOEQA7BkgI++XgzdUfraWxsYOu2LYTyhxPKBVdhGdVVo3j1hZcJx9NMaO/jCpaX0nysgSNHI3g9HhobGmhqrScVbYPcfG6++WamV45gw6admGaHk0t/AE3X+ST72dnJJ3v3oNlAMERwWB4bO3wGtm3bRl5h5jNQWlVFPHqMTzdvoHLUhZw3cjRH9tWydfs+qqrLO/+en/8R5ISuXSYeYMKkGmKNe3hx7XvUTJ+Jrrsw0ya2aYGuk1s5gt3bPmPP3qM0NTezZctGXEYuw0s1MALUTJ3Ch2vWUrv/CJOnjgfAX1FGPNzGgf2NuN0GkXCYI/V1dDp/UVRKq8dwZPcetmzbT3NzE03NbdjDhuMLeVn/4Sc0NDZy/PgxduzcTfGIMnxeMNP257mrqzhu/7eqqkQiTWzc+C7Nzc1s/Wg9reE4ZRV+IJNn7YCfnLJh1B2oo6U1gcfj4UhdHZFEG2gqpmVl9qupGVdpEdgme/cexeXSMVNJDtUdQu1wsjsQ9fiVqG1ZmKaJ3X6pWD1tOtUffsCzz6zm7ru/zfVfv47HH1/Ftk/fR3dpVE+ayriqMSy45goefXQ5P7v3XipHjcKEbGE5sTk3079ln7C9zP+bpoWZToGqsfCqxax8/An+++f34tZ1ckL53PJXf0XmBM1FzeSJvPn791lw5dUMLyoAYOqM2ezZe4jf/38/o6R4GBYqS5cupeHADu5/djX5BXlEojGuvHoJ6glj100zjZnuOCrSJJ1KgsfL5VcvYtmKJ7j359sZPWoUitud/b2s9t8h+3OWhfO/OaPHkJvj5Q/338cVi69jwbyLe+hIDQ4ul5v9tRv43W/3k0gkcBtevn7jTXg9kEyaqOk0Kirzvjqf5StX8j+HNzJq1Cg0Xc/0i2p+rlm8mCeeXMWO7R9h6C6qqicyZuzYTts5fdyZmKkUtqoy/2tXs3LlSn75i0zcBYIhlt5yJ7oCoDJ9yiRee3stcxcspKx4OAATp85k2t4DPPD7eykpHo5lww033UTLsSP89qlnyCvIJ9zWyteuuCU74hgAj48F11zBssce52f33svoUZWkUbAtE1SVy6+8hpWPr8x8Blw6odx8lv5VZtqFHiwk4PdRe7iBwmEedG8RKTONaSmUFeW0/16dY9OyTNLmwO7D6gmWZZFOmyRTSXJz8pgyYTzJ3ccZP34MYJE2TUwlha0ozLpwHgfrGvjd736O1+NF01S+fsO3yPdlWjtm1Ezh+VdeoWLsRCZOGAfAiIpxXHrpxTz5+B9Y88YwLNvkq/Mvp7K8czfS+XPmcujwcf73of/BY7ipqJzON755A9defz3LH3+Ke+/9BFWBktJRXPG1RYBJOm1iZUdv25immR0vYNsW6XS6/aRJwe12s2PbRv7y4bs0NzWz4GtXMDw3hyN7kpipNAnT5oKLvkrtwSP84uf/xfBhhbjcBjd/4xsQDFI5aRJPrV5NpKWZv77tVhZfew1PPf00fQ4n6gAAFX9JREFUG9a/iaYq1MycRdWYgT1ITbF7+LQyHYlwtKmZYcP///bOLDiO67r7v559wTaYwezYCYA7RYoUqYWUZDqyaJGWK4oSR6kkfktSlaSS9+/BL5+fv0pKKctKLImUZJuWSa1cJZGWRAskQRIUN2wEsRIYzL729DbzPQw4AERSphjKZdr9e8LgTKPvxT3dp+/tc8/fh3l+2SyXyxKNxgiFwlgsZuYis8QTSSxWK6FQCNv8dD4WnSOeSOL3+ymXSoiSjN/vWxJEZanIbGQOjyeAw2FGyeeYS6Ur5zOZSCZiSEoJv6+yXJDP57h+/Tog4A8Eq8sWAEVJZHYmgsvVSH193UIfFIWJyQkkScbV6Mbv86KIIuPT08iyjMfrxevx3NT3ucgsBpMFj7uSBp5KJub74EcAMukUiVQaX1MT+97Yg+Zw8Xd/85fEY1HUkgGftxLI4/EoqgY+bxNQSY2PxeK4vV4aG+7/lPB7SSaTJhaNVW/sHk9TdYvKl8djanISUZIIBoPkMllsdnt13KNzEeLxBGaLlWAoiN22dDlXkSVmZiO43X6cTgtqIU8kkaLJ58ViNpNKxhGLKv5AxV8LhTzT09cB8PkD1C3aFiLJRWavz1Lf4KJh0XhqmsrE+ARFSaLB1UjA70MtFhmfnkKSZNyepqpPfJmFaydAqaRRlGQC8wH6q66B6NwcsqISDAUQEIhEZtG0Mn6/H4NBqPhwUcHn82EwQDqdJJstEAiHuM8nEP8rMukUmWwOn8+P2Wwim8siFWU8nso1PBeZpSwY8Hkr9yFFUZicnEBRVDxNXtyLtlFpJZXrU9ex2Z00zT/M32ByYoJcPk9NbS3BQGDJsnD1eE1jenqKQkGkrt5FMFAZ93Q6RSQSwWg0EQyF5n26zOzMDEazgyZPA2gqkdkItro66mtrkaQCc3MJAsEAVy6eZd/+w7zwt/+AUEphtdlpbg4DlWITyVQGXzCA2WCgKBaYmppG1TQ8Td7qNaeqCtNT0yAYCLe0YBRg5vo0qXQGm91OKBjEYrm/93Lf8yCqc2smxsdQtBIWs5nhwSt89NFxnnvhb9iw5v5O79bR0fnj5PzZXvb+6iD/9K//h3Dg5r3JOhXu+XKuzq0ZHRrk096TqKpGuSzw1K5nWa8HUB0dnT9QTGYzzhonlQRPPYjeDn0m+ntCU1UKokipVMJisWK335z9qaOjo/OHgqaqSLKCzWa7Kf9DZwE9iOro6Ojo6Nwl+oYvHR0dHR2du0QPojo6Ojo6OnfJNxZEC5kM+cKdVdg82/cJL/7kp+Q0DcplRFGs6meOXR1m96tvEIvfH3qaF7/o5T9e/C9Sv0Nn77aUSmSSSVR9K97XIpfOULhD6bzeEx/yk/9+heJ8fVlRFOdr6cLwwGX27PkFqfT9oWR75vQnvPjSy5Vr527QNDKJJNr90V0dnT84vpEgmolO8/r/vMr07J1V2Kmta6SluRmz0Ug5FuH1V17l6tgkUJECunp1FEn+Jlp676mpbaC1pQXT3ZZG0xQ+fu89Dn3Ud28b9kdMYvoab7yym2j8zh5c6hrctISDmARQrk+z+2evMDlfQDyTTjF6dQxFvT8SKerqXbSGwxiFu2yvInNw334+/vTCvW2Yjs6fCPc8iJYpc+TYx9SHu+lqq5nPSL1hLCNLcrXKi6IoSJJIV/dqdj2zA7OmkZiZYWJ8gkw6TbFYxGA0YrPZMBpBLBQQxeItz1uUJYrSwmy1rKrV2SzlMsWiiKoqyLJMiRJaSUNRKrMPRZZJp9MUCoXq8ZqmIs3PJkVRpFAQb28TF2xt7ct5dtdOauYr4txoQz6fR7rFk0Dl9xKlUqnyN81WHn36SQYuHOfq2PjX+df/SVIqaxz8+GO87atoCdlu8jdJkrlR8FaRZSSpyMpV6/nu099B0DTiM9NMTEySzmQpShJGoxGb3YrBAIVCgWLxNv4mSUiL/K2kKFV/Ki/2N0mmRBlVU6uzXVmSSKVTiIv8RlMX+VShcLNNlm9p6+pew85ndmA3GFBVZYm/yfLNqzf5XA5JltE0rXI+m53Hnt7G+b4jTMwXh9DR0blzjD/60Y9+dC//YD4ywYfHz/LMszuxmcu89tJLiLhpbXYzfraPF//7FULLunDX1/Hh3r2MzBWQc1F+/c4BGrwe9r79DpFkkqsjQ8glgUa3i+HBKyhKlgMfvM8Hhw5T0+AiHAiy+OH78qnPeWv/UXpWrcVmhv2vvcqn5y6y8cH1aDNTvPzaXvzhZj469D4XRwc4fuxD0hkZT52D119/nd7Tp/nNseMoGGlrCTM6cplXXtlNIhHn6JHDHDhwEIPFQXtrmJGhy7z66m4SiQRHDx/mwIFDGK0O2lubGbzcz+49v2Tt5s1cOdPHvrffJhqJ8Pb+/Rz/9DMC4RY8jS6KYoF9b/2KvXt/xdDVq5zuO0V//0XWbFhPfW0Ds4NXmM3Dyu72ezk8f3Skpq/yyeeX+d6f70JQRH72k5+CLUg42MBQ7wleeu112pevoL7GyQdvvMFMrkQ6NsH7Bz+i1u3iF/vfJpFOMzw0QMloob6uhpHhQYrFNO+/9w6Hjn6Iy+MlOF/95wb9nx7j3YOfsWLdWkyCyi9ffpm+wVE2rFtDcXyUn735NqGWFg6+s5/B6RGOHj6CpBiosxjYs+d1TvX1cfzYcQSLjZbmEFcu9rN7z5skkgkOHTjAoSNHsTnraQkHuXzhLHte/znJZIyDBw5y+MhRrDUV2/mzJ/nlW++yfvMmzp74jPc+OMjszAz73nqLE70nCbe20dhQTyGfZ+8v3uStffsZGR2lt/dzLg8Ms27DAzTUNTJx4QsSqpWezi/rVero6HwV93wmem3oKo5aLx5PAxabnSang4HBXgAuTIwTmYswcz2FKEqMTEwQDHajaSrJZJLGJi9PP7KFOruDrU88yZZND2Iol0mlUqQyeb67cxcb21s4cvAwmUWzRoDuYJB0fIJIbApZynN5cpKZ6RlyRRgav4qimWlqCpLLpzn32/O0tvSwcmU3lMo8snUbL7zw12x+aC3Hjh4hlc8jCBCJRMjkijz1nR08+cQWDr33DhNTKQRBIBKJkM0XeerpHTzx+EMcfPdtJqdTlMuQy+UoCwKKKjM1NY3J5uT7f/4cLTU2PvjgAAC9J45xpn+A7z/3Vzyx9VGS0RjpTLY6S3/ggZXMTV1HusVsQmeBqwMj1LlCNLqcOGprcNksDAyfAuCL8TEikQgzkSz5XJZrU9cJhXpQFJlkMonX6+PpLZupsTv41van2Lh+HUKpRCKeIC/K7Pres6wJ+jh08BD5L60idIfCxCKjxOIRCrkMg1PTzE7PUJThyugwZcGOu9FPJpvk3Gdf0N21mp6uDsoIbHvyW7zw1y+w4YHlfHjoMHlJokyZ2dkZxKLCjp07efTh9by3bx+zc3nKwOzMDGJRY8fOnTyy5QHe27ePSDRPqVSq+BsgyzKTk1PY6+p57vnncRvhwMHDABz/6CCXBib4i+d/wKNbHiIeiZDJ5qqF5deuW87M+CSq/jJeR+drcc8rFo3F0zgaTFiNAAY8yzoY6R8imypQLBRYt/kBZsdHiPmtFE0mOjpqGB8EgyDgcDhY1daGzWKls7MLb5OH+OwUZrOTRx7dRWebgzqLwqU33kWUZOqdjup5zYEgta56pq8nsYsigZZmCgWJqfFhxuJJfM0unHaQJIlw81qe3fldAAq5LKnEAP3958lkEmiKQl6WKQMOex1bt+2kNeyks72Zk7/tY3wyh7ehjNNRx7ZtO2kOOehsD3Py8zOMT+bw1BkrBcLLZcolDbc7xNZt23HaQM1FeOvw50jZDDMDI6zb+CCbN1V0AJNjY3w2cLUaRE1uF5IYJV8QsVr0aiG3YyyeprbRUanjKpjwdLZyZXSOXDKPqiis3biGmWuDNNXIqDYLrS12LkYrkmA1Dger21p512JlWVc3Te5Gpq8NY7M38NjW7xEOmLCU8ozsP0pRlnFaF2p8WpvDOGqdXJ9JohkVWro7yGclpiZHGU+mCLU24rCDLBdp79zIzh3fASCfSRO7fIWz586SSsZRFJm8rABlamtcbHv8ewS8ZlqCPk739jMxlcdmKFNb28i2x3fh95ppDng5dfI8E1MFLAZjVQ2oVFLx+Vp4fOsTWEyQmZvgaO8l1FyG2ZFrbHx4Mw9uWAdAZHiIL6ZjlZVuAczuRsTcF4hFidoaBzo6OnfGPZ+JlrTSErmeVW1tWDSVE73nUE1mNm/eSC4bZ2hoAJe7nXqHnVKp8q6oBMhK5Z3pDeWIchlsdjsOe+UGJlHGZDQuEVwGMFrsrG1rZnRolL5LQyxbsZz2thBjo0Mkkhna29dVuxwIV4ojI0vs/8Wb9J45zwPrN7D1sYcxGY1o80odRqMRk7Fy3lIJLBYLFkvlvAajEeMNmzZvMws3SbcZjSZuCCYogoDRYKCsqqCVcTjt1e9ZTUufZwTBQBmBckmvhfFVlLQSBtPCf31tRweIRT7r7cdgd7Jp0wZSqSgjV4dp8nbjsJgrkmVU/E2Sb/jbQnqqw2HHZq2MhyxwS3+z2mtZ3RJk8NIw5wausnz1aprDPkZHBklnRNrb1wAaCCYCzfP+VhT55Z7d9F8a4MGNm3jskYcwIFAq3/A3E0Zj5YGpVBaW+NtX2RZjNJqrCkCqQcBgMFBWNYRSpV83sBhNS+SRDIJQ8Te99oqOztfingdRd52TYq6EOn9PcjeHqHEa+fy3h/D617OydSU2SeSTE2cIt1cUAUra4gtXQFEUstlsNdGionFXqv58OzpXLmdyrJ/J6QgrOjexMRTm/Nl+IrE07V0t3BDONjvm7x5ykdT1CO2d3axauRxDOk1eFDEIAgbBQKGQYWDwNKIoMn75Isl0nmCLA6NRIJ9fsI1dvkgqnSfY6gChvKSJNzQHq20vl8Fmw+RwMDg4QC6fJxWPc25kBIMgVG/WJTGP2eTAZr+/BWu/adx1DgoprbosGWhrwWpVOXnyKMHQJla3LkfIpjnxeT+tyyoyUtriBxNBQFFkstlMNXmnfKf+tryb0eFTzEbTrOrcwIZAgNOn+khlRVo7moESAgYsN/xNLJCcjbJsxUpWdHdBMokoSwiCgCAYyOaSDA72IYoi1y5eIFMQCTTbMRoEstkEg0NnqrZsoYg/XFHlWNzCm/2thGCzYbBYuDJ4hXy+QDw6x4WxaxgFQzWvQBPzWCxOrNb7W1FDR+f3zT1fzl3RHuZU/zXSaRG3yw4mB263m8/7+mn0ODE7bBhtZmYjUVrDFVknVVUpShKlUhlzkw9PUyNv7nmN6I5naAk2VTIc5+9ppZJGsVi85RNzvS+MJhXJiQUaG62o5QBzkRlau914GyxAJQNWlub3r9qdtK9awdHffMT02BBmo6GirVcuIxgMmEwG+s+eoO/kp0Qjczy89XGamxoZjE1iMho4d+YEp3s/mbc9Qdjj4sL0cKV9LGRc3miqpqoU8wVki42Htm/nyu7X+PH//TEtzc0kcgXMVmd1djB2cZgGXwsOvcbuV7Kyo5kvhs6Ry0nU1ljBWkdDQwPnLlzB7a3BUldL2SgQjSZoC1VkptT5cSkBVn8QV0Mtr77yMjt2fR9PvR2puGjMtNv7myvYilTII6oS9Q0WDMEAszPTrPI343IKUJ73N3ne32pqaV/Rw8eHDnBt4BJCSaU0r0lqMBgwGgVOn/wNJ35zlFg0xrZv/Rm++hoipRJGA5zqPc5nx48Qi8Z4fHvFNiEVKUoSZSqyU5IkV9uuqgrFQgHFZufRp77Nnjd/zo9/XPG3tChRV78gzzZ2cQR3sF1/daCj8zW593qimsTPXn6Zzp7NbH9yEwCxuTkisRidyzqxWazMzc0SiyfpaO/AZrOSSsaZiyXpWNaJSRBIxGOMjU/g9QWor3MyMxOhpaUTm81APpdmajpCW0c7VvPSC15TVa5dG8VstdPa0kyprDEyNIzdWUtzOASUuTZ6DZuzhsC83qgkFRkeGq6oxIcCRCNzNHd0MD58ib173+e5v/ohqhzDYnXQ09ON0SBw8Ys+fv3rg/zFD36IIsWwztsMBoFMOslsJEpHVzfZRIx4IktbezsmEyQTUSJzCTq6u7AYDKSSCSYmpwgEglzqPUHfyAT//m//AqUC//H/XmTr9u+w8YG193J4/uiQ5AL/89OfsmbDdrY+sgaAyOwM8WSKzmXLsJrNzMxMk0rn6OjowGoxk4hHiSczdCzrxEhFi3NiYgp/KIzTbmEuEqOlrROrRSCbSTIzG6WtoxOLaamWo6oojI6OYq+poTkUQtUUrg6PUFPXQCgYAEqMjozibHDhm9eZFMUCI0PDGM0W/AEfc5EobZ2dDFw4zbvvHeP5H/yQYn4Wu7OGnu5uBAHOnP6MAwc+4fkf/D1iPoLDWUt3TxcCkEzGicaSdHYtIzkXIZ0VK6LjRojHIsTiGTp7ujABiViUqeszhMJhTn/8IUOzCf7ln/8RuZjmP//zJZ7a+SxrV/T8XsdPR+d+557PRE1GK99+civv7P+I5StWEPLX4PF68cyL0wJ4vX68Xn/1c4PLTYNrQYy20e2h0b0gel1buyCY7aypp6fn1sLURpOJZV3d1c8GwUh3z/JF3xBo71iqom612li9Zs3CuV2V91eaVtlHWl/vozm0NO2/XC7P2/yEg0ttdfUu6uorgrsutwfXon64GptwNVZm34l4jKKk0NraSmR2hk9P97F2y1aMQplD7xygwdfFurWrb9lPnQWsFgff2vowhw4fo6enC6/bhs8fwOcPVL8TCIQILHyk0d1Eo3tB3NrT5MXTtOCf9fUN1Z9r61zU1i0IKC/GZDbT3bMQdExGMz3LVyz6hoGOZcuWHGO3O1izbl3185f9zdUYwN8TXHJMxd80XI1BlveElthcLjeu+WvH4/XhWegGbo8Pt6eyNScWjaKoGq2trUxPTdB77jxbtj+FUNI4uP8DAq2rWd3TjY6OztfjG9ET7ehZy85nDAjC/VuaVxAEjEYjmqYAlq+w3d3y18S1UT44dBhJVigWJdY9+BB/9u0ngDLtHV082LIS891WPfoTY/majQiCA8r3R5WhWyEIhq/wt9vb7pTR4QEOf/gxiqpRlGQ2bXmEJ7Y9BuUy3ctX4e9Yo8td6ejcBboU2m2QZYlcNk9dfQMmk+E2Nhcm093deBRFIZ1OoygKZrMZt8dzU2avzp8OklQknxcr/mYU7th2pyiyTCqdRlVVzGYLHo/7dx+ko6PzO9GDqI6Ojo6Ozl2irxfq6Ojo6OjcJXoQ1dHR0dHRuUv0IKqjo6Ojo3OX6EFUR0dHR0fnLtGDqI6Ojo6Ozl2iB1EdHR0dHZ275P8DngxITpAUs2UAAAAASUVORK5CYII=\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":2700,"title":"Simulate one complete step in the Biham–Middleton–Levine traffic model","description":"The \u003chttp://en.wikipedia.org/wiki/Biham%E2%80%93Middleton%E2%80%93Levine_traffic_model Biham–Middleton–Levine traffic model\u003e is a simple cellular automata model loosely mimicking traffic flow. In an m-by-n domain, we see white empty space (or 0 in our matrix representation), red cars (1 in the matrix), and blue cars (2 in the matrix).\r\n\r\nAssume the space is toroidal. That is to say, the right side connects with the left, and the top connects to the bottom. So a red car that moves off the far right of the matrix re-appears on the far left.\r\n\r\nHere is a 4-by-4 version with three red cars and two blue cars.\r\n\r\n     0     0     0     2\r\n     1     1     0     0\r\n     0     0     2     0\r\n     0     0     0     1\r\n\r\nRed cars always move to the right if they are unblocked. A red car can move either into an empty space or a space being vacated by a moving red car.\r\n\r\nAfter we move the red cars (1s) we will have this matrix.\r\n\r\n     0     0     0     2\r\n     0     1     1     0\r\n     0     0     2     0\r\n     1     0     0     0\r\n\r\nWe're only halfway through the process. After we move the blue cars (2s) we end up here.\r\n\r\n     0     0     0     0\r\n     0     1     1     2\r\n     0     0     0     0\r\n     1     0     2     0\r\n\r\nThis last value of the matrix would be the return value of your function. Assume that red cars always move before blue cars.\r\n\r\nFor some visualizations of Biham–Middleton–Levine traffic, see this very nice \u003chttp://www.jasondavies.com/bml/#0.61/769/512 simulation site\u003e.","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: 859px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 332px 429.5px; transform-origin: 332px 429.5px; vertical-align: baseline; \"\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: 309px 31.5px; text-align: left; transform-origin: 309px 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eThe\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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://en.wikipedia.org/wiki/Biham%E2%80%93Middleton%E2%80%93Levine_traffic_model\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eBiham–Middleton–Levine traffic model\u003c/span\u003e\u003c/span\u003e\u003c/a\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 is a simple cellular automata model loosely mimicking traffic flow. In an m-by-n domain, we see white empty space (or 0 in our matrix representation), red cars (1 in the matrix), and blue cars (2 in the matrix).\u003c/span\u003e\u003c/span\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: 309px 31.5px; text-align: left; transform-origin: 309px 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eAssume the space is toroidal. That is to say, the right side connects with the left, and the top connects to the bottom. So a red car that moves off the far right of the matrix re-appears on the far left.\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: 309px 10.5px; text-align: left; transform-origin: 309px 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 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eHere is a 4-by-4 version with three red cars and two blue cars.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 80px; border-bottom-left-radius: 4px; border-bottom-right-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: 329px 40px; transform-origin: 329px 40px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     1     1     0     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     2     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; 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: 309px 21px; text-align: left; transform-origin: 309px 21px; 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eRed cars always move to the right if they are unblocked. A red car can move either into an empty space or a space being vacated by a moving red car.\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: 309px 10.5px; text-align: left; transform-origin: 309px 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 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eAfter we move the red cars (1s) we will have this matrix.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 80px; border-bottom-left-radius: 4px; border-bottom-right-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: 329px 40px; transform-origin: 329px 40px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     1     1     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     2     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     1     0     0     0\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: 309px 10.5px; text-align: left; transform-origin: 309px 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eWe're only halfway through the process. After we move the blue cars (2s) we end up here.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 80px; border-bottom-left-radius: 4px; border-bottom-right-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: 329px 40px; transform-origin: 329px 40px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     1     1     2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     0     0     0     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-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-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: 329px 10px; transform-origin: 329px 10px; 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 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e     1     0     2     0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; 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: 309px 21px; text-align: left; transform-origin: 309px 21px; 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: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eThis last value of the matrix would be the return value of your function. Assume that red cars always move before blue cars.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 220px; 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: 309px 110px; text-align: left; transform-origin: 309px 110px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: baseline\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\"\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: 309px 10.5px; text-align: left; transform-origin: 309px 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 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eFor some visualizations of Biham–Middleton–Levine traffic, see this very nice \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"http://www.jasondavies.com/bml/#0.61/769/512\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003esimulation site\u003c/span\u003e\u003c/span\u003e\u003c/a\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\u003c/div\u003e\u003c/div\u003e","function_template":"function a_out = traffic_step(a_in)\r\n  a_out = a_in;\r\nend","test_suite":"%%\r\na_in = ...\r\n  [0 0 0 2\r\n   1 1 0 0\r\n   0 0 2 0\r\n   0 0 0 1];\r\na_out_correct = ...\r\n  [0 0 0 0\r\n   0 1 1 2\r\n   0 0 0 0\r\n   1 0 2 0];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in = ...\r\n  [0 0 2\r\n   2 0 0];\r\na_out_correct = ...\r\n  [2 0 0\r\n   0 0 2];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in = ...\r\n  [1 0 2\r\n   2 0 0];\r\na_out_correct = ...\r\n  [2 1 0\r\n   0 0 2];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in = ...\r\n  [0 0 2\r\n   1 1 1\r\n   2 0 0];\r\na_out_correct = ...\r\n  [2 0 2\r\n   1 1 1\r\n   0 0 0];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in = ...\r\n    [0     2     2     2     0     0\r\n     1     1     0     2     0     0\r\n     0     0     0     0     2     0\r\n     1     1     0     1     1     2\r\n     0     0     1     2     0     0\r\n     0     0     0     2     0     1];\r\na_out_correct = ...\r\n    [0     2     2     2     0     0\r\n     0     1     1     2     0     0\r\n     0     0     0     2     2     0\r\n     0     1     1     1     1     0\r\n     0     0     1     0     0     2\r\n     1     0     0     2     0     0];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in =  ...\r\n    [0 1 1 1\r\n     0 0 0 0];\r\na_out_correct = ...\r\n    [1 0 1 1\r\n     0 0 0 0];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n\r\n%%\r\na_in =  ...\r\n    [0\r\n     2\r\n     2];\r\na_out_correct = ...\r\n    [2\r\n     0\r\n     2];\r\nassert(isequal(traffic_step(a_in),a_out_correct))\r\n","published":true,"deleted":false,"likes_count":7,"comments_count":0,"created_by":7,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":36,"test_suite_updated_at":"2014-12-04T15:56:53.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2014-12-01T23:45:31.000Z","updated_at":"2026-03-29T06:52:52.000Z","published_at":"2014-12-02T19:28:14.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\u003eThe\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/Biham%E2%80%93Middleton%E2%80%93Levine_traffic_model\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eBiham–Middleton–Levine traffic model\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is a simple cellular automata model loosely mimicking traffic flow. In an m-by-n domain, we see white empty space (or 0 in our matrix representation), red cars (1 in the matrix), and blue cars (2 in the matrix).\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\u003eAssume the space is toroidal. That is to say, the right side connects with the left, and the top connects to the bottom. So a red car that moves off the far right of the matrix re-appears on the far left.\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\u003eHere is a 4-by-4 version with three red cars and two blue cars.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[     0     0     0     2\\n     1     1     0     0\\n     0     0     2     0\\n     0     0     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\u003eRed cars always move to the right if they are unblocked. A red car can move either into an empty space or a space being vacated by a moving red car.\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\u003eAfter we move the red cars (1s) we will have this matrix.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[     0     0     0     2\\n     0     1     1     0\\n     0     0     2     0\\n     1     0     0     0]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWe're only halfway through the process. After we move the blue cars (2s) we end up here.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[     0     0     0     0\\n     0     1     1     2\\n     0     0     0     0\\n     1     0     2     0]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis last value of the matrix would be the return value of your function. Assume that red cars always move before blue cars.\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=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\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\u003eFor some visualizations of Biham–Middleton–Levine traffic, see this very nice \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.jasondavies.com/bml/#0.61/769/512\\\"\u003e\u003cw:r\u003e\u003cw:t\u003esimulation site\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\",\"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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\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":42633,"title":"Cumulative maximum of an array","description":"Find the cumulative maximum of an array without using the built-in function cummax (and a few others). Your function should act identically to cummax, allowing the same inputs.\r\nExamples\r\nIf X = [0 4 3\r\n        6 5 2]\r\n\r\ncumax(X,1) is [0 4 3  and cumax(X,2) is [0 4 4\r\n               6 5 3]                    6 6 6]\r\n\r\ncumax(X,1,'reverse') is [6 5 3  and cumax(X,2,'reverse') is [4 4 3\r\n                         6 5 2]                              6 5 2]\r\n\r\nAlso,\r\ncumax([8 9 1 10 6 1 3 6 10 10]) returns [8 9 9 10 10 10 10 10 10 10]\r\n\r\ncumax([8 9 1 10 6 1 3 6 10 10]') returns [8 9 9 10 10 10 10 10 10 10]'\r\nSee also cumin.","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: 378.633px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 189.317px; transform-origin: 407px 189.317px; 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: 234px 8px; transform-origin: 234px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eFind the cumulative maximum of an array without using the built-in function\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\u003ca target='_blank' href = \"/#null\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003ecummax\u003c/span\u003e\u003c/span\u003e\u003c/a\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: 107px 8px; transform-origin: 107px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (and a few others). Your function should act identically to cummax, allowing the same inputs.\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: 33.5px 8px; transform-origin: 33.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eExamples\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 265.633px; 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 132.817px; transform-origin: 404px 132.817px; 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: 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; perspective-origin: 12px 8.5px; transform-origin: 12px 8.5px; \"\u003eIf \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: 40px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 40px 8.5px; \"\u003eX = [0 4 3\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: 56px 8.5px; tab-size: 4; transform-origin: 56px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e        6 5 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: 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: 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: 184px 8.5px; tab-size: 4; transform-origin: 184px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 56px 8.5px; transform-origin: 56px 8.5px; \"\u003ecumax(X,1) is \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: 128px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 128px 8.5px; \"\u003e[0 4 3  and cumax(X,2) is [0 4 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: 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: 188px 8.5px; tab-size: 4; transform-origin: 188px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e               6 5 3]                    6 6 6]\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: 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: 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: 264px 8.5px; tab-size: 4; transform-origin: 264px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 40px 8.5px; transform-origin: 40px 8.5px; \"\u003ecumax(X,1,\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: 36px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 36px 8.5px; \"\u003e'reverse'\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 20px 8.5px; transform-origin: 20px 8.5px; \"\u003e) is \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: 168px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 168px 8.5px; \"\u003e[6 5 3  and cumax(X,2,'reverse') is [4 4 3\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: 268px 8.5px; tab-size: 4; transform-origin: 268px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e                         6 5 2]                              6 5 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: 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: 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: 20px 8.5px; tab-size: 4; transform-origin: 20px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eAlso,\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: 272px 8.5px; tab-size: 4; transform-origin: 272px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 160px 8.5px; transform-origin: 160px 8.5px; \"\u003ecumax([8 9 1 10 6 1 3 6 10 10]) returns \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: 112px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 112px 8.5px; \"\u003e[8 9 9 10 10 10 10 10 10 10]\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: 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: 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: 280px 8.5px; tab-size: 4; transform-origin: 280px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 164px 8.5px; transform-origin: 164px 8.5px; \"\u003ecumax([8 9 1 10 6 1 3 6 10 10]') returns \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(196, 0, 0); border-block-start-color: rgb(196, 0, 0); border-bottom-color: rgb(196, 0, 0); border-inline-end-color: rgb(196, 0, 0); border-inline-start-color: rgb(196, 0, 0); border-left-color: rgb(196, 0, 0); border-right-color: rgb(196, 0, 0); border-top-color: rgb(196, 0, 0); caret-color: rgb(196, 0, 0); color: rgb(196, 0, 0); column-rule-color: rgb(196, 0, 0); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(196, 0, 0); perspective-origin: 116px 8.5px; text-decoration-color: rgb(196, 0, 0); text-emphasis-color: rgb(196, 0, 0); transform-origin: 116px 8.5px; \"\u003e[8 9 9 10 10 10 10 10 10 10]'\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: 27.5px 8px; transform-origin: 27.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eSee also\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\u003ca target='_blank' href = \"/#null\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003ecumin\u003c/span\u003e\u003c/span\u003e\u003c/a\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\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = cumaX(x,varargin)\r\n  y = x;\r\nend","test_suite":"%%\r\nfiletext = fileread('cumaX.m');\r\nassert(isempty(strfind(filetext,'max')))\r\nassert(isempty(strfind(filetext,'cummin')))\r\nassert(isempty(strfind(filetext,'cummax')))\r\nassert(isempty(strfind(filetext,'feval')))\r\n\r\n%%\r\nx = randi(100);\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n\r\n%%\r\nx = randi(100,randi([2 100]),1);\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n\r\n%%\r\nx = randi(100,1,randi([2 100]));\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n\r\n%%\r\nx = magic(10);\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n\r\n%%\r\nx = [];\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":5,"created_by":4793,"edited_by":223089,"edited_at":"2022-10-09T10:09:17.000Z","deleted_by":null,"deleted_at":null,"solvers_count":42,"test_suite_updated_at":"2022-10-09T10:09:17.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2015-09-23T19:36:49.000Z","updated_at":"2026-03-29T06:57:19.000Z","published_at":"2015-09-23T19:38:39.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\u003eFind the cumulative maximum of an array without using the built-in function\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=\\\"\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecummax\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (and a few others). Your function should act identically to cummax, allowing the same inputs.\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\u003eExamples\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[If X = [0 4 3\\n        6 5 2]\\n\\ncumax(X,1) is [0 4 3  and cumax(X,2) is [0 4 4\\n               6 5 3]                    6 6 6]\\n\\ncumax(X,1,'reverse') is [6 5 3  and cumax(X,2,'reverse') is [4 4 3\\n                         6 5 2]                              6 5 2]\\n\\nAlso,\\ncumax([8 9 1 10 6 1 3 6 10 10]) returns [8 9 9 10 10 10 10 10 10 10]\\n\\ncumax([8 9 1 10 6 1 3 6 10 10]') returns [8 9 9 10 10 10 10 10 10 10]']]\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\u003eSee also\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=\\\"\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecumin\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\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":42504,"title":"Data Regularization","description":"Provided is an m-by-n integer data matrix A whose elements are drawn arbitrarily from a set *S* = [1,2,3,...,S] for any large integer number S \u003e 1. The \"arbitrary\" manner of drawing integer numbers implies that each column of A might contain only a subset of integer numbers from *S*. Our objective is to regularize the data in A subject to the following rules: \r\n\r\nFor each column in A, \r\n\r\n* The smallest number or numbers (if there are more than one such number) are mapped to 1; \r\n* The 2nd-smallest number or numbers (if there are more than one such number) are mapped to 2;\r\n* The _k_ th-smallest number or numbers (if there are more than one such number) are mapped to _k_ .\r\n\r\nFor example, *S* = [1:8] with S = 8. Suppose the input data matrix A is \r\n \r\n  A = [2  6\r\n       5  3\r\n       5  6\r\n       3  7]\r\n\r\nThen the output matrix B is \r\n\r\n  B = [1  2 \r\n       3  1\r\n       3  2\r\n       2  3]\r\n\r\nPlease try to avoid for or while loops. Vectorized code will be more appreciated. ","description_html":"\u003cp\u003eProvided is an m-by-n integer data matrix A whose elements are drawn arbitrarily from a set \u003cb\u003eS\u003c/b\u003e = [1,2,3,...,S] for any large integer number S \u0026gt; 1. The \"arbitrary\" manner of drawing integer numbers implies that each column of A might contain only a subset of integer numbers from \u003cb\u003eS\u003c/b\u003e. Our objective is to regularize the data in A subject to the following rules:\u003c/p\u003e\u003cp\u003eFor each column in A,\u003c/p\u003e\u003cul\u003e\u003cli\u003eThe smallest number or numbers (if there are more than one such number) are mapped to 1;\u003c/li\u003e\u003cli\u003eThe 2nd-smallest number or numbers (if there are more than one such number) are mapped to 2;\u003c/li\u003e\u003cli\u003eThe \u003ci\u003ek\u003c/i\u003e th-smallest number or numbers (if there are more than one such number) are mapped to \u003ci\u003ek\u003c/i\u003e .\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eFor example, \u003cb\u003eS\u003c/b\u003e = [1:8] with S = 8. Suppose the input data matrix A is\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eA = [2  6\r\n     5  3\r\n     5  6\r\n     3  7]\r\n\u003c/pre\u003e\u003cp\u003eThen the output matrix B is\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eB = [1  2 \r\n     3  1\r\n     3  2\r\n     2  3]\r\n\u003c/pre\u003e\u003cp\u003ePlease try to avoid for or while loops. Vectorized code will be more appreciated.\u003c/p\u003e","function_template":"function B = regular(A)\r\n  B = A;\r\nend","test_suite":"%%\r\nfiletext = fileread('regular.m');\r\nassert(isempty(strfind(filetext, 'for')))\r\nassert(isempty(strfind(filetext, 'while')))\r\n\r\n%%\r\nA = 1;\r\nB = 1;\r\nassert(isequal(regular(A),B));\r\n\r\n%%\r\nA = [2     6\r\n     5     3\r\n     5     6\r\n     3     7];\r\nB = [1     2\r\n     3     1\r\n     3     2\r\n     2     3];\r\nassert(isequal(regular(A),B));\r\n\r\n%%\r\nA = [10    2     4     4     2\r\n     4     5     6     8     1\r\n     6     5    10     3     9\r\n     9     9     5     5     5\r\n     9    10     3     7     8];\r\nB = [4     1     2     2     2\r\n     1     2     4     5     1\r\n     2     2     5     1     5\r\n     3     3     3     3     3\r\n     3     4     1     4     4];\r\nassert(isequal(regular(A),B));\r\n\r\n%%\r\nA = randi(100,80,100);\r\nB = zeros(size(A));\r\nfor iter = 1:size(A,2)\r\n    [~, ~, B(:, iter)] = unique(A(:,iter)); \r\nend\r\nassert(isequal(regular(A),B));\r\n","published":true,"deleted":false,"likes_count":3,"comments_count":6,"created_by":12569,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":50,"test_suite_updated_at":"2015-08-12T07:02:47.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2015-08-12T00:30:34.000Z","updated_at":"2026-04-02T22:09:43.000Z","published_at":"2015-08-12T00:56: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\u003eProvided is an m-by-n integer data matrix A whose elements are drawn arbitrarily from a set\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\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = [1,2,3,...,S] for any large integer number S \u0026gt; 1. The \\\"arbitrary\\\" manner of drawing integer numbers implies that each column of A might contain only a subset of integer numbers from\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\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. Our objective is to regularize the data in A subject to the following rules:\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\u003eFor each column in A,\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\u003eThe smallest number or numbers (if there are more than one such number) are mapped to 1;\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\u003eThe 2nd-smallest number or numbers (if there are more than one such number) are mapped to 2;\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\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:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ek\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e th-smallest number or numbers (if there are more than one such number) are mapped to\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\u003ek\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\u003eFor example,\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\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = [1:8] with S = 8. Suppose the input data matrix A is\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[A = [2  6\\n     5  3\\n     5  6\\n     3  7]]]\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 the output matrix B is\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[B = [1  2 \\n     3  1\\n     3  2\\n     2  3]]]\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\u003ePlease try to avoid for or while loops. Vectorized code will be more appreciated.\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":42590,"title":"Divide elements by sum of elements","description":"In this problem, I ask you to write a function which will divide the elements of each column by the sum of the elements of the same column.\r\n\r\nResults should have 2 significant digits.\r\n\r\nYou cannot use for/while loops.","description_html":"\u003cp\u003eIn this problem, I ask you to write a function which will divide the elements of each column by the sum of the elements of the same column.\u003c/p\u003e\u003cp\u003eResults should have 2 significant digits.\u003c/p\u003e\u003cp\u003eYou cannot use for/while loops.\u003c/p\u003e","function_template":"function y = divideElements(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nfiletext = fileread('divideElements.m');\r\nassert(isempty(strfind(filetext, 'for')))\r\nassert(isempty(strfind(filetext, 'while')))\r\n\r\n%%\r\nx = magic(3);\r\ny_correct = [0.53 0.07 0.4;\r\n0.20 0.33 0.47;\r\n0.27 0.60 0.13];\r\nassert(isequal(divideElements(x),y_correct))\r\n\r\n%%\r\nx = magic(4);\r\ny_correct = [0.47\t0.06\t0.09\t0.38\r\n0.15\t0.32\t0.29\t0.24\r\n0.26\t0.21\t0.18\t0.35\r\n0.12\t0.41\t0.44\t0.03];\r\nassert(isequal(divideElements(x),y_correct))\r\n\r\n%%\r\nx = ones(2);\r\ny_correct = repmat(0.5,2,2);\r\nassert(isequal(divideElements(x),y_correct))\r\n\r\n%%\r\nx = [1 0.5; 2 1];\r\ny_correct = [0.33 0.33; 0.67 0.67];\r\nassert(isequal(divideElements(x),y_correct))","published":true,"deleted":false,"likes_count":2,"comments_count":3,"created_by":8703,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":142,"test_suite_updated_at":"2015-09-09T15:27:51.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2015-09-09T14:33:16.000Z","updated_at":"2026-04-02T10:12:10.000Z","published_at":"2015-09-09T14:33:16.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIn this problem, I ask you to write a function which will divide the elements of each column by the sum of the elements of the same column.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eResults should have 2 significant digits.\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 cannot use for/while loops.\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":42631,"title":"Cumulative minimum of an array","description":"Find the cumulative minimum of an array without using the built-in function \u003chttp://www.mathworks.com/help/matlab/ref/cummin.html cummin\u003e (and a few others). Your function should act identically to cummin, allowing the same inputs.\r\n\r\n*Examples*\r\n\r\n  If X = [0 4 3\r\n          6 5 2]\r\n\r\n  cumin(X,1) is [0 4 3  and cumin(X,2) is [0 0 0\r\n                 0 4 2]                    6 5 2]\r\n \r\n  cumin(X,1,'reverse') is [0 4 2  and cumin(X,2,'reverse') is [0 3 3\r\n                           6 5 2]                              2 2 2]\r\n\r\n  Also,\r\n  cumin([8 9 1 10 6 1 3 6 10 10]) returns [8 8 1 1 1 1 1 1 1 1]\r\n\r\n  cumin([8 9 1 10 6 1 3 6 10 10]') returns [8 8 1 1 1 1 1 1 1 1]'\r\n\r\nSee also \u003chttp://www.mathworks.com/matlabcentral/cody/problems/42633-cumulative-maximum-of-an-array cumax\u003e.","description_html":"\u003cp\u003eFind the cumulative minimum of an array without using the built-in function \u003ca href = \"http://www.mathworks.com/help/matlab/ref/cummin.html\"\u003ecummin\u003c/a\u003e (and a few others). Your function should act identically to cummin, allowing the same inputs.\u003c/p\u003e\u003cp\u003e\u003cb\u003eExamples\u003c/b\u003e\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eIf X = [0 4 3\r\n        6 5 2]\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003ecumin(X,1) is [0 4 3  and cumin(X,2) is [0 0 0\r\n               0 4 2]                    6 5 2]\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003ecumin(X,1,'reverse') is [0 4 2  and cumin(X,2,'reverse') is [0 3 3\r\n                         6 5 2]                              2 2 2]\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003eAlso,\r\ncumin([8 9 1 10 6 1 3 6 10 10]) returns [8 8 1 1 1 1 1 1 1 1]\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003ecumin([8 9 1 10 6 1 3 6 10 10]') returns [8 8 1 1 1 1 1 1 1 1]'\r\n\u003c/pre\u003e\u003cp\u003eSee also \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/42633-cumulative-maximum-of-an-array\"\u003ecumax\u003c/a\u003e.\u003c/p\u003e","function_template":"function y = cumin(x,varargin)\r\n  y = [];\r\nend","test_suite":"%%\r\nfiletext = fileread('cumin.m');\r\nassert(isempty(strfind(filetext,'cummin')))\r\nassert(isempty(strfind(filetext,'cummax')))\r\nassert(isempty(strfind(filetext,'feval')))\r\n\r\n%%\r\nx = randi(100);\r\nassert(isequal(cumin(x),cummin(x)))\r\nassert(isequal(cumin(x,1),cummin(x,1)))\r\nassert(isequal(cumin(x,2),cummin(x,2)))\r\nassert(isequal(cumin(x,1,'reverse'),cummin(x,1,'reverse')))\r\nassert(isequal(cumin(x,2,'reverse'),cummin(x,2,'reverse')))\r\nassert(isequal(cumin(x,'reverse'),cummin(x,'reverse')))\r\n\r\n%%\r\nx = randi(100,randi([2 100]),1);\r\nassert(isequal(cumin(x),cummin(x)))\r\nassert(isequal(cumin(x,1),cummin(x,1)))\r\nassert(isequal(cumin(x,2),cummin(x,2)))\r\nassert(isequal(cumin(x,1,'reverse'),cummin(x,1,'reverse')))\r\nassert(isequal(cumin(x,2,'reverse'),cummin(x,2,'reverse')))\r\nassert(isequal(cumin(x,'reverse'),cummin(x,'reverse')))\r\n\r\n%%\r\nx = randi(100,1,randi([2 100]));\r\nassert(isequal(cumin(x),cummin(x)))\r\nassert(isequal(cumin(x,1),cummin(x,1)))\r\nassert(isequal(cumin(x,2),cummin(x,2)))\r\nassert(isequal(cumin(x,1,'reverse'),cummin(x,1,'reverse')))\r\nassert(isequal(cumin(x,2,'reverse'),cummin(x,2,'reverse')))\r\nassert(isequal(cumin(x,'reverse'),cummin(x,'reverse')))\r\n\r\n%%\r\nx = magic(10);\r\nassert(isequal(cumin(x),cummin(x)))\r\nassert(isequal(cumin(x,1),cummin(x,1)))\r\nassert(isequal(cumin(x,2),cummin(x,2)))\r\nassert(isequal(cumin(x,1,'reverse'),cummin(x,1,'reverse')))\r\nassert(isequal(cumin(x,2,'reverse'),cummin(x,2,'reverse')))\r\nassert(isequal(cumin(x,'reverse'),cummin(x,'reverse')))\r\n\r\n%%\r\nx = [];\r\nassert(isequal(cumin(x),cummin(x)))\r\nassert(isequal(cumin(x,1),cummin(x,1)))\r\nassert(isequal(cumin(x,2),cummin(x,2)))\r\nassert(isequal(cumin(x,1,'reverse'),cummin(x,1,'reverse')))\r\nassert(isequal(cumin(x,2,'reverse'),cummin(x,2,'reverse')))\r\nassert(isequal(cumin(x,'reverse'),cummin(x,'reverse')))","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":4793,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":42,"test_suite_updated_at":"2015-09-24T04:46:57.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2015-09-22T21:12:22.000Z","updated_at":"2026-04-01T07:07:43.000Z","published_at":"2015-09-23T19:24:39.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFind the cumulative minimum of an array without using the built-in function\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/help/matlab/ref/cummin.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecummin\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (and a few others). Your function should act identically to cummin, allowing the same inputs.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExamples\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[If X = [0 4 3\\n        6 5 2]\\n\\ncumin(X,1) is [0 4 3  and cumin(X,2) is [0 0 0\\n               0 4 2]                    6 5 2]\\n\\ncumin(X,1,'reverse') is [0 4 2  and cumin(X,2,'reverse') is [0 3 3\\n                         6 5 2]                              2 2 2]\\n\\nAlso,\\ncumin([8 9 1 10 6 1 3 6 10 10]) returns [8 8 1 1 1 1 1 1 1 1]\\n\\ncumin([8 9 1 10 6 1 3 6 10 10]') returns [8 8 1 1 1 1 1 1 1 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSee also\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/42633-cumulative-maximum-of-an-array\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecumax\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":42633,"title":"Cumulative maximum of an array","description":"Find the cumulative maximum of an array without using the built-in function cummax (and a few others). Your function should act identically to cummax, allowing the same inputs.\r\nExamples\r\nIf X = [0 4 3\r\n        6 5 2]\r\n\r\ncumax(X,1) is [0 4 3  and cumax(X,2) is [0 4 4\r\n               6 5 3]                    6 6 6]\r\n\r\ncumax(X,1,'reverse') is [6 5 3  and cumax(X,2,'reverse') is [4 4 3\r\n                         6 5 2]                              6 5 2]\r\n\r\nAlso,\r\ncumax([8 9 1 10 6 1 3 6 10 10]) returns [8 9 9 10 10 10 10 10 10 10]\r\n\r\ncumax([8 9 1 10 6 1 3 6 10 10]') returns [8 9 9 10 10 10 10 10 10 10]'\r\nSee also cumin.","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: 378.633px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 189.317px; transform-origin: 407px 189.317px; 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: 234px 8px; transform-origin: 234px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eFind the cumulative maximum of an array without using the built-in function\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\u003ca target='_blank' href = \"/#null\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003ecummax\u003c/span\u003e\u003c/span\u003e\u003c/a\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: 107px 8px; transform-origin: 107px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e (and a few others). Your function should act identically to cummax, allowing the same inputs.\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: 33.5px 8px; transform-origin: 33.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eExamples\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 265.633px; 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 132.817px; transform-origin: 404px 132.817px; 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: 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; perspective-origin: 12px 8.5px; transform-origin: 12px 8.5px; \"\u003eIf \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: 40px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 40px 8.5px; \"\u003eX = [0 4 3\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: 56px 8.5px; tab-size: 4; transform-origin: 56px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e        6 5 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: 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: 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: 184px 8.5px; tab-size: 4; transform-origin: 184px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 56px 8.5px; transform-origin: 56px 8.5px; \"\u003ecumax(X,1) is \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: 128px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 128px 8.5px; \"\u003e[0 4 3  and cumax(X,2) is [0 4 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: 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: 188px 8.5px; tab-size: 4; transform-origin: 188px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e               6 5 3]                    6 6 6]\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: 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: 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: 264px 8.5px; tab-size: 4; transform-origin: 264px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 40px 8.5px; transform-origin: 40px 8.5px; \"\u003ecumax(X,1,\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: 36px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 36px 8.5px; \"\u003e'reverse'\u003c/span\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 20px 8.5px; transform-origin: 20px 8.5px; \"\u003e) is \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: 168px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 168px 8.5px; \"\u003e[6 5 3  and cumax(X,2,'reverse') is [4 4 3\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: 268px 8.5px; tab-size: 4; transform-origin: 268px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e                         6 5 2]                              6 5 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: 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: 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: 20px 8.5px; tab-size: 4; transform-origin: 20px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eAlso,\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: 272px 8.5px; tab-size: 4; transform-origin: 272px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 160px 8.5px; transform-origin: 160px 8.5px; \"\u003ecumax([8 9 1 10 6 1 3 6 10 10]) returns \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: 112px 8.5px; text-decoration-color: rgb(170, 4, 249); text-emphasis-color: rgb(170, 4, 249); transform-origin: 112px 8.5px; \"\u003e[8 9 9 10 10 10 10 10 10 10]\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: 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: 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: 280px 8.5px; tab-size: 4; transform-origin: 280px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; perspective-origin: 164px 8.5px; transform-origin: 164px 8.5px; \"\u003ecumax([8 9 1 10 6 1 3 6 10 10]') returns \u003c/span\u003e\u003cspan style=\"border-block-end-color: rgb(196, 0, 0); border-block-start-color: rgb(196, 0, 0); border-bottom-color: rgb(196, 0, 0); border-inline-end-color: rgb(196, 0, 0); border-inline-start-color: rgb(196, 0, 0); border-left-color: rgb(196, 0, 0); border-right-color: rgb(196, 0, 0); border-top-color: rgb(196, 0, 0); caret-color: rgb(196, 0, 0); color: rgb(196, 0, 0); column-rule-color: rgb(196, 0, 0); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(196, 0, 0); perspective-origin: 116px 8.5px; text-decoration-color: rgb(196, 0, 0); text-emphasis-color: rgb(196, 0, 0); transform-origin: 116px 8.5px; \"\u003e[8 9 9 10 10 10 10 10 10 10]'\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: 27.5px 8px; transform-origin: 27.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eSee also\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\u003ca target='_blank' href = \"/#null\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003ecumin\u003c/span\u003e\u003c/span\u003e\u003c/a\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\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = cumaX(x,varargin)\r\n  y = x;\r\nend","test_suite":"%%\r\nfiletext = fileread('cumaX.m');\r\nassert(isempty(strfind(filetext,'max')))\r\nassert(isempty(strfind(filetext,'cummin')))\r\nassert(isempty(strfind(filetext,'cummax')))\r\nassert(isempty(strfind(filetext,'feval')))\r\n\r\n%%\r\nx = randi(100);\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n\r\n%%\r\nx = randi(100,randi([2 100]),1);\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n\r\n%%\r\nx = randi(100,1,randi([2 100]));\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n\r\n%%\r\nx = magic(10);\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n\r\n%%\r\nx = [];\r\nassert(isequal(cumaX(x),cummax(x)))\r\nassert(isequal(cumaX(x,1),cummax(x,1)))\r\nassert(isequal(cumaX(x,2),cummax(x,2)))\r\nassert(isequal(cumaX(x,1,'reverse'),cummax(x,1,'reverse')))\r\nassert(isequal(cumaX(x,2,'reverse'),cummax(x,2,'reverse')))\r\nassert(isequal(cumaX(x,'reverse'),cummax(x,'reverse')))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":5,"created_by":4793,"edited_by":223089,"edited_at":"2022-10-09T10:09:17.000Z","deleted_by":null,"deleted_at":null,"solvers_count":42,"test_suite_updated_at":"2022-10-09T10:09:17.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2015-09-23T19:36:49.000Z","updated_at":"2026-03-29T06:57:19.000Z","published_at":"2015-09-23T19:38:39.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\u003eFind the cumulative maximum of an array without using the built-in function\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=\\\"\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecummax\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (and a few others). Your function should act identically to cummax, allowing the same inputs.\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\u003eExamples\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[If X = [0 4 3\\n        6 5 2]\\n\\ncumax(X,1) is [0 4 3  and cumax(X,2) is [0 4 4\\n               6 5 3]                    6 6 6]\\n\\ncumax(X,1,'reverse') is [6 5 3  and cumax(X,2,'reverse') is [4 4 3\\n                         6 5 2]                              6 5 2]\\n\\nAlso,\\ncumax([8 9 1 10 6 1 3 6 10 10]) returns [8 9 9 10 10 10 10 10 10 10]\\n\\ncumax([8 9 1 10 6 1 3 6 10 10]') returns [8 9 9 10 10 10 10 10 10 10]']]\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\u003eSee also\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=\\\"\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ecumin\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\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":42634,"title":"Minimum of each diagonal","description":"The well-known \u003chttp://www.mathworks.com/help/matlab/ref/min.html min\u003e function can operate along either the rows or the columns of a matrix by using\r\n\r\n  [Y,I] = min(X,[],1) or [Y,I] = min(X,[],2)\r\n\r\nbut it cannot operate along a diagonal dimension. For this problem, create a function that returns the smallest component along each diagonal of a matrix (starting with the one-element diagonal in the bottom left corner of the matrix).\r\n\r\n*Example*\r\n\r\nIf \r\n\r\n  X = magic(3) = [8 1 6\r\n                  3 5 7\r\n                  4 9 2]\r\n\r\nthen\r\n\r\n  Y = mindiag(X) = [4 3 2 1 6]\r\n\r\nSee also \u003chttp://www.mathworks.com/matlabcentral/cody/problems/42635-maximum-of-each-diagonal maxdiag\u003e.","description_html":"\u003cp\u003eThe well-known \u003ca href = \"http://www.mathworks.com/help/matlab/ref/min.html\"\u003emin\u003c/a\u003e function can operate along either the rows or the columns of a matrix by using\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e[Y,I] = min(X,[],1) or [Y,I] = min(X,[],2)\r\n\u003c/pre\u003e\u003cp\u003ebut it cannot operate along a diagonal dimension. For this problem, create a function that returns the smallest component along each diagonal of a matrix (starting with the one-element diagonal in the bottom left corner of the matrix).\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample\u003c/b\u003e\u003c/p\u003e\u003cp\u003eIf\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eX = magic(3) = [8 1 6\r\n                3 5 7\r\n                4 9 2]\r\n\u003c/pre\u003e\u003cp\u003ethen\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eY = mindiag(X) = [4 3 2 1 6]\r\n\u003c/pre\u003e\u003cp\u003eSee also \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/42635-maximum-of-each-diagonal\"\u003emaxdiag\u003c/a\u003e.\u003c/p\u003e","function_template":"function y = mindiag(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nassert(isempty(mindiag([])))\r\n\r\n%%\r\nx = randi(100);\r\nassert(isequal(mindiag(x),x))\r\n\r\n%%\r\nx = randi(100,100,1);\r\nassert(isequal(mindiag(x),x(end:-1:1)'))\r\n\r\n%%\r\nx = randi(100,1,100);\r\nassert(isequal(mindiag(x),x))\r\n\r\n%%\r\nx = eye(2);\r\nassert(isequal(mindiag(x),[0 1 0]))\r\n\r\n%%\r\nx = magic(3);\r\nassert(isequal(mindiag(x),[4 3 2 1 6]))\r\n\r\n%%\r\nx = flipud(hankel(1:1000));\r\nassert(isequal(mindiag(x),[1:1000,zeros(1,1000-1)]))\r\n\r\n%%\r\nx = toeplitz(1:1000);\r\nassert(isequal(mindiag(x),[1000:-1:1,2:1000]))\r\n\r\n%%\r\nN = randi(1000);\r\nx = fliplr(toeplitz(1:N));\r\ny = ones(1,2*N-1);\r\ny(2:2:end) = 2;\r\nassert(isequal(mindiag(x),y))\r\n\r\n%%\r\nx = magic(10);\r\nx = x(:,1:3);\r\nassert(isequal(mindiag(x),[11 10 12 6 5 24 76 4 19 80 7 1]))\r\n\r\n%%\r\nx = hankel(-4:0,0:-2:-16);\r\nassert(isequal(mindiag(x),[0 -2 -4 -6 -8 -10 -12 -14 -16 -14 -12 -10 -8]))","published":true,"deleted":false,"likes_count":2,"comments_count":0,"created_by":4793,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":66,"test_suite_updated_at":"2015-09-23T23:03:11.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2015-09-23T23:00:02.000Z","updated_at":"2026-04-01T07:12:19.000Z","published_at":"2015-09-23T23:00:02.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe well-known\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/help/matlab/ref/min.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003emin\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e function can operate along either the rows or the columns of a matrix by using\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[[Y,I] = min(X,[],1) or [Y,I] = min(X,[],2)]]\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\u003ebut it cannot operate along a diagonal dimension. For this problem, create a function that returns the smallest component along each diagonal of a matrix (starting with the one-element diagonal in the bottom left corner of the matrix).\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\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[X = magic(3) = [8 1 6\\n                3 5 7\\n                4 9 2]]]\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[Y = mindiag(X) = [4 3 2 1 6]]]\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 also\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/42635-maximum-of-each-diagonal\\\"\u003e\u003cw:r\u003e\u003cw:t\u003emaxdiag\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":42635,"title":"Maximum of each diagonal","description":"The well-known \u003chttp://www.mathworks.com/help/matlab/ref/max.html max\u003e function can operate along either the rows or the columns of a matrix by using\r\n\r\n  [Y,I] = max(X,[],1) or [Y,I] = max(X,[],2)\r\n\r\nbut it cannot operate along a diagonal dimension. For this problem, create a function that returns the largest component along each diagonal of a matrix (starting with the one-element diagonal in the bottom left corner of the matrix).\r\n\r\n*Example*\r\n\r\nIf \r\n\r\n  X = magic(3) = [8 1 6\r\n                  3 5 7\r\n                  4 9 2]\r\n\r\nthen\r\n\r\n  Y = maxdiag(X) = [4 9 8 7 6]\r\n\r\nSee also \u003chttp://www.mathworks.com/matlabcentral/cody/problems/42634-minimum-of-each-diagonal mindiag\u003e.","description_html":"\u003cp\u003eThe well-known \u003ca href = \"http://www.mathworks.com/help/matlab/ref/max.html\"\u003emax\u003c/a\u003e function can operate along either the rows or the columns of a matrix by using\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e[Y,I] = max(X,[],1) or [Y,I] = max(X,[],2)\r\n\u003c/pre\u003e\u003cp\u003ebut it cannot operate along a diagonal dimension. For this problem, create a function that returns the largest component along each diagonal of a matrix (starting with the one-element diagonal in the bottom left corner of the matrix).\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample\u003c/b\u003e\u003c/p\u003e\u003cp\u003eIf\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eX = magic(3) = [8 1 6\r\n                3 5 7\r\n                4 9 2]\r\n\u003c/pre\u003e\u003cp\u003ethen\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eY = maxdiag(X) = [4 9 8 7 6]\r\n\u003c/pre\u003e\u003cp\u003eSee also \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/42634-minimum-of-each-diagonal\"\u003emindiag\u003c/a\u003e.\u003c/p\u003e","function_template":"function y = maxdiag(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nassert(isempty(maxdiag([])))\r\n\r\n%%\r\nx = randi(100);\r\nassert(isequal(maxdiag(x),x))\r\n\r\n%%\r\nx = randi(100,100,1);\r\nassert(isequal(maxdiag(x),x(end:-1:1)'))\r\n\r\n%%\r\nx = randi(100,1,100);\r\nassert(isequal(maxdiag(x),x))\r\n\r\n%%\r\nx = eye(2);\r\nassert(isequal(maxdiag(x),[0 1 0]))\r\n\r\n%%\r\nx = magic(3);\r\nassert(isequal(maxdiag(x),[4 9 8 7 6]))\r\n\r\n%%\r\nx = flipud(hankel(1:1000));\r\nassert(isequal(maxdiag(x),[1:1000,zeros(1,1000-1)]))\r\n\r\n%%\r\nx = toeplitz(1:1000);\r\nassert(isequal(maxdiag(x),[1000:-1:1,2:1000]))\r\n\r\n%%\r\nN = randi(1000);\r\nx = fliplr(toeplitz(1:N));\r\nassert(isequal(maxdiag(x),[1:N,N-1:-1:1]))\r\n\r\n%%\r\nx = magic(10);\r\nx = x(:,1:3);\r\nassert(isequal(maxdiag(x),[11 18 100 94 17 86 93 87 98 92 99 1]))\r\n\r\n%%\r\nx = hankel(-4:0,0:-2:-16);\r\nassert(isequal(maxdiag(x),[0 -1 0 -1 0 -1 0 -1 0 -2 -4 -6 -8]))\r\n","published":true,"deleted":false,"likes_count":3,"comments_count":0,"created_by":4793,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":67,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":24,"created_at":"2015-09-23T23:12:25.000Z","updated_at":"2026-04-01T07:14:21.000Z","published_at":"2015-09-23T23:12:25.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe well-known\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/help/matlab/ref/max.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003emax\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e function can operate along either the rows or the columns of a matrix by using\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[[Y,I] = max(X,[],1) or [Y,I] = max(X,[],2)]]\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\u003ebut it cannot operate along a diagonal dimension. For this problem, create a function that returns the largest component along each diagonal of a matrix (starting with the one-element diagonal in the bottom left corner of the matrix).\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\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[X = magic(3) = [8 1 6\\n                3 5 7\\n                4 9 2]]]\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[Y = maxdiag(X) = [4 9 8 7 6]]]\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 also\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/42634-minimum-of-each-diagonal\\\"\u003e\u003cw:r\u003e\u003cw:t\u003emindiag\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":42639,"title":"Find the Final State of an Abelian Sandpile","description":"Let us define an \u003chttp://nautil.us/issue/23/dominoes/the-amazing-autotuning-sandpile Abelian sand pile\u003e as a matrix that is only in a stable and final state when all of its elements are less than 4. When any of its elements is greater than 4, distribute four sand grains, one each to the elements above, below, to the left, and to the right of the offending element. Continue doing this until the matrix is stable.\r\n\r\nSo\r\n\r\n 0 0 0 \r\n 0 4 1\r\n 1 0 0\r\n\r\nwould become\r\n\r\n 0 1 0\r\n 1 0 2\r\n 1 1 0\r\n\r\nbecause the 4 in the middle is unstable and gets distributed.\r\n\r\nWhat makes this process Abelian is that the order in which you distribute the \"sand grains\" doesn't matter. This gives you considerable algorithmic freedom.\r\n\r\nSo, given an input matrix A, return the resulting stable Abelian sand pile matrix B.\r\n\r\nNote: you won't have to worry about sand grains \"falling off the edge of the table.\" The given matrix A will always be big enough to handle the resulting stable matrix B.\r\n\r\nExamples\r\n\r\n A = [ 0 0 0 0\r\n       0 4 4 0\r\n       0 0 0 0 ]\r\n\r\n B = [ 0 1 1 0\r\n       1 1 1 1\r\n       0 1 1 0 ]\r\n\r\nand\r\n\r\n A = [ 0 0 0\r\n       0 9 0\r\n       0 0 0 ] \r\n\r\n B = [ 0 2 0\r\n       2 1 2\r\n       0 2 0 ]\r\n\r\n\r\n","description_html":"\u003cp\u003eLet us define an \u003ca href = \"http://nautil.us/issue/23/dominoes/the-amazing-autotuning-sandpile\"\u003eAbelian sand pile\u003c/a\u003e as a matrix that is only in a stable and final state when all of its elements are less than 4. When any of its elements is greater than 4, distribute four sand grains, one each to the elements above, below, to the left, and to the right of the offending element. Continue doing this until the matrix is stable.\u003c/p\u003e\u003cp\u003eSo\u003c/p\u003e\u003cpre\u003e 0 0 0 \r\n 0 4 1\r\n 1 0 0\u003c/pre\u003e\u003cp\u003ewould become\u003c/p\u003e\u003cpre\u003e 0 1 0\r\n 1 0 2\r\n 1 1 0\u003c/pre\u003e\u003cp\u003ebecause the 4 in the middle is unstable and gets distributed.\u003c/p\u003e\u003cp\u003eWhat makes this process Abelian is that the order in which you distribute the \"sand grains\" doesn't matter. This gives you considerable algorithmic freedom.\u003c/p\u003e\u003cp\u003eSo, given an input matrix A, return the resulting stable Abelian sand pile matrix B.\u003c/p\u003e\u003cp\u003eNote: you won't have to worry about sand grains \"falling off the edge of the table.\" The given matrix A will always be big enough to handle the resulting stable matrix B.\u003c/p\u003e\u003cp\u003eExamples\u003c/p\u003e\u003cpre\u003e A = [ 0 0 0 0\r\n       0 4 4 0\r\n       0 0 0 0 ]\u003c/pre\u003e\u003cpre\u003e B = [ 0 1 1 0\r\n       1 1 1 1\r\n       0 1 1 0 ]\u003c/pre\u003e\u003cp\u003eand\u003c/p\u003e\u003cpre\u003e A = [ 0 0 0\r\n       0 9 0\r\n       0 0 0 ] \u003c/pre\u003e\u003cpre\u003e B = [ 0 2 0\r\n       2 1 2\r\n       0 2 0 ]\u003c/pre\u003e","function_template":"function B = sandpile(A)\r\n  B = zeros(size(A));\r\nend","test_suite":"%%\r\nA = 1;\r\nB_correct = 1;\r\nassert(isequal(sandpile(A),B_correct))\r\n\r\n%%\r\nA = [0 0 0;0 4 1;1 0 0];\r\nB_correct  = [0 1 0;1 0 2;1 1 0];\r\nassert(isequal(sandpile(A),B_correct))\r\n\r\n%%\r\nA = [0 0 0 0;0 4 4 0;0 0 0 0];\r\nB_correct = [0 1 1 0;1 1 1 1;0 1 1 0];\r\nassert(isequal(sandpile(A),B_correct))\r\n\r\n%%\r\nA = [0 0 0 0 0;0 0 0 0 0;0 0 17 0 0;0 0 0 7 0;0 0 0 0 0];\r\nB_correct = [0 0 1 0 0;0 2 1 2 0;1 1 1 3 1;0 2 3 1 2;0 0 1 2 0];\r\nassert(isequal(sandpile(A),B_correct))\r\n\r\n%%\r\nA = [0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0 0;0 0 0 16 2 3 13 0 0 0 0;0 0 0 5 11 10 8 0 0 0 0;0 0 0 9 7 6 12 0 0 0 0;0 0 0 4 14 15 1 0 0 0 0;0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0 0];\r\nB_correct = [0 0 0 0 0 0 0 0 0 0 0;0 0 1 3 3 3 3 1 0 0 0;0 2 3 2 3 3 2 3 2 0 0;1 1 1 3 2 3 1 1 1 1 0;1 3 1 1 3 3 1 2 3 1 0;1 3 0 3 3 3 3 1 3 1 0;1 0 3 2 2 3 0 3 0 1 0;0 2 2 3 2 2 3 2 2 0 0;0 0 2 0 3 3 0 2 0 0 0;0 0 0 1 1 1 1 0 0 0 0;0 0 0 0 0 0 0 0 0 0 0];\r\nassert(isequal(sandpile(A),B_correct))\r\n\r\n","published":true,"deleted":false,"likes_count":4,"comments_count":1,"created_by":7,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":74,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":24,"created_at":"2015-09-29T20:59:19.000Z","updated_at":"2026-04-01T07:15:49.000Z","published_at":"2015-09-29T23:01: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\u003eLet us define an\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://nautil.us/issue/23/dominoes/the-amazing-autotuning-sandpile\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eAbelian sand pile\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e as a matrix that is only in a stable and final state when all of its elements are less than 4. When any of its elements is greater than 4, distribute four sand grains, one each to the elements above, below, to the left, and to the right of the offending element. Continue doing this until the matrix is stable.\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\u003eSo\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ 0 0 0 \\n 0 4 1\\n 1 0 0]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ewould become\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ 0 1 0\\n 1 0 2\\n 1 1 0]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003ebecause the 4 in the middle is unstable and gets distributed.\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\u003eWhat makes this process Abelian is that the order in which you distribute the \\\"sand grains\\\" doesn't matter. This gives you considerable algorithmic freedom.\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\u003eSo, given an input matrix A, return the resulting stable Abelian sand pile matrix B.\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\u003eNote: you won't have to worry about sand grains \\\"falling off the edge of the table.\\\" The given matrix A will always be big enough to handle the resulting stable matrix B.\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\u003eExamples\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ A = [ 0 0 0 0\\n       0 4 4 0\\n       0 0 0 0 ]\\n\\n B = [ 0 1 1 0\\n       1 1 1 1\\n       0 1 1 0 ]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eand\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[ A = [ 0 0 0\\n       0 9 0\\n       0 0 0 ] \\n\\n B = [ 0 2 0\\n       2 1 2\\n       0 2 0 ]]]\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":42695,"title":"Replace secondary diagonal elements of a square array","description":"Replace all the secondary diagonal elements of the square array A with the number n\r\n\r\nExample:\r\n\r\n A = [1 2 3\r\n      4 5 6\r\n      7 8 9]\r\n n=0\r\n\r\n Output = [1 2 0\r\n           4 0 6\r\n           0 8 9]\r\n\r\nExample 2\r\n\r\n A = 1;\r\n n = 10;\r\n\r\n Output = 10\r\n","description_html":"\u003cp\u003eReplace all the secondary diagonal elements of the square array A with the number n\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cpre\u003e A = [1 2 3\r\n      4 5 6\r\n      7 8 9]\r\n n=0\u003c/pre\u003e\u003cpre\u003e Output = [1 2 0\r\n           4 0 6\r\n           0 8 9]\u003c/pre\u003e\u003cp\u003eExample 2\u003c/p\u003e\u003cpre\u003e A = 1;\r\n n = 10;\u003c/pre\u003e\u003cpre\u003e Output = 10\u003c/pre\u003e","function_template":"function B = sec_diag_replacement(A,n)\r\n  B = A;\r\nend","test_suite":"%%\r\nA = [1 2 3; 4 5 6; 7 8 9];\r\nn = 10;\r\nB_correct = [1 2 10; 4 10 6; 10 8 9];\r\nassert(isequal(sec_diag_replacement(A,n),B_correct))\r\n\r\n%%\r\nA = 1;\r\nn = 10;\r\nB_correct = 10;\r\nassert(isequal(sec_diag_replacement(A,n),B_correct))\r\n\r\n%%\r\nA = ones(4);\r\nn = 0;\r\nB_correct = [1 1 1 0; 1 1 0 1; 1 0 1 1; 0 1 1 1];\r\nassert(isequal(sec_diag_replacement(A,n),B_correct))\r\n\r\n%%\r\nA = eye(4);\r\nn = 10;\r\nB_correct = [1 0 0 10; 0 1 10 0; 0 10 1 0; 10 0 0 1];\r\nassert(isequal(sec_diag_replacement(A,n),B_correct))\r\n\r\n%%\r\nA = [1 1 2 1; 1 2 1 1; 2 1 1 1; 1 1 1 2];\r\nn = 3;\r\nB_correct = [1 1 2 3; 1 2 3 1; 2 3 1 1; 3 1 1 2];\r\nassert(isequal(sec_diag_replacement(A,n),B_correct))\r\n\r\n%%\r\nA = zeros(3);\r\nn = -1;\r\nB_correct = [0 0 -1; 0 -1 0; -1 0 0];\r\nassert(isequal(sec_diag_replacement(A,n),B_correct))\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":1,"created_by":4907,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":186,"test_suite_updated_at":"2017-04-19T16:58:30.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2015-12-17T05:29:44.000Z","updated_at":"2026-04-02T14:42:30.000Z","published_at":"2015-12-17T05:32:13.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eReplace all the secondary diagonal elements of the square array A with the number 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\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[ A = [1 2 3\\n      4 5 6\\n      7 8 9]\\n n=0\\n\\n Output = [1 2 0\\n           4 0 6\\n           0 8 9]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample 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[ A = 1;\\n n = 10;\\n\\n Output = 10]]\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":42761,"title":"Fill the matrix - 1","description":"Input is a column vector and n. \r\n\r\nn columns will be added to the left of the input column. The first value of the row is the sum of the previous row. The matrix will be filled as follow;\r\n\r\n input matrix = [1:8]'\r\n n = 4;\r\n\r\n output = \r\n [\r\n 0\t0\t0\t0\t1\r\n 1\t0\t0\t0\t2\r\n 3\t1\t0\t0\t3\r\n 7\t3\t1\t0\t4\r\n 15\t7\t3\t1\t5\r\n 31\t15\t7\t3\t6\r\n 62\t31\t15\t7\t7\r\n 122\t62\t31\t15\t8\r\n ];\r\n\r\nI request you to use sum( ) function.","description_html":"\u003cp\u003eInput is a column vector and n.\u003c/p\u003e\u003cp\u003en columns will be added to the left of the input column. The first value of the row is the sum of the previous row. The matrix will be filled as follow;\u003c/p\u003e\u003cpre\u003e input matrix = [1:8]'\r\n n = 4;\u003c/pre\u003e\u003cpre\u003e output = \r\n [\r\n 0\t0\t0\t0\t1\r\n 1\t0\t0\t0\t2\r\n 3\t1\t0\t0\t3\r\n 7\t3\t1\t0\t4\r\n 15\t7\t3\t1\t5\r\n 31\t15\t7\t3\t6\r\n 62\t31\t15\t7\t7\r\n 122\t62\t31\t15\t8\r\n ];\u003c/pre\u003e\u003cp\u003eI request you to use sum( ) function.\u003c/p\u003e","function_template":"function y = fillMatrix(x,n)\r\n  x= [zeros(length(x),n) x];\r\nend","test_suite":"%%\r\nx = [1:8]';\r\nn = 4;\r\ny_correct = [\r\n0\t0\t0\t0\t1\r\n1\t0\t0\t0\t2\r\n3\t1\t0\t0\t3\r\n7\t3\t1\t0\t4\r\n15\t7\t3\t1\t5\r\n31\t15\t7\t3\t6\r\n62\t31\t15\t7\t7\r\n122\t62\t31\t15\t8\r\n];\r\n\r\ny = fillMatrix(x,n)\r\nassert(all(abs(y(:)-y_correct(:))\u003c1e-4));\r\n\r\n%%\r\nx = [1.584;-1.015;8.4587;6.0147;9.0258;-10.4785];\r\nn = 4;\r\ny_correct = [\r\n0\t0\t0\t0\t1.584\r\n1.584\t0\t0\t0\t-1.015\r\n0.569\t1.584\t0\t0\t8.4587\r\n10.6117\t0.569\t1.584\t0\t6.0147\r\n18.7794\t10.6117\t0.569\t1.584\t9.0258\r\n40.5699\t18.7794\t10.6117\t0.569\t-10.4785\r\n];\r\n\r\ny = fillMatrix(x,n)\r\nassert(all(abs(y(:)-y_correct(:))\u003c1e-4));\r\n\r\n\r\n%%\r\nx = [-2:10]';\r\nn = 3;\r\ny_correct = [\r\n0\t0\t0\t-2\r\n-2\t0\t0\t-1\r\n-3\t-2\t0\t0\r\n-5\t-3\t-2\t1\r\n-9\t-5\t-3\t2\r\n-15\t-9\t-5\t3\r\n-26\t-15\t-9\t4\r\n-46\t-26\t-15\t5\r\n-82\t-46\t-26\t6\r\n-148\t-82\t-46\t7\r\n-269\t-148\t-82\t8\r\n-491\t-269\t-148\t9\r\n-899\t-491\t-269\t10\r\n];\r\n\r\ny = fillMatrix(x,n)\r\nassert(all(abs(y(:)-y_correct(:))\u003c1e-4));\r\n\r\n%%\r\nx = [-2:10]';\r\nn = 0;\r\ny_correct = x;\r\n\r\ny = fillMatrix(x,n)\r\nassert(all(abs(y(:)-y_correct(:))\u003c1e-4));\r\n\r\n%%\r\nx = [0.814723686393179;0.905791937075619;0.126986816293506;0.913375856139019;0.632359246225410;0.0975404049994095;0.278498218867048;0.546881519204984;0.957506835434298;0.964888535199277];\r\nn = 8;\r\ny_correct = [0 0 0 0 0 0 0 0 0.814723686393179;0.814723686393179 0 0 0 0 0 0 0 0.905791937075619;1.72051562346880 0.814723686393179 0 0 0 0 0 0 0.126986816293506;2.66222612615548 1.72051562346880 0.814723686393179 0 0 0 0 0 0.913375856139019;6.11084129215648 2.66222612615548 1.72051562346880 0.814723686393179 0 0 0 0 0.632359246225410;11.9406659743994 6.11084129215648 2.66222612615548 1.72051562346880 0.814723686393179 0 0 0 0.0975404049994095;23.3465131075727 11.9406659743994 6.11084129215648 2.66222612615548 1.72051562346880 0.814723686393179 0 0 0.278498218867048;46.8739840290130 23.3465131075727 11.9406659743994 6.11084129215648 2.66222612615548 1.72051562346880 0.814723686393179 0 0.546881519204984;94.0163513583640 46.8739840290130 23.3465131075727 11.9406659743994 6.11084129215648 2.66222612615548 1.72051562346880 0.814723686393179 0.957506835434298;188.443328032957 94.0163513583640 46.8739840290130 23.3465131075727 11.9406659743994 6.11084129215648 2.66222612615548 1.72051562346880 0.964888535199277];\r\n\r\ny = fillMatrix(x,n)\r\nassert(all(abs(y(:)-y_correct(:))\u003c1e-4));","published":true,"deleted":false,"likes_count":3,"comments_count":1,"created_by":8703,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":64,"test_suite_updated_at":"2016-03-05T19:45:43.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2016-03-05T12:19:00.000Z","updated_at":"2026-04-01T07:22:20.000Z","published_at":"2016-03-05T12:19:00.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\u003eInput is a column vector and 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003en columns will be added to the left of the input column. The first value of the row is the sum of the previous row. The matrix will be filled as follow;\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ input matrix = [1:8]'\\n n = 4;\\n\\n output = \\n [\\n 0  0  0  0  1\\n 1  0  0  0  2\\n 3  1  0  0  3\\n 7  3  1  0  4\\n 15  7  3  1  5\\n 31  15  7  3  6\\n 62  31  15  7  7\\n 122  62  31  15  8\\n ];]]\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\u003eI request you to use sum( ) function.\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":42763,"title":"Fill the Matrix - 2","description":"Input is a column vector and n.\r\n\r\nn columns will be added to the left of the input column. The first value of the row is the mean of the previous row. The matrix should be filled as follows.\r\n\r\n input matrix = [1:8]'\r\n n = 4;\r\n output = \r\n [\r\n 0      0      0      0      1\r\n 0.2    0      0      0      2\r\n 0.44   0.2    0      0      3\r\n 0.7280 0.44   0.2    0      4\r\n 1.0736 0.7280 0.44   0.2    5\r\n 1.4883 1.0736 0.7280 0.44   6\r\n 1.9460 1.4883 1.0736 0.7280 7\r\n 2.4472 1.9460 1.4883 1.0736 8\r\n ];\r\n\r\nI request you to use the mean( ) function.","description_html":"\u003cp\u003eInput is a column vector and n.\u003c/p\u003e\u003cp\u003en columns will be added to the left of the input column. The first value of the row is the mean of the previous row. The matrix should be filled as follows.\u003c/p\u003e\u003cpre\u003e input matrix = [1:8]'\r\n n = 4;\r\n output = \r\n [\r\n 0      0      0      0      1\r\n 0.2    0      0      0      2\r\n 0.44   0.2    0      0      3\r\n 0.7280 0.44   0.2    0      4\r\n 1.0736 0.7280 0.44   0.2    5\r\n 1.4883 1.0736 0.7280 0.44   6\r\n 1.9460 1.4883 1.0736 0.7280 7\r\n 2.4472 1.9460 1.4883 1.0736 8\r\n ];\u003c/pre\u003e\u003cp\u003eI request you to use the mean( ) function.\u003c/p\u003e","function_template":"function y = fillMatrix2(x,n)\r\n   x= [zeros(length(x),n) x];\r\nend","test_suite":"%%\r\nx = [1:8]';\r\nn = 4;\r\ny_correct = [\r\n0 0 0 0 1;\r\n0.2 0 0 0 2;\r\n0.44 0.2 0 0 3;\r\n0.728 0.44 0.2 0 4;\r\n1.07360 0.728 0.44 0.2 5;\r\n1.48832 1.07360 0.728 0.44 6;\r\n1.945984 1.48832 1.07360 0.728 7;\r\n2.4471808 1.945984 1.48832 1.07360 8];\r\n\r\ny = fillMatrix2(x,n);\r\nassert(all(abs(y(:)-y_correct(:))\u003c1e-4));\r\n\r\n%%\r\nx =    [0.9649;\r\n    0.1576;\r\n    0.9706;\r\n    0.9572;\r\n    0.4854;\r\n    0.8003;\r\n    0.1419;\r\n    0.4218;\r\n    0.9157];\r\nn = 10;\r\ny_correct = [0 0 0 0 0 0 0 0 0 0 0.9649;0.0877 0 0 0 0 0 0 0 0 0 0.1576;0.0223 0.0877 0 0 0 0 0 0 0 0 0.9706;0.0982 0.0223 0.0877 0 0 0 0 0 0 0 0.9572;0.106 0.0982 0.0223 0.0877 0 0 0 0 0 0 0.4854;0.0727 0.106 0.0982 0.0223 0.0877 0 0 0 0 0 0.8003;0.1079 0.0727 0.106 0.0982 0.0223 0.0877 0 0 0 0 0.1419;0.0579 0.1079 0.0727 0.106 0.0982 0.0223 0.0877 0 0 0 0.4218;0.0886 0.0579 0.1079 0.0727 0.106 0.0982 0.0223 0.0877 0 0 0.9157;];\r\n\r\n\r\ny = fillMatrix2(x,n);\r\nassert(all(abs(y(:)-y_correct(:))\u003c1e-4));\r\n\r\n\r\n%% \r\nx = [1:20]';\r\nn = 0;\r\ny_correct = [1:20]';\r\n\r\ny = fillMatrix2(x,n);\r\nassert(all(abs(y(:)-y_correct(:))\u003c1e-4));\r\n\r\n\r\n\r\n%%\r\nx = [0.7922;-0.9595;-0.6557;0.03570;0.8491;0.9340;0.6787;-0.7577;0.7431;0.3922;-0.6555;0.1712;0.7060;-0.03180;0.2769;-0.04620;0.09710;0.8235;-0.6948;0.3171];\r\nn = 4;\r\n\r\ny_correct = [0 0 0 0 0.7922;0.1584 0 0 0 -0.9595;-0.1602 0.1584 0 0 -0.6557;-0.1315 -0.1602 0.1584 0 0.0357;-0.0195 -0.1315 -0.1602 0.1584 0.8491;0.1393 -0.0195 -0.1315 -0.1602 0.934;0.1524 0.1393 -0.0195 -0.1315 0.6787;0.1639 0.1524 0.1393 -0.0195 -0.7577;-0.0643 0.1639 0.1524 0.1393 0.7431;0.2269 -0.0643 0.1639 0.1524 0.3922;0.1742 0.2269 -0.0643 0.1639 -0.6555;-0.0310 0.1742 0.2269 -0.0643 0.1712;0.0954 -0.0310 0.1742 0.2269 0.706;0.2343 0.0954 -0.0310 0.1742 -0.0318;0.0882 0.2343 0.0954 -0.0310 0.2769;0.1328 0.0882 0.2343 0.0954 -0.0462;0.1009 0.1328 0.0882 0.2343 0.0971;0.1307 0.1009 0.1328 0.0882 0.8235;0.2552 0.1307 0.1009 0.1328 -0.6948;-0.0151 0.2552 0.1307 0.1009 0.3171];\r\n\r\ny = fillMatrix2(x,n);\r\nassert(all(abs(y(:)-y_correct(:))\u003c1e-4));","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":8703,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":57,"test_suite_updated_at":"2016-03-06T08:47:45.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2016-03-06T08:44:13.000Z","updated_at":"2026-04-01T07:27:08.000Z","published_at":"2016-03-06T08:44:13.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInput is a column vector and 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003en columns will be added to the left of the input column. The first value of the row is the mean of the previous row. The matrix should be filled 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[ input matrix = [1:8]'\\n n = 4;\\n output = \\n [\\n 0      0      0      0      1\\n 0.2    0      0      0      2\\n 0.44   0.2    0      0      3\\n 0.7280 0.44   0.2    0      4\\n 1.0736 0.7280 0.44   0.2    5\\n 1.4883 1.0736 0.7280 0.44   6\\n 1.9460 1.4883 1.0736 0.7280 7\\n 2.4472 1.9460 1.4883 1.0736 8\\n ];]]\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\u003eI request you to use the mean( ) function.\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":42798,"title":"Moving Product (Easy)","description":"Given an input array A, write a function *movprod(A,k,dim)* to calculate the moving product over a sliding window of length *k* along the specified dimension *dim* of input array *A*. If dim is omitted, operate along the first non-singleton dimension of A. \r\n\r\nExample 1: \r\n\r\n    \u003e\u003e A = [1 2 3 4 5 6];\r\n    \u003e\u003e B = movprod(A,3)\r\n    B = \r\n       6   24   60   120\r\n\r\nExample 2: \r\n\r\n    \u003e\u003e A = [1     4     3    6    2\r\n            2     5     1    2    3\r\n            3     6     2    3    5];\r\n    \u003e\u003e B = movprod(A,3,2)\r\n    B = \r\n        12   72   36\r\n        10   10    6\r\n        36   36   30\r\n\r\n\r\nYou may assume that dim \u003c= 3, and the input array A is a non-empty array with size(A,dim) \u003e= k. \r\n\r\nRelated problems: \u003chttp://www.mathworks.com/matlabcentral/cody/problems/429-function-on-a-moving-window Problem 429\u003e; \u003chttp://www.mathworks.com/matlabcentral/cody/problems/246-project-euler-problem-8-find-largest-product-in-a-large-string-of-numbers Problem 246\u003e\r\n\r\n*A kind note* (05/15/2017): This problem was created in 2016, one year before R2017a's introduction of the built-in movprod. To avoid function name clash, we've changed the user-defined function name into *moveprod* in the test-suite, which gives you the opportunity to solve the problem by directly calling the built-in movprod!\r\n\r\n","description_html":"\u003cp\u003eGiven an input array A, write a function \u003cb\u003emovprod(A,k,dim)\u003c/b\u003e to calculate the moving product over a sliding window of length \u003cb\u003ek\u003c/b\u003e along the specified dimension \u003cb\u003edim\u003c/b\u003e of input array \u003cb\u003eA\u003c/b\u003e. If dim is omitted, operate along the first non-singleton dimension of A.\u003c/p\u003e\u003cp\u003eExample 1:\u003c/p\u003e\u003cpre\u003e    \u0026gt;\u0026gt; A = [1 2 3 4 5 6];\r\n    \u0026gt;\u0026gt; B = movprod(A,3)\r\n    B = \r\n       6   24   60   120\u003c/pre\u003e\u003cp\u003eExample 2:\u003c/p\u003e\u003cpre\u003e    \u0026gt;\u0026gt; A = [1     4     3    6    2\r\n            2     5     1    2    3\r\n            3     6     2    3    5];\r\n    \u0026gt;\u0026gt; B = movprod(A,3,2)\r\n    B = \r\n        12   72   36\r\n        10   10    6\r\n        36   36   30\u003c/pre\u003e\u003cp\u003eYou may assume that dim \u0026lt;= 3, and the input array A is a non-empty array with size(A,dim) \u0026gt;= k.\u003c/p\u003e\u003cp\u003eRelated problems: \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/429-function-on-a-moving-window\"\u003eProblem 429\u003c/a\u003e; \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/246-project-euler-problem-8-find-largest-product-in-a-large-string-of-numbers\"\u003eProblem 246\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003cb\u003eA kind note\u003c/b\u003e (05/15/2017): This problem was created in 2016, one year before R2017a's introduction of the built-in movprod. To avoid function name clash, we've changed the user-defined function name into \u003cb\u003emoveprod\u003c/b\u003e in the test-suite, which gives you the opportunity to solve the problem by directly calling the built-in movprod!\u003c/p\u003e","function_template":"function B = moveprod(A,k,dim)\r\n  B = A;\r\nend","test_suite":"%%\r\nA = [1 2 3 4 5 6];\r\nC = [6 24 60 120];\r\nassert(isequal(moveprod(A,3),C))\r\n\r\n%%\r\nA = [1 2 3 4 5 6].'/6;\r\nC = [2 6 12 20 30].'/6^2;\r\nB = moveprod(A,2);\r\nassert(max(abs(B-C)) \u003c= max(abs(C))*1e-12 \u0026\u0026 isequal(size(B),size(C)))\r\n\r\n%%\r\nA = [-1      4      3     6     -2\r\n      2      0      1     2     -3\r\n      3     -6     -2     3      5];\r\nC = [-2   0    3   12     6\r\n      6   0   -2    6   -15];\r\nassert(isequal(moveprod(A,2),C))\r\n\r\n%%\r\nA = [-1      4      3     6     2\r\n      2      0      1     2     3\r\n      3     -6     -2     3     5]/pi; \r\nC = [-12   72    36\r\n       0    0     6\r\n      36   36   -30]/pi^3;\r\nB = moveprod(A,3,2);\r\nassert(max(abs(B(:) - C(:))) \u003c= max(abs(C(:)))*1e-12 \u0026\u0026 isequal(size(B),size(C)))\r\n\r\n%% \r\nA = randi([-10,10],10,10,100);\r\nk = 5; dim = 3; \r\nB = moveprod(A,k,dim);\r\nszA = size(A);\r\nC = zeros(szA(1),szA(2),szA(3)-k+1);\r\nfor m = 1:szA(1)\r\n    for n = 1:szA(2)\r\n        C(m,n,:) = moveprod(squeeze(A(m,n,:)),k);\r\n    end\r\nend\r\nassert(isequal(B,C))\r\n\r\n%% \r\nA = 20*rand(10,10,100)-10;\r\nk = 4; dim = 3; \r\nB = moveprod(A,k,dim);\r\nszA = size(A);\r\nC = zeros(szA(1),szA(2),szA(3)-k+1);\r\nfor m = 1:szA(1)\r\n    for n = 1:szA(2)\r\n        C(m,n,:) = moveprod(squeeze(A(m,n,:)),k);\r\n    end\r\nend\r\nC = C + 100*eps(C);\r\nassert(max(abs(B(:) - C(:))) \u003c= max(abs(C(:)))*1e-12 \u0026\u0026 isequal(size(B),size(C)))","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":12569,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":39,"test_suite_updated_at":"2017-05-16T00:02:52.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2016-04-07T20:56:32.000Z","updated_at":"2026-04-01T07:29:44.000Z","published_at":"2016-04-13T22:51:52.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven an input array A, write a function\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\u003emovprod(A,k,dim)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e to calculate the moving product over a sliding window of length\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\u003ek\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e along the specified dimension\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\u003edim\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e of input array\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. If dim is omitted, operate along the first non-singleton dimension of 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\u003eExample 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[    \u003e\u003e A = [1 2 3 4 5 6];\\n    \u003e\u003e B = movprod(A,3)\\n    B = \\n       6   24   60   120]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample 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[    \u003e\u003e A = [1     4     3    6    2\\n            2     5     1    2    3\\n            3     6     2    3    5];\\n    \u003e\u003e B = movprod(A,3,2)\\n    B = \\n        12   72   36\\n        10   10    6\\n        36   36   30]]\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\u003eYou may assume that dim \u0026lt;= 3, and the input array A is a non-empty array with size(A,dim) \u0026gt;= 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:t\u003eRelated problems:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/429-function-on-a-moving-window\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 429\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\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/246-project-euler-problem-8-find-largest-product-in-a-large-string-of-numbers\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 246\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\u003eA kind note\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e (05/15/2017): This problem was created in 2016, one year before R2017a's introduction of the built-in movprod. To avoid function name clash, we've changed the user-defined function name into\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\u003emoveprod\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e in the test-suite, which gives you the opportunity to solve the problem by directly calling the built-in movprod!\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":42854,"title":"Crunch that matrix!","description":"You are given an M x N matrix.  Write a script that will compress this matrix into an M x (N/3) matrix, where each of the terms in the new matrix are the sum of three consecutive terms on each row.  You can assume that N is evenly divisible by 3.\r\n\r\nFor example, if your original matrix is:\r\n\r\n  [1     7    13    19    25    31\r\n   2     8    14    20    26    32\r\n   3     9    15    21    27    33\r\n   4    10    16    22    28    34\r\n   5    11    17    23    29    35\r\n   6    12    18    24    30    36]\r\n\r\nthe output should be\r\n\r\n [1+ 7+13   19+25+31\r\n  2+ 8+14   20+26+32\r\n  3+ 9+15   21+27+33\r\n  4+10+16   22+28+34\r\n  5+11+17   23+29+35\r\n  6+12+18   24+30+36]\r\n\r\nor\r\n\r\n   [21    75\r\n    24    78\r\n    27    81\r\n    30    84\r\n    33    87\r\n    36    90]\r\n\r\nGood luck!","description_html":"\u003cp\u003eYou are given an M x N matrix.  Write a script that will compress this matrix into an M x (N/3) matrix, where each of the terms in the new matrix are the sum of three consecutive terms on each row.  You can assume that N is evenly divisible by 3.\u003c/p\u003e\u003cp\u003eFor example, if your original matrix is:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e[1     7    13    19    25    31\r\n 2     8    14    20    26    32\r\n 3     9    15    21    27    33\r\n 4    10    16    22    28    34\r\n 5    11    17    23    29    35\r\n 6    12    18    24    30    36]\r\n\u003c/pre\u003e\u003cp\u003ethe output should be\u003c/p\u003e\u003cpre\u003e [1+ 7+13   19+25+31\r\n  2+ 8+14   20+26+32\r\n  3+ 9+15   21+27+33\r\n  4+10+16   22+28+34\r\n  5+11+17   23+29+35\r\n  6+12+18   24+30+36]\u003c/pre\u003e\u003cp\u003eor\u003c/p\u003e\u003cpre\u003e   [21    75\r\n    24    78\r\n    27    81\r\n    30    84\r\n    33    87\r\n    36    90]\u003c/pre\u003e\u003cp\u003eGood luck!\u003c/p\u003e","function_template":"function y = matrix_crunch(x)\r\n  y = x;\r\nend","test_suite":"%%\r\na=reshape(1:36,6,[]);\r\nb=[sum(a(:,1:3),2) sum(a(:,4:6),2)];\r\nm=matrix_crunch(a);\r\nassert(max(max(abs(m-b)))\u003c1e-10)\r\n%%\r\na=magic(9)-30;\r\nb=[sum(a(:,1:3),2) sum(a(:,4:6),2) sum(a(:,7:9),2)];\r\nm=matrix_crunch(a);\r\nassert(max(max(abs(m-b)))\u003c1e-10)\r\n%%\r\na=rand(12);\r\nb=[sum(a(:,1:3),2) sum(a(:,4:6),2) sum(a(:,7:9),2) sum(a(:,10:12),2)];\r\nm=matrix_crunch(a);\r\nassert(max(max(abs(m-b)))\u003c1e-10)\r\n%%\r\na=ones(18);\r\nb=3*ones(18,6);\r\nm=matrix_crunch(a);\r\nassert(max(max(abs(m-b)))\u003c1e-10)\r\n%%\r\na=magic(15)+j.*flipud(magic(15));\r\na=a(1:10,:)-rand(10,15);\r\nb=[sum(a(:,1:3),2) sum(a(:,4:6),2) sum(a(:,7:9),2) sum(a(:,10:12),2) sum(a(:,13:15),2)];\r\nm=matrix_crunch(a);\r\nassert(max(max(abs(m-b)))\u003c1e-10)\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":1615,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":99,"test_suite_updated_at":"2016-05-25T12:10:27.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2016-05-17T18:03:44.000Z","updated_at":"2026-04-01T07:30:59.000Z","published_at":"2016-05-17T18:04:44.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou are given an M x N matrix. Write a script that will compress this matrix into an M x (N/3) matrix, where each of the terms in the new matrix are the sum of three consecutive terms on each row. You can assume that N is evenly divisible by 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor example, if your original matrix is:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[[1     7    13    19    25    31\\n 2     8    14    20    26    32\\n 3     9    15    21    27    33\\n 4    10    16    22    28    34\\n 5    11    17    23    29    35\\n 6    12    18    24    30    36]]]\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 output should be\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ [1+ 7+13   19+25+31\\n  2+ 8+14   20+26+32\\n  3+ 9+15   21+27+33\\n  4+10+16   22+28+34\\n  5+11+17   23+29+35\\n  6+12+18   24+30+36]]]\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\u003eor\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[   [21    75\\n    24    78\\n    27    81\\n    30    84\\n    33    87\\n    36    90]]]\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\u003eGood luck!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":42856,"title":" Block average","description":"Given a matrix, calculate the block average of each disjoint sub-matrix of the same size. Assume that the size of the matrix along each dimension is an integer multiple of the size of the sub-matrix along the same dimension. \r\n\r\n* Input: matrix *A* and the size of each sub-matrix *subsz*\r\n* Output: *B = blkavg(A,subsz)*\r\n\r\nExample: \r\n\r\n    A = [2  0  1  3  5  7];\r\n    subsz = [1  2];\r\n    B = [1  2  6];\r\n\r\n\r\nHint: this is related to \u003chttp://www.mathworks.com/matlabcentral/cody/problems/42854-crunch-that-matrix Problem 42854. Crunch that matrix!\u003e.\r\n\r\nNext problem: \u003chttp://www.mathworks.com/matlabcentral/cody/problems/42858-block-average-ignoring-nan-values \r\nProblem 42858. Block average ignoring NaN values\u003e","description_html":"\u003cp\u003eGiven a matrix, calculate the block average of each disjoint sub-matrix of the same size. Assume that the size of the matrix along each dimension is an integer multiple of the size of the sub-matrix along the same dimension.\u003c/p\u003e\u003cul\u003e\u003cli\u003eInput: matrix \u003cb\u003eA\u003c/b\u003e and the size of each sub-matrix \u003cb\u003esubsz\u003c/b\u003e\u003c/li\u003e\u003cli\u003eOutput: \u003cb\u003eB = blkavg(A,subsz)\u003c/b\u003e\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cpre\u003e    A = [2  0  1  3  5  7];\r\n    subsz = [1  2];\r\n    B = [1  2  6];\u003c/pre\u003e\u003cp\u003eHint: this is related to \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/42854-crunch-that-matrix\"\u003eProblem 42854. Crunch that matrix!\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eNext problem: \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/42858-block-average-ignoring-nan-values\"\u003eProblem 42858. Block average ignoring NaN values\u003c/a\u003e\u003c/p\u003e","function_template":"function B = blkavg(A,subsz)\r\n  B = A;\r\nend","test_suite":"%%\r\nA = [2  0  1  3  5  7];\r\nsubsz = [1 2];\r\nB = [1 2 6];\r\nassert(norm(B-blkavg(A,subsz)) \u003c 1e-10)\r\n\r\n%%\r\nA = [1 2 3 4 5 6 7 8 9].';\r\nsubsz = [3,1];\r\nB = [2 5 8].';\r\nassert(norm(B-blkavg(A,subsz)) \u003c 1e-10)\r\n\r\n%%\r\nA = [1     1     1     2     2     2\r\n     1     1     1     2     2     2\r\n     3     3     3     4     4     4\r\n     3     3     3     4     4     4];\r\nsubsz = [2   3];\r\nB = [1    2\r\n     3    4];\r\nassert(norm(B-blkavg(A,subsz)) \u003c 1e-10)\r\n\r\n%%\r\nA = rand(100,300);\r\nsubsz = size(A);\r\nB = mean(A(:));\r\nassert(norm(B-blkavg(A,subsz)) \u003c 1e-10)\r\n\r\n%%\r\nsubsz = [4,6];\r\nB = 10*rand(10,20);\r\nA = repelem(B,subsz(1),subsz(2));\r\nassert(norm(B-blkavg(A,subsz)) \u003c 1e-10)","published":true,"deleted":false,"likes_count":4,"comments_count":1,"created_by":12569,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":47,"test_suite_updated_at":"2016-05-21T16:50:42.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2016-05-21T02:56:16.000Z","updated_at":"2026-04-06T19:34:11.000Z","published_at":"2016-05-21T15:43:54.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven a matrix, calculate the block average of each disjoint sub-matrix of the same size. Assume that the size of the matrix along each dimension is an integer multiple of the size of the sub-matrix along the same dimension.\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\u003eInput: matrix\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and the size of each sub-matrix\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esubsz\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:\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\u003eB = blkavg(A,subsz)\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[    A = [2  0  1  3  5  7];\\n    subsz = [1  2];\\n    B = [1  2  6];]]\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\u003eHint: this is related to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/42854-crunch-that-matrix\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 42854. Crunch that matrix!\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\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=\\\"http://www.mathworks.com/matlabcentral/cody/problems/42858-block-average-ignoring-nan-values\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 42858. Block average ignoring NaN values\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":42858,"title":"Block average ignoring NaN values","description":"Given a matrix, calculate the block average of each disjoint sub-matrix while ignoring *NaN* values. Assume that the size of the matrix along each dimension is an integer multiple of the size of the sub-matrix along the same dimension.\r\n\r\n* Input: matrix *A* and the size of each sub-matrix *subsz*\r\n* Output: *B = blknanavg(A,subsz)*\r\n    \r\n\r\nExample:\r\n\r\n    A = [1 2 3 4 5 6 7 8 NaN];\r\n    subsz = [1  3];\r\n    B = [2  5  (7+8)/2];\r\n\r\nHint: this is related to \u003chttp://www.mathworks.com/matlabcentral/cody/problems/42856-block-average Problem 42856. Block average\u003e.","description_html":"\u003cp\u003eGiven a matrix, calculate the block average of each disjoint sub-matrix while ignoring \u003cb\u003eNaN\u003c/b\u003e values. Assume that the size of the matrix along each dimension is an integer multiple of the size of the sub-matrix along the same dimension.\u003c/p\u003e\u003cul\u003e\u003cli\u003eInput: matrix \u003cb\u003eA\u003c/b\u003e and the size of each sub-matrix \u003cb\u003esubsz\u003c/b\u003e\u003c/li\u003e\u003cli\u003eOutput: \u003cb\u003eB = blknanavg(A,subsz)\u003c/b\u003e\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cpre\u003e    A = [1 2 3 4 5 6 7 8 NaN];\r\n    subsz = [1  3];\r\n    B = [2  5  (7+8)/2];\u003c/pre\u003e\u003cp\u003eHint: this is related to \u003ca href = \"http://www.mathworks.com/matlabcentral/cody/problems/42856-block-average\"\u003eProblem 42856. Block average\u003c/a\u003e.\u003c/p\u003e","function_template":"function B = blknanavg(A)\r\n  B = A;\r\nend","test_suite":"%%\r\nA = [1 2 3 4 5 6 7 8 NaN];\r\nsubsz = [1  3];\r\nB = [2  5  (7+8)/2];\r\nassert(norm(B-blknanavg(A,subsz)) \u003c 1e-10)\r\n\r\n%%\r\nA = [1 2 3 4 NaN 6 7 NaN 9].';\r\nsubsz = [3,1];\r\nB = [2 5 8].';\r\nassert(norm(B-blknanavg(A,subsz)) \u003c 1e-10)\r\n\r\n%%\r\nA = [1       1     1       2     NaN       2\r\n     1     NaN     1     NaN       2     NaN\r\n     3       3     3     NaN     NaN     4\r\n     3       3     3     NaN       4     4];\r\nsubsz = [2   3];\r\nB = [1    2\r\n     3    4];\r\nassert(norm(B-blknanavg(A,subsz)) \u003c 1e-10)\r\n\r\n%%\r\nA = rand(100,300);\r\nA(randperm(numel(A),10)) = NaN;\r\nsubsz = size(A);\r\nB = mean(A(:),'omitnan');\r\nassert(norm(B-blknanavg(A,subsz)) \u003c 1e-10)\r\n\r\n%%\r\nsubsz = [4,6];\r\nB = 10*rand(10,20);\r\nA = repelem(B,subsz(1),subsz(2));\r\nA(randperm(numel(A),10)) = NaN;\r\nassert(norm(B-blknanavg(A,subsz)) \u003c 1e-10)","published":true,"deleted":false,"likes_count":2,"comments_count":1,"created_by":12569,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":43,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":24,"created_at":"2016-05-21T19:53:06.000Z","updated_at":"2026-04-06T19:37:34.000Z","published_at":"2016-05-21T20:04:51.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven a matrix, calculate the block average of each disjoint sub-matrix while ignoring\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\u003eNaN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e values. Assume that the size of the matrix along each dimension is an integer multiple of the size of the sub-matrix along the same dimension.\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\u003eInput: matrix\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and the size of each sub-matrix\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esubsz\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:\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\u003eB = blknanavg(A,subsz)\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[    A = [1 2 3 4 5 6 7 8 NaN];\\n    subsz = [1  3];\\n    B = [2  5  (7+8)/2];]]\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\u003eHint: this is related to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/42856-block-average\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 42856. Block average\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":43609,"title":"Sort rows of a matrix","description":"Sort rows of matrix A in an ascending order according to the last column\r\n\r\nExample input:\r\n\r\n  A = [1 2 3;7 8 9;4 5 6];\r\n\r\nExample output:\r\n\r\n  A = [1 2 3;4 5 6;7 8 9];\r\n","description_html":"\u003cp\u003eSort rows of matrix A in an ascending order according to the last column\u003c/p\u003e\u003cp\u003eExample input:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eA = [1 2 3;7 8 9;4 5 6];\r\n\u003c/pre\u003e\u003cp\u003eExample output:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eA = [1 2 3;4 5 6;7 8 9];\r\n\u003c/pre\u003e","function_template":"function y = your_fcn_name(A)\r\n y = ?;\r\nend","test_suite":"%%\r\nA = magic(5);\r\ny_correct = [10 12 19 21  3;\r\n             11 18 25  2  9;\r\n             17 24  1  8 15;\r\n             23  5  7 14 16;\r\n              4  6 13 20 22];\r\nassert(isequal(your_fcn_name(A),y_correct))\r\n\r\n%%\r\nA = 1:5;\r\ny_correct = A;\r\nassert(isequal(your_fcn_name(A),y_correct))\r\n\r\n%%\r\nA = [1:4; 9:12; 13:16; 5:8];\r\ny_correct = reshape((1:16),[4,4])';\r\nassert(isequal(your_fcn_name(A),y_correct))\r\n\r\n%%\r\nA = (1:10)';\r\ny_correct = A;\r\nind = rand(10,1); [~,indA] = sort(ind); A = A(indA);\r\nassert(isequal(your_fcn_name(A),y_correct))\r\n\r\n%%\r\nA = [3:7; 10:-1:6; -4:0; 2:-1:-2];\r\ny_correct = flipud(A);\r\nassert(isequal(your_fcn_name(A),y_correct))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":29461,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":97,"test_suite_updated_at":"2016-12-05T18:47:25.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2016-10-24T15:59:33.000Z","updated_at":"2026-04-01T07:37:12.000Z","published_at":"2016-10-24T15:59:33.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\u003eSort rows of matrix A in an ascending order according to the last column\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample input:\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[A = [1 2 3;7 8 9;4 5 6];]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample output:\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[A = [1 2 3;4 5 6;7 8 9];]]\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":43803,"title":"Cookie Cutters","description":"Given a larger and smaller matrix, perform element-by-element multiplication on the smaller matrix and a sub-matrix of the larger matrix with a given offset. Return that matrix. For example, given \r\n\r\n m =\r\n   [ 17  24   1   8  15\r\n     23   5   7  14  16\r\n      4   6  13  20  22\r\n     10  12  19  21   3\r\n     11  18  25   2   9 ]\r\n\r\nand \r\n\r\n n =\r\n   [ 1 1 1\r\n     1 1 1 ]\r\n\r\nand o = [2 3], the result would be\r\n\r\n    7  14  16\r\n   13  20  22\r\n\r\nThe overlap of the two matrices will always be valid, so [4 5] would not be a valid offset for this example problem.\r\n\r\n","description_html":"\u003cp\u003eGiven a larger and smaller matrix, perform element-by-element multiplication on the smaller matrix and a sub-matrix of the larger matrix with a given offset. Return that matrix. For example, given\u003c/p\u003e\u003cpre\u003e m =\r\n   [ 17  24   1   8  15\r\n     23   5   7  14  16\r\n      4   6  13  20  22\r\n     10  12  19  21   3\r\n     11  18  25   2   9 ]\u003c/pre\u003e\u003cp\u003eand\u003c/p\u003e\u003cpre\u003e n =\r\n   [ 1 1 1\r\n     1 1 1 ]\u003c/pre\u003e\u003cp\u003eand o = [2 3], the result would be\u003c/p\u003e\u003cpre\u003e    7  14  16\r\n   13  20  22\u003c/pre\u003e\u003cp\u003eThe overlap of the two matrices will always be valid, so [4 5] would not be a valid offset for this example problem.\u003c/p\u003e","function_template":"function y = cookiecutter(m,n,o)\r\n  y = x;\r\nend","test_suite":"%%\r\nm = magic(5);\r\nn = ones(2,3);\r\no = [2 3];\r\ny_correct = [7,14,16;13,20,22];\r\nassert(isequal(cookiecutter(m,n,o),y_correct))\r\n%%\r\nm = 1;\r\nn = 8;\r\no = [1 1];\r\ny_correct = 8;\r\nassert(isequal(cookiecutter(m,n,o),y_correct))\r\n%%\r\nm = magic(20);\r\nn = ones(3);\r\no = [17 17];\r\ny_correct = [64,338,339;357,43,42;377,23,22];\r\nassert(isequal(cookiecutter(m,n,o),y_correct))\r\n%%\r\nm = magic(20);\r\nn = 5.*ones(2,3);\r\no = [4 10];\r\ny_correct = [350,355,1645;450,455,1545];\r\nassert(isequal(cookiecutter(m,n,o),y_correct))\r\n%%\r\nm = magic(7);\r\nm=m(:,1:end-1);\r\nn = spiral(3);\r\no = [5 4];\r\ny_correct = [231,336,396;246,43,6;245,8,33];\r\nassert(isequal(cookiecutter(m,n,o),y_correct))","published":true,"deleted":false,"likes_count":2,"comments_count":2,"created_by":93456,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":67,"test_suite_updated_at":"2017-01-04T22:57:15.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2016-12-13T23:29:27.000Z","updated_at":"2026-04-01T07:38:08.000Z","published_at":"2016-12-13T23:29:27.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven a larger and smaller matrix, perform element-by-element multiplication on the smaller matrix and a sub-matrix of the larger matrix with a given offset. Return that matrix. For example, given\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[ m =\\n   [ 17  24   1   8  15\\n     23   5   7  14  16\\n      4   6  13  20  22\\n     10  12  19  21   3\\n     11  18  25   2   9 ]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eand\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[ n =\\n   [ 1 1 1\\n     1 1 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eand o = [2 3], the result would be\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[    7  14  16\\n   13  20  22]]\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 overlap of the two matrices will always be valid, so [4 5] would not be a valid offset for this example problem.\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":43964,"title":"Vector to 3-Column Matrix ","description":"Consider a vector *A* such as \r\n\r\n  A = [1 2 3 3 4 5 6]\r\n\r\nCan you convert this vector to a three-column matrix like this:\r\n\r\n  M = [1 2 3\r\n       2 3 3\r\n       3 3 4\r\n       3 4 5\r\n       4 5 6]\r\n \r\n ","description_html":"\u003cp\u003eConsider a vector \u003cb\u003eA\u003c/b\u003e such as\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eA = [1 2 3 3 4 5 6]\r\n\u003c/pre\u003e\u003cp\u003eCan you convert this vector to a three-column matrix like this:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eM = [1 2 3\r\n     2 3 3\r\n     3 3 4\r\n     3 4 5\r\n     4 5 6]\r\n\u003c/pre\u003e","function_template":"function M = vector2matrix(A)\r\n\r\nend","test_suite":"%%\r\nA=[1 2 3 3 4 5 6];\r\nM=[1 2 3\r\n   2 3 3\r\n   3 3 4\r\n   3 4 5\r\n   4 5 6];\r\nassert(isequal(vector2matrix(A),M))\r\n%%\r\nA=1:100;\r\nM=[1 2 3;2 3 4;3 4 5;4 5 6;5 6 7;6 7 8;7 8 9;8 9 10;9 10 11;10 11 12;11 12 13;12 13 14;13 14 15;14 15 16;15 16 17;16 17 18;17 18 19;18 19 20;19 20 21;20 21 22;21 22 23;22 23 24;23 24 25;24 25 26;25 26 27;26 27 28;27 28 29;28 29 30;29 30 31;30 31 32;31 32 33;32 33 34;33 34 35;34 35 36;35 36 37;36 37 38;37 38 39;38 39 40;39 40 41;40 41 42;41 42 43;42 43 44;43 44 45;44 45 46;45 46 47;46 47 48;47 48 49;48 49 50;49 50 51;50 51 52;51 52 53;52 53 54;53 54 55;54 55 56;55 56 57;56 57 58;57 58 59;58 59 60;59 60 61;60 61 62;61 62 63;62 63 64;63 64 65;64 65 66;65 66 67;66 67 68;67 68 69;68 69 70;69 70 71;70 71 72;71 72 73;72 73 74;73 74 75;74 75 76;75 76 77;76 77 78;77 78 79;78 79 80;79 80 81;80 81 82;81 82 83;82 83 84;83 84 85;84 85 86;85 86 87;86 87 88;87 88 89;88 89 90;89 90 91;90 91 92;91 92 93;92 93 94;93 94 95;94 95 96;95 96 97;96 97 98;97 98 99;98 99 100]\r\nassert(isequal(vector2matrix(A),M))\r\n%%\r\nA=[8 9 5];\r\nM=[8 9 5];\r\nassert(isequal(vector2matrix(A),M))\r\n%%\r\nA=[1 9 5 4];\r\nM=[1 9 5;9 5 4];\r\nassert(isequal(vector2matrix(A),M))\r\n","published":true,"deleted":false,"likes_count":3,"comments_count":0,"created_by":22216,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":106,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":24,"created_at":"2016-12-22T11:32:35.000Z","updated_at":"2026-04-01T07:39:06.000Z","published_at":"2016-12-22T11:32:43.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\u003eConsider a vector\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 such as\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[A = [1 2 3 3 4 5 6]]]\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\u003eCan you convert this vector to a three-column matrix like this:\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[M = [1 2 3\\n     2 3 3\\n     3 3 4\\n     3 4 5\\n     4 5 6]]]\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":43966,"title":"Matrix to 3-Column Matrix","description":"Consider a matrix *A* such as\r\n\r\n  A = [1 2 3 3 4 5 6;\r\n       2 3 4 5 6 7 8];\r\n\r\nCan you convert this matrix to a three-column matrix like this:\r\n\r\n\r\n  M=[1 2 3;\r\n     2 3 3;\r\n     3 3 4;\r\n     3 4 5;\r\n     4 5 6;\r\n     2 3 4;\r\n     3 4 5;\r\n     4 5 6;\r\n     5 6 7;\r\n     6 7 8]\r\n\r\n*hint:* please look at \r\n\u003chttps://www.mathworks.com/matlabcentral/cody/problems/43964-vector-to-3-column-matrix Problem 43964\u003e","description_html":"\u003cp\u003eConsider a matrix \u003cb\u003eA\u003c/b\u003e such as\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eA = [1 2 3 3 4 5 6;\r\n     2 3 4 5 6 7 8];\r\n\u003c/pre\u003e\u003cp\u003eCan you convert this matrix to a three-column matrix like this:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eM=[1 2 3;\r\n   2 3 3;\r\n   3 3 4;\r\n   3 4 5;\r\n   4 5 6;\r\n   2 3 4;\r\n   3 4 5;\r\n   4 5 6;\r\n   5 6 7;\r\n   6 7 8]\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003ehint:\u003c/b\u003e please look at  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/43964-vector-to-3-column-matrix\"\u003eProblem 43964\u003c/a\u003e\u003c/p\u003e","function_template":"function M = matrix2matrix(A)\r\n\r\nend","test_suite":"%%\r\nA = [1 2 3 3 4 5 6; 2 3 4 5 6 7 8];\r\nM=[1 2 3;2 3 3;3 3 4;3 4 5;4 5 6;2 3 4;3 4 5;4 5 6;5 6 7;6 7 8]\r\nassert(isequal(matrix2matrix(A),M))\r\n%%\r\nA=imread('http://www.mathworks.com/matlabcentral/profiles/3374772.jpg');\r\nA=rgb2gray(A);\r\nA=A(1:20, 1:20);\r\nM=[192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 191;192 191 191;191 191 191;191 191 192;191 192 192;192 192 193;192 193 193;193 193 193;193 193 192;193 192 193;192 193 194;193 194 195;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 191;192 191 191;191 191 191;191 191 192;191 192 192;192 192 193;192 193 193;193 193 193;193 193 192;193 192 193;192 193 194;193 194 194;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 191;192 191 191;191 191 191;191 191 192;191 192 192;192 192 193;192 193 193;193 193 193;193 193 192;193 192 192;192 192 193;192 193 194;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 191;192 191 191;191 191 191;191 191 192;191 192 192;192 192 193;192 193 193;193 193 193;193 193 191;193 191 192;191 192 193;192 193 194;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 191;192 191 191;191 191 191;191 191 192;191 192 192;192 192 193;192 193 193;193 193 193;193 193 191;193 191 192;191 192 193;192 193 193;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 191;192 191 191;191 191 191;191 191 192;191 192 192;192 192 193;192 193 193;193 193 193;193 193 191;193 191 191;191 191 192;191 192 193;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 191;192 191 191;191 191 191;191 191 192;191 192 192;192 192 193;192 193 193;193 193 193;193 193 190;193 190 191;190 191 192;191 192 193;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 191;192 191 191;191 191 191;191 191 192;191 192 192;192 192 193;192 193 193;193 193 193;193 193 190;193 190 191;190 191 192;191 192 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 192;193 192 192;192 192 192;192 192 192;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 192;193 192 192;192 192 192;192 192 192;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;193 193 193;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 193;192 193 193;193 193 193;193 193 193;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 192;192 192 193;192 193 193;193 193 193;193 193 193;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 192;191 192 192;192 192 192;192 192 192;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 191;191 191 190;191 190 190;190 190 190;190 190 190;190 189 189;189 189 188;189 188 188;188 188 189;188 189 189;189 189 190;189 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 189 189;189 189 188;189 188 188;188 188 189;188 189 189;189 189 190;189 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;189 189 188;189 188 188;188 188 188;188 188 188;188 188 189;188 189 189;189 189 190;189 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;190 190 190;189 189 188;189 188 187;188 187 187;187 187 188;187 188 189;188 189 189;189 189 189;189 189 189;189 189 189;189 189 189;189 189 189;189 189 189;189 189 189;189 189 189;189 189 189;189 189 189;189 189 189;189 189 189];\r\nassert(isequal(matrix2matrix(A),M))\r\n%%\r\nA = [1 2 3];\r\nM=[1 2 3];\r\nassert(isequal(matrix2matrix(A),M))\r\n%%\r\nA = [1 2 3;2 3 4];\r\nM=A;\r\nassert(isequal(matrix2matrix(A),M))\r\n%%\r\nA = rand(1000000,3);\r\nM=A;\r\nassert(isequal(matrix2matrix(A),M))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":22216,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":55,"test_suite_updated_at":"2016-12-23T10:22:14.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2016-12-23T10:05:58.000Z","updated_at":"2026-04-01T07:39:52.000Z","published_at":"2016-12-23T10:20:46.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eConsider a matrix\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e such as\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[A = [1 2 3 3 4 5 6;\\n     2 3 4 5 6 7 8];]]\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\u003eCan you convert this matrix to a three-column matrix like this:\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[M=[1 2 3;\\n   2 3 3;\\n   3 3 4;\\n   3 4 5;\\n   4 5 6;\\n   2 3 4;\\n   3 4 5;\\n   4 5 6;\\n   5 6 7;\\n   6 7 8]]]\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\u003ehint:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e please look at \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/43964-vector-to-3-column-matrix\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 43964\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":44080,"title":"Construct a \"diagAdiag\" matrix","description":"Construct a matrix whose elements begin from 1 and end at n^2 with the order of arrangement as shown below:\r\n\r\nFor:\r\n\r\n  n = 4\r\n\r\noutput\r\n\r\n  M = \r\n[1   2   6   7;\r\n 3   5   8   13;\r\n 4   9   12  14;\r\n 10  11  15  16]\r\n\r\nNote the elements increase and decrease along alternating diagonals with the last element being always n^2.\r\n","description_html":"\u003cp\u003eConstruct a matrix whose elements begin from 1 and end at n^2 with the order of arrangement as shown below:\u003c/p\u003e\u003cp\u003eFor:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003en = 4\r\n\u003c/pre\u003e\u003cp\u003eoutput\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eM = \r\n[1   2   6   7;\r\n3   5   8   13;\r\n4   9   12  14;\r\n10  11  15  16]\r\n\u003c/pre\u003e\u003cp\u003eNote the elements increase and decrease along alternating diagonals with the last element being always n^2.\u003c/p\u003e","function_template":"function y = diagAdiag(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nx = 3;\r\ny_correct = [1 2 6; 3 5 7;4 8 9];\r\nassert(isequal(diagAdiag(x),y_correct))\r\n\r\n%%\r\nx = 4;\r\ny_correct = [1   2   6   7; 3   5   8   13;4   9   12  14;10  11  15  16];\r\nassert(isequal(diagAdiag(x),y_correct))\r\n\r\n%%\r\nx = 5;\r\ny_correct = [1 2 6 7 15;3 5 8 14 16;4 9 13 17 22;10 12 18 21 23;11 19 20 24 25];\r\nassert(isequal(diagAdiag(x),y_correct))\r\n\r\n%%\r\nx = 6;\r\ny_correct = [ 1  2  6  7 15 16;\r\n              3  5  8 14 17 26;\r\n              4  9 13 18 25 27;\r\n             10 12 19 24 28 33;\r\n             11 20 23 29 32 34;\r\n             21 22 30 31 35 36];\r\nassert(isequal(diagAdiag(x),y_correct))\r\n\r\n%%\r\nx = 7;\r\ny_correct = [ 1  2  6  7 15 16 28;\r\n              3  5  8 14 17 27 29;\r\n              4  9 13 18 26 30 39;\r\n             10 12 19 25 31 38 40;\r\n             11 20 24 32 37 41 46;\r\n             21 23 33 36 42 45 47;\r\n             22 34 35 43 44 48 49];\r\nassert(isequal(diagAdiag(x),y_correct))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":98103,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":89,"test_suite_updated_at":"2017-04-19T17:09:18.000Z","rescore_all_solutions":false,"group_id":24,"created_at":"2017-03-04T19:12:05.000Z","updated_at":"2026-04-02T22:13:25.000Z","published_at":"2017-03-04T19:15:05.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\u003eConstruct a matrix whose elements begin from 1 and end at n^2 with the order of arrangement as shown below:\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\u003eFor:\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[n = 4]]\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\u003eoutput\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[M = \\n[1   2   6   7;\\n3   5   8   13;\\n4   9   12  14;\\n10  11  15  16]]]\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\u003eNote the elements increase and decrease along alternating diagonals with the last element being always n^2.\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\"}]}"}],"no_progress_badge":{"id":53,"name":"Unknown","symbol":"unknown","description":"Partially completed groups","description_html":null,"image_location":"/images/responsive/supporting/matlabcentral/cody/badges/problem_groups_unknown_2.png","bonus":null,"players_count":0,"active":false,"created_by":null,"updated_by":null,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"created_at":"2018-01-10T23:20:29.000Z","updated_at":"2018-01-10T23:20:29.000Z","community_badge_id":null,"award_multiples":false}}