{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2025-12-14T01:33:56.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2025-12-14T00:00:00.000Z","image_id":null,"published":true,"community_created":false,"status_id":2,"is_default_group_for_player":false,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"description_opc":null,"description_html":null,"published_at":null},"problems":[{"id":61156,"title":"How Long is the Border Between Unitopia and Zerostan?","description":"Two countries, Unitopia (denoted by ones) and Zerostan (denoted by zeros) are engaged in a long-standing dispute: how long is the border between their two domains?\r\nYou are the surveyor contracted to resolve this problem once and for all.\r\nThe border between the two countries is the sum of all the line segments that separate a 1 from a 0. Only horizontal and vertical adjacencies count (4-connected neighbors). The matrix edges do not count as borders - only internal segments between 1s and 0s.\r\nThe input map will be a rectangular matrix of integers. Not all integers will be 1s and 0s, but the border you are interested in is only between 1s and 0s. Other values are ignored and do not contribute to the border length.\r\nIn every case, each country will be a 4-connected region. That is, you can make a tour of every element in a given country (all 1s or all 0s) without crossing an international boundary.\r\nExample 1\r\nSingle cell surrounded by zeros:\r\nInput:\r\n [0 0 0\r\n  0 1 0\r\n  0 0 0]\r\nOutput: 4\r\nThe 1 has four neighbors (up, down, left, right), all are 0s, so border length = 4.\r\nExample 2\r\n\r\nMatrix with other values:\r\nInput:\r\n [0 0 0 0\r\n  1 1 0 0\r\n  2 2 2 2]\r\nOutput: 3\r\nOnly 1-to-0 adjacencies (shown in red) count. The two 1s touch 0s: right 1 has 2 border segments with 0s, left 1 has 1 border segment. Total = 3. The 2s are ignored.","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(33, 33, 33); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none; white-space: normal; \"\u003e\u003cdiv style=\"block-size: 1008.33px; display: block; min-width: 0px; padding-block-start: 0px; padding-inline-start: 2px; padding-left: 2px; padding-top: 0px; perspective-origin: 333.5px 504.167px; transform-origin: 333.5px 504.167px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 21px; text-align: left; transform-origin: 309.5px 21px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eTwo countries, Unitopia (denoted by ones) and Zerostan (denoted by zeros) are engaged in a long-standing dispute: how long is the border between their two domains?\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou are the surveyor contracted to resolve this problem once and for all.\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 31.5px; text-align: left; transform-origin: 309.5px 31.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe border between the two countries is the sum of all the line segments that separate a 1 from a 0. Only horizontal and vertical adjacencies count (4-connected neighbors). The matrix edges do not count as borders - only internal segments between 1s and 0s.\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 31.5px; text-align: left; transform-origin: 309.5px 31.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe input map will be a rectangular matrix of integers. Not all integers will be 1s and 0s, but the border you are interested in is only between 1s and 0s. Other values are ignored and do not contribute to the border length.\u003c/span\u003e\u003c/span\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: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 21px; text-align: left; transform-origin: 309.5px 21px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eIn every case, each country will be a 4-connected region. That is, you can make a tour of every element in a given country (all 1s or all 0s) without crossing an international boundary.\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eExample 1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eSingle cell surrounded by zeros:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e [0 0 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e  0 1 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e  0 0 0]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eOutput: 4\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe 1 has four neighbors (up, down, left, right), all are 0s, so border length = 4.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eExample 2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 224.667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 112.333px; text-align: left; transform-origin: 309.5px 112.333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eMatrix with other values:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e [0 0 0 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e  1 1 0 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e  2 2 2 2]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eOutput: 3\u003c/span\u003e\u003c/span\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: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 21px; text-align: left; transform-origin: 309.5px 21px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eOnly 1-to-0 adjacencies (shown in red) count. The two 1s touch 0s: right 1 has 2 border segments with 0s, left 1 has 1 border segment. Total = 3. The 2s are ignored.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function borderLength = calculateBorder(map)\r\n  borderLength = 0;\r\nend","test_suite":"%% Test 1: Single cell surrounded by zeros\r\nmap = [0 0 0;\r\n       0 1 0;\r\n       0 0 0];\r\nassert(isequal(calculateBorder(map), 4))\r\n\r\n%% Test 2: Two adjacent cells\r\nmap = [0 0 0;\r\n       1 1 0;\r\n       0 0 0];\r\nassert(isequal(calculateBorder(map), 5))\r\n\r\n%% Test 3: Matrix with other values\r\nmap = [0 0 0;\r\n       1 1 0;\r\n       2 2 2];\r\nassert(isequal(calculateBorder(map), 3))\r\n\r\n%% Test 4: No border - only 1s\r\nmap = [1 1 1;\r\n       1 1 1];\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 5: No border - only 0s\r\nmap = [0 0 0;\r\n       0 0 0];\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 6: No border - no 1s or 0s\r\nmap = [2 3 4;\r\n       5 6 7];\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 7: Single element - 1\r\nmap = 1;\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 8: Single element - 0\r\nmap = 0;\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 9: L-shaped region of 1s\r\nmap = [0 0 0 0;\r\n       0 1 1 0;\r\n       0 0 1 0;\r\n       0 0 1 1];\r\nassert(isequal(calculateBorder(map), 9))\r\n\r\n%% Test 10: Large block of 1s surrounded by 0s\r\nmap = [0 0 0 0 0;\r\n       0 1 1 1 0;\r\n       0 1 1 1 0;\r\n       0 0 0 0 0];\r\nassert(isequal(calculateBorder(map), 10))\r\n\r\n%% Test 11: T-shaped region of 1s\r\nmap = [0 0 0 0 0;\r\n       0 1 1 1 0;\r\n       0 0 1 0 0;\r\n       0 0 1 0 0;\r\n       0 0 0 0 0];\r\nassert(isequal(calculateBorder(map), 12))\r\n\r\n%% Test 12: Rectangular block of 1s\r\nmap = [0 0 0;\r\n       1 1 0;\r\n       1 1 0;\r\n       0 0 0];\r\nassert(isequal(calculateBorder(map), 6))\r\n\r\n%% Test 13: Horizontal bar of 1s\r\nmap = [0 0 0 0 0;\r\n       0 1 1 1 0;\r\n       0 0 0 0 0];\r\nassert(isequal(calculateBorder(map), 8))\r\n\r\n%% Test 14: C-shaped region\r\nmap = [1 1 1;\r\n       1 0 0;\r\n       1 1 1];\r\nassert(isequal(calculateBorder(map), 5))\r\n\r\n%% Test 15: Nested rectangles\r\nmap = [1 1 1 1;\r\n       1 0 0 1;\r\n       1 0 0 1;\r\n       1 1 1 1];\r\nassert(isequal(calculateBorder(map), 8))\r\n\r\n%% Test 16: U-shaped region of 1s\r\nmap = [1 0 1;\r\n       1 0 1;\r\n       1 1 1];\r\nassert(isequal(calculateBorder(map), 5))\r\n\r\n%% Test 17: Mixed values with connected regions\r\nmap = [0 0 2 2;\r\n       0 1 1 2;\r\n       0 0 1 2];\r\nassert(isequal(calculateBorder(map), 4))\r\n\r\n%% Test 18: Spiral pattern\r\nmap = [1 1 1 1;\r\n       0 0 0 1;\r\n       1 1 0 1;\r\n       1 1 1 1];\r\nassert(isequal(calculateBorder(map), 9))\r\n\r\n%% Test 19: Step pattern\r\nmap = [0 0 0 0;\r\n       1 1 0 0;\r\n       1 1 1 0;\r\n       0 0 0 0];\r\nassert(isequal(calculateBorder(map), 8))\r\n\r\n%% Test 20: Large hollow square\r\nmap = [1 1 1 1 1;\r\n       1 0 0 0 1;\r\n       1 0 0 0 1;\r\n       1 0 0 0 1;\r\n       1 1 1 1 1];\r\nassert(isequal(calculateBorder(map), 12))\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":7,"edited_by":7,"edited_at":"2026-01-08T17:18:46.000Z","deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2026-01-08T17:06:36.000Z","updated_at":"2026-03-06T19:37:51.000Z","published_at":"2026-01-08T17:18:46.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\u003eTwo countries, Unitopia (denoted by ones) and Zerostan (denoted by zeros) are engaged in a long-standing dispute: how long is the border between their two domains?\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou are the surveyor contracted to resolve this problem once and for all.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe border between the two countries is the sum of all the line segments that separate a 1 from a 0. Only horizontal and vertical adjacencies count (4-connected neighbors). The matrix edges do not count as borders - only internal segments between 1s and 0s.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe input map will be a rectangular matrix of integers. Not all integers will be 1s and 0s, but the border you are interested in is only between 1s and 0s. Other values are ignored and do not contribute to the border length.\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\u003eIn every case, each country will be a 4-connected region. That is, you can make a tour of every element in a given country (all 1s or all 0s) without crossing an international boundary.\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\u003eExample 1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSingle cell surrounded by zeros:\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e [0 0 0\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e  0 1 0\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e  0 0 0]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput: 4\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe 1 has four neighbors (up, down, left, right), all are 0s, so border length = 4.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExample 2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\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=\\\"219\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"300\\\"/\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\u003eMatrix with other values:\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e [0 0 0 0\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e  1 1 0 0\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e  2 2 2 2]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput: 3\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOnly 1-to-0 adjacencies (shown in red) count. The two 1s touch 0s: right 1 has 2 border segments with 0s, left 1 has 1 border segment. Total = 3. The 2s are ignored.\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":673,"title":"Borderline Connectivity","description":"Compute the connected components of pixel borders.\r\n\r\nSuppose that h and v together describe a logical labeling of the borders between matrix elements, with h representing the horizontal borders, and v representing the vertical borders.  If the original matrix is MxN, then h will be (M+1)xN and v will be Mx(N+1) with external borders included, or (M-1)xN and Mx(N-1) respectively if external borders are not included.  Your solution should work with either sort of input.\r\n\r\nIt should return lh and lv, a labeling on h and v.  These will be the same size as h and v, and zero wherever h and v are zero.  Where h and v are nonzero, lh and lv will be an integer label indicating membership in some connected border component.  Two border locations are in the same component if they are connected by sequentially adjacent border segments whose h and v values are all 1.  Two border locations are adjacent if they meet at a corner.  Thus, h(i,j) is adjacent to h(i,j-1) and h(i,j+1), as well as v(i,j), v(i+1,j), v(i,j+1), and v(i+1,j+1) when external borders are included.\r\n\r\nAn example may make this clearer.  Consider an original matrix of size 2x4, and the following border matrices:\r\n\r\n  h = [1 1 0 0; 0 0 1 0; 0 0 0 1];\r\n  v = [0 0 1 0 1; 1 0 0 1 1];\r\n\r\nThis corresponds to the following picture, where nonzero elements of h are shown as -, elements of v are shown as |, corners are shown as +, and the eight elements of the original matrix are indicated by their index:\r\n\r\n  +-+-+ + +\r\n   1 3|5 7|\r\n  + + +-+ +\r\n  |2 4 6|8|\r\n  + + + +-+\r\n\r\nAs can be seen in the diagram, there are two separate groups of edges.  They will be labeled 1 and 2 in the final labeling.\r\n\r\n(Originally I wanted to call this problem \"Snakes on a Plane\", but that name is \u003chttp://www.mathworks.com/matlabcentral/cody/problems/424-snakes-on-a-plane already taken\u003e.)","description_html":"\u003cp\u003eCompute the connected components of pixel borders.\u003c/p\u003e\u003cp\u003eSuppose that h and v together describe a logical labeling of the borders between matrix elements, with h representing the horizontal borders, and v representing the vertical borders.  If the original matrix is MxN, then h will be (M+1)xN and v will be Mx(N+1) with external borders included, or (M-1)xN and Mx(N-1) respectively if external borders are not included.  Your solution should work with either sort of input.\u003c/p\u003e\u003cp\u003eIt should return lh and lv, a labeling on h and v.  These will be the same size as h and v, and zero wherever h and v are zero.  Where h and v are nonzero, lh and lv will be an integer label indicating membership in some connected border component.  Two border locations are in the same component if they are connected by sequentially adjacent border segments whose h and v values are all 1.  Two border locations are adjacent if they meet at a corner.  Thus, h(i,j) is adjacent to h(i,j-1) and h(i,j+1), as well as v(i,j), v(i+1,j), v(i,j+1), and v(i+1,j+1) when external borders are included.\u003c/p\u003e\u003cp\u003eAn example may make this clearer.  Consider an original matrix of size 2x4, and the following border matrices:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eh = [1 1 0 0; 0 0 1 0; 0 0 0 1];\r\nv = [0 0 1 0 1; 1 0 0 1 1];\r\n\u003c/pre\u003e\u003cp\u003eThis corresponds to the following picture, where nonzero elements of h are shown as -, elements of v are shown as |, corners are shown as +, and the eight elements of the original matrix are indicated by their index:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e+-+-+ + +\r\n 1 3|5 7|\r\n+ + +-+ +\r\n|2 4 6|8|\r\n+ + + +-+\r\n\u003c/pre\u003e\u003cp\u003eAs can be seen in the diagram, there are two separate groups of edges.  They will be labeled 1 and 2 in the final labeling.\u003c/p\u003e\u003cp\u003e(Originally I wanted to call this problem \"Snakes on a Plane\", but that name is \u003ca href=\"http://www.mathworks.com/matlabcentral/cody/problems/424-snakes-on-a-plane\"\u003ealready taken\u003c/a\u003e.)\u003c/p\u003e","function_template":"function [lh,lv] = bordercon(h,v);\r\n  lh = h;\r\n  lv = v;\r\nend","test_suite":"%%\r\nh = [1 1 0 0; 0 0 1 0; 0 0 0 1];\r\nv = [0 0 1 0 1; 1 0 0 1 1];\r\nlh_correct = [1 1 0 0; 0 0 1 0; 0 0 0 1];\r\nlv_correct = [0 0 1 0 1; 2 0 0 1 1];\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(size(lh)==size(lh_correct)));\r\nassert(all(size(lv)==size(lv_correct)));\r\nl = [lh(:);lv(:)];\r\nl_correct = [lh_correct(:);lv_correct(:)];\r\n[ul,ui,uj] = unique(l);\r\nassert(all(ul(ul~=0)'==1:max(ul)));\r\nfor i = ui'\r\n  assert(all(l_correct(l==l(i))==l_correct(i)));\r\n  assert(all(l_correct(l~=l(i))~=l_correct(i)));  \r\nend;\r\n\r\n\r\n%%\r\nh = [0 0 1 0];\r\nv = [0 1 0; 0 0 1];\r\nlh_correct = h;\r\nlv_correct = v;\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(size(lh)==size(lh_correct)));\r\nassert(all(size(lv)==size(lv_correct)));\r\nl = [lh(:);lv(:)];\r\nl_correct = [lh_correct(:);lv_correct(:)];\r\n[ul,ui,uj] = unique(l);\r\nassert(all(ul(ul~=0)'==1:max(ul)));\r\nfor i = ui'\r\n  assert(all(l_correct(l==l(i))==l_correct(i)));\r\n  assert(all(l_correct(l~=l(i))~=l_correct(i)));  \r\nend;\r\n\r\n%%\r\nh = zeros(4,5);\r\nv = zeros(5,4);\r\nlh_correct = h;\r\nlv_correct = v;\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(all(lh==lh_correct)));\r\nassert(all(all(lv==lv_correct)));\r\n\r\n%%\r\nh = ones(6,5);\r\nv = ones(5,6);\r\nlh_correct = h;\r\nlv_correct = v;\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(all(lh==lh_correct)));\r\nassert(all(all(lv==lv_correct)));\r\n\r\n%%\r\nh = [1 0 0 1; 0 0 0 0; 0 0 1 1; 0 0 0 0; 1 0 0 1];\r\nv = [1 0 0 0 1; 0 1 0 0 0; 0 1 0 0 0; 1 0 0 0 1];\r\nlh_correct = [1 0 0 5; 0 0 0 0; 0 0 4 4; 0 0 0 0; 2 0 0 6];\r\nlv_correct = [1 0 0 0 5; 0 3 0 0 0; 0 3 0 0 0; 2 0 0 0 6];\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(size(lh)==size(lh_correct)));\r\nassert(all(size(lv)==size(lv_correct)));\r\nl = [lh(:);lv(:)];\r\nl_correct = [lh_correct(:);lv_correct(:)];\r\n[ul,ui,uj] = unique(l);\r\nassert(all(ul(ul~=0)'==1:max(ul)));\r\nfor i = ui'\r\n  assert(all(l_correct(l==l(i))==l_correct(i)));\r\n  assert(all(l_correct(l~=l(i))~=l_correct(i)));  \r\nend;\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3117,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":4,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-05-08T14:04:06.000Z","updated_at":"2025-04-26T04:10:15.000Z","published_at":"2012-05-08T14:04: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\",\"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\u003eCompute the connected components of pixel borders.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose that h and v together describe a logical labeling of the borders between matrix elements, with h representing the horizontal borders, and v representing the vertical borders. If the original matrix is MxN, then h will be (M+1)xN and v will be Mx(N+1) with external borders included, or (M-1)xN and Mx(N-1) respectively if external borders are not included. Your solution should work with either sort of input.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIt should return lh and lv, a labeling on h and v. These will be the same size as h and v, and zero wherever h and v are zero. Where h and v are nonzero, lh and lv will be an integer label indicating membership in some connected border component. Two border locations are in the same component if they are connected by sequentially adjacent border segments whose h and v values are all 1. Two border locations are adjacent if they meet at a corner. Thus, h(i,j) is adjacent to h(i,j-1) and h(i,j+1), as well as v(i,j), v(i+1,j), v(i,j+1), and v(i+1,j+1) when external borders are included.\u003c/w:t\u003e\u003c/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\u003eAn example may make this clearer. Consider an original matrix of size 2x4, and the following border matrices:\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[h = [1 1 0 0; 0 0 1 0; 0 0 0 1];\\nv = [0 0 1 0 1; 1 0 0 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\u003eThis corresponds to the following picture, where nonzero elements of h are shown as -, elements of v are shown as\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e |\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, corners are shown as +, and the eight elements of the original matrix are indicated by their index:\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 1 3|5 7|\\n+ + +-+ +\\n|2 4 6|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\u003eAs can be seen in the diagram, there are two separate groups of edges. They will be labeled 1 and 2 in the final labeling.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e(Originally I wanted to call this problem \\\"Snakes on a Plane\\\", but that name is\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/424-snakes-on-a-plane\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ealready taken\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\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":61156,"title":"How Long is the Border Between Unitopia and Zerostan?","description":"Two countries, Unitopia (denoted by ones) and Zerostan (denoted by zeros) are engaged in a long-standing dispute: how long is the border between their two domains?\r\nYou are the surveyor contracted to resolve this problem once and for all.\r\nThe border between the two countries is the sum of all the line segments that separate a 1 from a 0. Only horizontal and vertical adjacencies count (4-connected neighbors). The matrix edges do not count as borders - only internal segments between 1s and 0s.\r\nThe input map will be a rectangular matrix of integers. Not all integers will be 1s and 0s, but the border you are interested in is only between 1s and 0s. Other values are ignored and do not contribute to the border length.\r\nIn every case, each country will be a 4-connected region. That is, you can make a tour of every element in a given country (all 1s or all 0s) without crossing an international boundary.\r\nExample 1\r\nSingle cell surrounded by zeros:\r\nInput:\r\n [0 0 0\r\n  0 1 0\r\n  0 0 0]\r\nOutput: 4\r\nThe 1 has four neighbors (up, down, left, right), all are 0s, so border length = 4.\r\nExample 2\r\n\r\nMatrix with other values:\r\nInput:\r\n [0 0 0 0\r\n  1 1 0 0\r\n  2 2 2 2]\r\nOutput: 3\r\nOnly 1-to-0 adjacencies (shown in red) count. The two 1s touch 0s: right 1 has 2 border segments with 0s, left 1 has 1 border segment. Total = 3. The 2s are ignored.","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(33, 33, 33); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none; white-space: normal; \"\u003e\u003cdiv style=\"block-size: 1008.33px; display: block; min-width: 0px; padding-block-start: 0px; padding-inline-start: 2px; padding-left: 2px; padding-top: 0px; perspective-origin: 333.5px 504.167px; transform-origin: 333.5px 504.167px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 21px; text-align: left; transform-origin: 309.5px 21px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eTwo countries, Unitopia (denoted by ones) and Zerostan (denoted by zeros) are engaged in a long-standing dispute: how long is the border between their two domains?\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eYou are the surveyor contracted to resolve this problem once and for all.\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 31.5px; text-align: left; transform-origin: 309.5px 31.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe border between the two countries is the sum of all the line segments that separate a 1 from a 0. Only horizontal and vertical adjacencies count (4-connected neighbors). The matrix edges do not count as borders - only internal segments between 1s and 0s.\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 31.5px; text-align: left; transform-origin: 309.5px 31.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe input map will be a rectangular matrix of integers. Not all integers will be 1s and 0s, but the border you are interested in is only between 1s and 0s. Other values are ignored and do not contribute to the border length.\u003c/span\u003e\u003c/span\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: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 21px; text-align: left; transform-origin: 309.5px 21px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eIn every case, each country will be a 4-connected region. That is, you can make a tour of every element in a given country (all 1s or all 0s) without crossing an international boundary.\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eExample 1\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eSingle cell surrounded by zeros:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e [0 0 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e  0 1 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e  0 0 0]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eOutput: 4\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe 1 has four neighbors (up, down, left, right), all are 0s, so border length = 4.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003eExample 2\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 224.667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 112.333px; text-align: left; transform-origin: 309.5px 112.333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.5px; text-align: left; transform-origin: 309.5px 10.5px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eMatrix with other values:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eInput:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e [0 0 0 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e  1 1 0 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003e  2 2 2 2]\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21.6667px; 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; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 10.8333px; text-align: left; transform-origin: 309.5px 10.8333px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eOutput: 3\u003c/span\u003e\u003c/span\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: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 309.5px 21px; text-align: left; transform-origin: 309.5px 21px; white-space-collapse: preserve; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; \"\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; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eOnly 1-to-0 adjacencies (shown in red) count. The two 1s touch 0s: right 1 has 2 border segments with 0s, left 1 has 1 border segment. Total = 3. The 2s are ignored.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function borderLength = calculateBorder(map)\r\n  borderLength = 0;\r\nend","test_suite":"%% Test 1: Single cell surrounded by zeros\r\nmap = [0 0 0;\r\n       0 1 0;\r\n       0 0 0];\r\nassert(isequal(calculateBorder(map), 4))\r\n\r\n%% Test 2: Two adjacent cells\r\nmap = [0 0 0;\r\n       1 1 0;\r\n       0 0 0];\r\nassert(isequal(calculateBorder(map), 5))\r\n\r\n%% Test 3: Matrix with other values\r\nmap = [0 0 0;\r\n       1 1 0;\r\n       2 2 2];\r\nassert(isequal(calculateBorder(map), 3))\r\n\r\n%% Test 4: No border - only 1s\r\nmap = [1 1 1;\r\n       1 1 1];\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 5: No border - only 0s\r\nmap = [0 0 0;\r\n       0 0 0];\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 6: No border - no 1s or 0s\r\nmap = [2 3 4;\r\n       5 6 7];\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 7: Single element - 1\r\nmap = 1;\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 8: Single element - 0\r\nmap = 0;\r\nassert(isequal(calculateBorder(map), 0))\r\n\r\n%% Test 9: L-shaped region of 1s\r\nmap = [0 0 0 0;\r\n       0 1 1 0;\r\n       0 0 1 0;\r\n       0 0 1 1];\r\nassert(isequal(calculateBorder(map), 9))\r\n\r\n%% Test 10: Large block of 1s surrounded by 0s\r\nmap = [0 0 0 0 0;\r\n       0 1 1 1 0;\r\n       0 1 1 1 0;\r\n       0 0 0 0 0];\r\nassert(isequal(calculateBorder(map), 10))\r\n\r\n%% Test 11: T-shaped region of 1s\r\nmap = [0 0 0 0 0;\r\n       0 1 1 1 0;\r\n       0 0 1 0 0;\r\n       0 0 1 0 0;\r\n       0 0 0 0 0];\r\nassert(isequal(calculateBorder(map), 12))\r\n\r\n%% Test 12: Rectangular block of 1s\r\nmap = [0 0 0;\r\n       1 1 0;\r\n       1 1 0;\r\n       0 0 0];\r\nassert(isequal(calculateBorder(map), 6))\r\n\r\n%% Test 13: Horizontal bar of 1s\r\nmap = [0 0 0 0 0;\r\n       0 1 1 1 0;\r\n       0 0 0 0 0];\r\nassert(isequal(calculateBorder(map), 8))\r\n\r\n%% Test 14: C-shaped region\r\nmap = [1 1 1;\r\n       1 0 0;\r\n       1 1 1];\r\nassert(isequal(calculateBorder(map), 5))\r\n\r\n%% Test 15: Nested rectangles\r\nmap = [1 1 1 1;\r\n       1 0 0 1;\r\n       1 0 0 1;\r\n       1 1 1 1];\r\nassert(isequal(calculateBorder(map), 8))\r\n\r\n%% Test 16: U-shaped region of 1s\r\nmap = [1 0 1;\r\n       1 0 1;\r\n       1 1 1];\r\nassert(isequal(calculateBorder(map), 5))\r\n\r\n%% Test 17: Mixed values with connected regions\r\nmap = [0 0 2 2;\r\n       0 1 1 2;\r\n       0 0 1 2];\r\nassert(isequal(calculateBorder(map), 4))\r\n\r\n%% Test 18: Spiral pattern\r\nmap = [1 1 1 1;\r\n       0 0 0 1;\r\n       1 1 0 1;\r\n       1 1 1 1];\r\nassert(isequal(calculateBorder(map), 9))\r\n\r\n%% Test 19: Step pattern\r\nmap = [0 0 0 0;\r\n       1 1 0 0;\r\n       1 1 1 0;\r\n       0 0 0 0];\r\nassert(isequal(calculateBorder(map), 8))\r\n\r\n%% Test 20: Large hollow square\r\nmap = [1 1 1 1 1;\r\n       1 0 0 0 1;\r\n       1 0 0 0 1;\r\n       1 0 0 0 1;\r\n       1 1 1 1 1];\r\nassert(isequal(calculateBorder(map), 12))\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":7,"edited_by":7,"edited_at":"2026-01-08T17:18:46.000Z","deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2026-01-08T17:06:36.000Z","updated_at":"2026-03-06T19:37:51.000Z","published_at":"2026-01-08T17:18:46.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\u003eTwo countries, Unitopia (denoted by ones) and Zerostan (denoted by zeros) are engaged in a long-standing dispute: how long is the border between their two domains?\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou are the surveyor contracted to resolve this problem once and for all.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe border between the two countries is the sum of all the line segments that separate a 1 from a 0. Only horizontal and vertical adjacencies count (4-connected neighbors). The matrix edges do not count as borders - only internal segments between 1s and 0s.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe input map will be a rectangular matrix of integers. Not all integers will be 1s and 0s, but the border you are interested in is only between 1s and 0s. Other values are ignored and do not contribute to the border length.\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\u003eIn every case, each country will be a 4-connected region. That is, you can make a tour of every element in a given country (all 1s or all 0s) without crossing an international boundary.\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\u003eExample 1\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSingle cell surrounded by zeros:\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e [0 0 0\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e  0 1 0\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e  0 0 0]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput: 4\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe 1 has four neighbors (up, down, left, right), all are 0s, so border length = 4.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExample 2\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\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=\\\"219\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"300\\\"/\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\u003eMatrix with other values:\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\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:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e [0 0 0 0\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e  1 1 0 0\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e  2 2 2 2]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput: 3\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOnly 1-to-0 adjacencies (shown in red) count. The two 1s touch 0s: right 1 has 2 border segments with 0s, left 1 has 1 border segment. Total = 3. The 2s are ignored.\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":673,"title":"Borderline Connectivity","description":"Compute the connected components of pixel borders.\r\n\r\nSuppose that h and v together describe a logical labeling of the borders between matrix elements, with h representing the horizontal borders, and v representing the vertical borders.  If the original matrix is MxN, then h will be (M+1)xN and v will be Mx(N+1) with external borders included, or (M-1)xN and Mx(N-1) respectively if external borders are not included.  Your solution should work with either sort of input.\r\n\r\nIt should return lh and lv, a labeling on h and v.  These will be the same size as h and v, and zero wherever h and v are zero.  Where h and v are nonzero, lh and lv will be an integer label indicating membership in some connected border component.  Two border locations are in the same component if they are connected by sequentially adjacent border segments whose h and v values are all 1.  Two border locations are adjacent if they meet at a corner.  Thus, h(i,j) is adjacent to h(i,j-1) and h(i,j+1), as well as v(i,j), v(i+1,j), v(i,j+1), and v(i+1,j+1) when external borders are included.\r\n\r\nAn example may make this clearer.  Consider an original matrix of size 2x4, and the following border matrices:\r\n\r\n  h = [1 1 0 0; 0 0 1 0; 0 0 0 1];\r\n  v = [0 0 1 0 1; 1 0 0 1 1];\r\n\r\nThis corresponds to the following picture, where nonzero elements of h are shown as -, elements of v are shown as |, corners are shown as +, and the eight elements of the original matrix are indicated by their index:\r\n\r\n  +-+-+ + +\r\n   1 3|5 7|\r\n  + + +-+ +\r\n  |2 4 6|8|\r\n  + + + +-+\r\n\r\nAs can be seen in the diagram, there are two separate groups of edges.  They will be labeled 1 and 2 in the final labeling.\r\n\r\n(Originally I wanted to call this problem \"Snakes on a Plane\", but that name is \u003chttp://www.mathworks.com/matlabcentral/cody/problems/424-snakes-on-a-plane already taken\u003e.)","description_html":"\u003cp\u003eCompute the connected components of pixel borders.\u003c/p\u003e\u003cp\u003eSuppose that h and v together describe a logical labeling of the borders between matrix elements, with h representing the horizontal borders, and v representing the vertical borders.  If the original matrix is MxN, then h will be (M+1)xN and v will be Mx(N+1) with external borders included, or (M-1)xN and Mx(N-1) respectively if external borders are not included.  Your solution should work with either sort of input.\u003c/p\u003e\u003cp\u003eIt should return lh and lv, a labeling on h and v.  These will be the same size as h and v, and zero wherever h and v are zero.  Where h and v are nonzero, lh and lv will be an integer label indicating membership in some connected border component.  Two border locations are in the same component if they are connected by sequentially adjacent border segments whose h and v values are all 1.  Two border locations are adjacent if they meet at a corner.  Thus, h(i,j) is adjacent to h(i,j-1) and h(i,j+1), as well as v(i,j), v(i+1,j), v(i,j+1), and v(i+1,j+1) when external borders are included.\u003c/p\u003e\u003cp\u003eAn example may make this clearer.  Consider an original matrix of size 2x4, and the following border matrices:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eh = [1 1 0 0; 0 0 1 0; 0 0 0 1];\r\nv = [0 0 1 0 1; 1 0 0 1 1];\r\n\u003c/pre\u003e\u003cp\u003eThis corresponds to the following picture, where nonzero elements of h are shown as -, elements of v are shown as |, corners are shown as +, and the eight elements of the original matrix are indicated by their index:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e+-+-+ + +\r\n 1 3|5 7|\r\n+ + +-+ +\r\n|2 4 6|8|\r\n+ + + +-+\r\n\u003c/pre\u003e\u003cp\u003eAs can be seen in the diagram, there are two separate groups of edges.  They will be labeled 1 and 2 in the final labeling.\u003c/p\u003e\u003cp\u003e(Originally I wanted to call this problem \"Snakes on a Plane\", but that name is \u003ca href=\"http://www.mathworks.com/matlabcentral/cody/problems/424-snakes-on-a-plane\"\u003ealready taken\u003c/a\u003e.)\u003c/p\u003e","function_template":"function [lh,lv] = bordercon(h,v);\r\n  lh = h;\r\n  lv = v;\r\nend","test_suite":"%%\r\nh = [1 1 0 0; 0 0 1 0; 0 0 0 1];\r\nv = [0 0 1 0 1; 1 0 0 1 1];\r\nlh_correct = [1 1 0 0; 0 0 1 0; 0 0 0 1];\r\nlv_correct = [0 0 1 0 1; 2 0 0 1 1];\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(size(lh)==size(lh_correct)));\r\nassert(all(size(lv)==size(lv_correct)));\r\nl = [lh(:);lv(:)];\r\nl_correct = [lh_correct(:);lv_correct(:)];\r\n[ul,ui,uj] = unique(l);\r\nassert(all(ul(ul~=0)'==1:max(ul)));\r\nfor i = ui'\r\n  assert(all(l_correct(l==l(i))==l_correct(i)));\r\n  assert(all(l_correct(l~=l(i))~=l_correct(i)));  \r\nend;\r\n\r\n\r\n%%\r\nh = [0 0 1 0];\r\nv = [0 1 0; 0 0 1];\r\nlh_correct = h;\r\nlv_correct = v;\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(size(lh)==size(lh_correct)));\r\nassert(all(size(lv)==size(lv_correct)));\r\nl = [lh(:);lv(:)];\r\nl_correct = [lh_correct(:);lv_correct(:)];\r\n[ul,ui,uj] = unique(l);\r\nassert(all(ul(ul~=0)'==1:max(ul)));\r\nfor i = ui'\r\n  assert(all(l_correct(l==l(i))==l_correct(i)));\r\n  assert(all(l_correct(l~=l(i))~=l_correct(i)));  \r\nend;\r\n\r\n%%\r\nh = zeros(4,5);\r\nv = zeros(5,4);\r\nlh_correct = h;\r\nlv_correct = v;\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(all(lh==lh_correct)));\r\nassert(all(all(lv==lv_correct)));\r\n\r\n%%\r\nh = ones(6,5);\r\nv = ones(5,6);\r\nlh_correct = h;\r\nlv_correct = v;\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(all(lh==lh_correct)));\r\nassert(all(all(lv==lv_correct)));\r\n\r\n%%\r\nh = [1 0 0 1; 0 0 0 0; 0 0 1 1; 0 0 0 0; 1 0 0 1];\r\nv = [1 0 0 0 1; 0 1 0 0 0; 0 1 0 0 0; 1 0 0 0 1];\r\nlh_correct = [1 0 0 5; 0 0 0 0; 0 0 4 4; 0 0 0 0; 2 0 0 6];\r\nlv_correct = [1 0 0 0 5; 0 3 0 0 0; 0 3 0 0 0; 2 0 0 0 6];\r\n[lh,lv] = bordercon(h,v);\r\nassert(all(size(lh)==size(lh_correct)));\r\nassert(all(size(lv)==size(lv_correct)));\r\nl = [lh(:);lv(:)];\r\nl_correct = [lh_correct(:);lv_correct(:)];\r\n[ul,ui,uj] = unique(l);\r\nassert(all(ul(ul~=0)'==1:max(ul)));\r\nfor i = ui'\r\n  assert(all(l_correct(l==l(i))==l_correct(i)));\r\n  assert(all(l_correct(l~=l(i))~=l_correct(i)));  \r\nend;\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3117,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":4,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-05-08T14:04:06.000Z","updated_at":"2025-04-26T04:10:15.000Z","published_at":"2012-05-08T14:04: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\",\"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\u003eCompute the connected components of pixel borders.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSuppose that h and v together describe a logical labeling of the borders between matrix elements, with h representing the horizontal borders, and v representing the vertical borders. If the original matrix is MxN, then h will be (M+1)xN and v will be Mx(N+1) with external borders included, or (M-1)xN and Mx(N-1) respectively if external borders are not included. Your solution should work with either sort of input.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIt should return lh and lv, a labeling on h and v. These will be the same size as h and v, and zero wherever h and v are zero. Where h and v are nonzero, lh and lv will be an integer label indicating membership in some connected border component. Two border locations are in the same component if they are connected by sequentially adjacent border segments whose h and v values are all 1. Two border locations are adjacent if they meet at a corner. Thus, h(i,j) is adjacent to h(i,j-1) and h(i,j+1), as well as v(i,j), v(i+1,j), v(i,j+1), and v(i+1,j+1) when external borders are included.\u003c/w:t\u003e\u003c/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\u003eAn example may make this clearer. Consider an original matrix of size 2x4, and the following border matrices:\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[h = [1 1 0 0; 0 0 1 0; 0 0 0 1];\\nv = [0 0 1 0 1; 1 0 0 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\u003eThis corresponds to the following picture, where nonzero elements of h are shown as -, elements of v are shown as\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e |\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, corners are shown as +, and the eight elements of the original matrix are indicated by their index:\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 1 3|5 7|\\n+ + +-+ +\\n|2 4 6|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\u003eAs can be seen in the diagram, there are two separate groups of edges. They will be labeled 1 and 2 in the final labeling.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e(Originally I wanted to call this problem \\\"Snakes on a Plane\\\", but that name is\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/424-snakes-on-a-plane\\\"\u003e\u003cw:r\u003e\u003cw:t\u003ealready taken\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\"}]}"}],"term":"tag:\"connectivity\"","current_player_id":null,"fields":[{"name":"page","type":"integer","callback":null,"default":1,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"per_page","type":"integer","callback":null,"default":50,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"sort","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"body","type":"text","callback":null,"default":"*:*","directive":null,"facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":false},{"name":"group","type":"string","callback":null,"default":null,"directive":"group","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"difficulty_rating_bin","type":"string","callback":null,"default":null,"directive":"difficulty_rating_bin","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"id","type":"integer","callback":null,"default":null,"directive":"id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"tag","type":"string","callback":null,"default":null,"directive":"tag","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"product","type":"string","callback":null,"default":null,"directive":"product","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_at","type":"timeframe","callback":{},"default":null,"directive":"created_at","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"profile_id","type":"integer","callback":null,"default":null,"directive":"author_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_by","type":"string","callback":null,"default":null,"directive":"author","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player_id","type":"integer","callback":null,"default":null,"directive":"solver_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player","type":"string","callback":null,"default":null,"directive":"solver","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"solvers_count","type":"integer","callback":null,"default":null,"directive":"solvers_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"comments_count","type":"integer","callback":null,"default":null,"directive":"comments_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"likes_count","type":"integer","callback":null,"default":null,"directive":"likes_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leader_id","type":"integer","callback":null,"default":null,"directive":"leader_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leading_solution","type":"integer","callback":null,"default":null,"directive":"leading_solution","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true}],"filters":[{"name":"asset_type","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":"\"cody:problem\"","prepend":true},{"name":"profile_id","type":"integer","callback":{},"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":"author_id","static":null,"prepend":true}],"query":{"params":{"per_page":50,"term":"tag:\"connectivity\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"connectivity\"","","\"","connectivity","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f4a01a1e620\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f4a01a1e580\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f4a01a1dcc0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f4a01a1e8a0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f4a01a1e800\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f4a01a1e760\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f4a01a1e6c0\u003e":"tag:\"connectivity\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f4a01a1e6c0\u003e":"tag:\"connectivity\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"search","password":"J3bGPZzQ7asjJcCk","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"connectivity\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"connectivity\"","","\"","connectivity","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f4a01a1e620\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f4a01a1e580\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f4a01a1dcc0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f4a01a1e8a0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f4a01a1e800\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f4a01a1e760\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f4a01a1e6c0\u003e":"tag:\"connectivity\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f4a01a1e6c0\u003e":"tag:\"connectivity\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":61156,"difficulty_rating":"easy-medium"},{"id":673,"difficulty_rating":"hard"}]}}