{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2026-05-26T00:16:20.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2026-05-26T00: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":2029,"title":"Convert vector datasets to plot with imagesc instead of scatter","description":"For large datasets this allows much faster plotting.\r\n\r\nAn irregular 2D spatial sampling is provided in x and y vectors with a data point to plot in vector d. A bin size is also provded in vector b=[dx,dy]\r\n\r\nReturn a 2D matrix M with minimal empty cells with the correct spatial relationship of d and last value only retained in the event of duplicates.\r\n\r\nExample\r\n\r\n b = [6,9];\r\n\r\n x = rand(3333,1)*100*b(1)+1500;\r\n\r\n y = rand(3333,1)*100*b(2)+50000;\r\n\r\n d = sind(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);\r\n\r\nReturn G, a 2D matrix with d binned in rows and columns\r\n\r\n\r\n","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 337.033px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 168.517px; transform-origin: 407px 168.517px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 158px 8px; transform-origin: 158px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eFor large datasets this allows much faster plotting.\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; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 362px 8px; transform-origin: 362px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAn irregular 2D spatial sampling is provided in x and y vectors with a data point to plot in vector d. A bin size is also provded in vector b=[dx,dy]\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; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 378.5px 8px; transform-origin: 378.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eReturn a 2D matrix M with minimal empty cells with the correct spatial relationship of d and last value only retained in the event of duplicates.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 26.5px 8px; transform-origin: 26.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eExample\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 143.033px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 71.5167px; transform-origin: 404px 71.5167px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 44px 8.5px; transform-origin: 44px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e b = [6,9];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 128px 8.5px; transform-origin: 128px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e x = rand(3333,1)*100*b(1)+1500;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 132px 8.5px; transform-origin: 132px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e y = rand(3333,1)*100*b(2)+50000;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 176px 8.5px; transform-origin: 176px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e d = sind(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 178px 8px; transform-origin: 178px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eReturn G, a 2D matrix with d binned in rows and columns\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function G = binit(x,y,d,b)\r\n  G=nan(x/b(1),y/b(2));\r\n  G(r,c)=d;\r\nend","test_suite":"%%\r\nrng('default');\r\n\r\nb=[6,9];\r\nx=rand(3333,1)*100*b(1)+1500;\r\ny=rand(3333,1)*100*b(2)+50000;\r\nd=sind(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);\r\nG=binit(x,y,d,b);\r\n\r\nchk1=sum(sum(G~=0));\r\nchk2=round((mean(abs(G(G~=0))))/10^-8)*10^-8;\r\nassert(isequal(chk1,2809))\r\nassert(isequal(chk2,1.2680e-05))\r\n\r\n%%\r\nrng('default');\r\n\r\nb=[25,12.5];\r\nx=rand(5,1)*10*b(1)-200;\r\ny=rand(5,1)*10*b(2)-50;\r\nd=round((2*x+3*y-x.*y+30)/10)*10;\r\nG=binit(x,y,d,b);\r\noide=[     0 0 0 0 0 0 60 0\r\n           0 0 0 0 0 0 0 440\r\n           0 0 0 0 0 0 0 0\r\n           0 0 0 0 0 0 0 0\r\n        2840 0 0 0 0 0 0 0\r\n           0 0 0 0 0 0 0 0\r\n           0 0 0 0 0 0 0 0\r\n           0 0 0 0 0 0 0 0\r\n           0 0 0 0 0 3120 0 -1680];\r\nassert(isequal(G,oide))\r\n%%\r\n\r\nrng('default');\r\n\r\nb=[2,4];\r\nx=rand(1000,1)*25*b(1)+1000;\r\ny=rand(1000,1)*25*b(2)+200;\r\nd=round((x-y-750)/10)*10;\r\n\r\nG=binit(x,y,d,b);\r\noide=[50    50    50    50    60    60     0    60     0     0    70    70    70    70    80    80    80     0    80    90     0     0    90   100     0\r\n    40    50    50    50    50    50    60     0     0    60     0    70    70    70    70    70    80    80    80     0    80    90     0     0    90\r\n    40     0    40    50    50    50     0    60    60     0    60    60    60    70    70     0    70    80    80    80     0    80    90     0     0\r\n     0    40    40    40    40    50     0    50    50    50    60    60    60    60    70     0    70    70    70    80    80    80    80    80    80\r\n     0    30    40    40     0    50    40     0    50     0    50    50    60    60     0    60    60    60     0    70    70    80    80     0    80\r\n     0    30    30     0    40    40    40    40    40    50    50    50    50    50    60    60    60    60    60    70    70     0    70    80    80\r\n    30    30    30    30    30    30    40    40    40    40    40     0     0    50     0     0     0    60     0    60     0    70     0    70    70\r\n    20    20    30    30    30     0    30    40     0    40    40     0    40    50    50     0    50     0    60     0    60     0    70     0    70\r\n    20    20    20    20    20     0    30    30     0    40    40     0     0    40    50    50    50    50    50    50    60     0    60    60     0\r\n    10    20    20    20    20    20    30    30     0    30     0    40    40    40    40    40    40    50    50     0    50    60    60    60    60\r\n    10    10    10    20    20    20    20    20    30    30    30     0    30    40    30    40    40     0    50    50    50     0     0    60    50\r\n     0    10    10    10    10    20     0     0    20     0    20     0    30     0     0    40    40    40    40    40     0    50    50    50     0\r\n     0     0     0    10     0    10    10    20     0    20    20    20    20    30    30    30    30     0    40    40     0    40    40    50    50\r\n     0     0     0     0     0    10    10    10    10    10    20    20     0    20    20     0    30    30    30     0    40    40    40    40     0\r\n   -10   -10     0     0     0     0     0    10    10    10    10    20    10    20    20    20    20    30    30    30    30    30     0    40    40\r\n   -10   -10   -10     0     0     0     0     0    10    10    10    10     0     0    20    20    20    20    30     0    30    30     0    40     0\r\n     0     0   -10   -10   -10   -10     0     0     0     0     0    10    10    10    10    20    20    20    20    20     0    30    30    30    30\r\n   -20   -20   -10   -10   -10   -10     0     0     0     0     0     0     0    10    10    10     0    10    20    20     0    20    20    30     0\r\n     0   -20   -20   -20   -20   -10   -10     0   -10     0     0     0     0     0     0    10    10    10    10    10     0     0    20    20    30\r\n     0   -30   -20   -20   -20     0   -10   -10   -10   -10     0   -10     0     0     0     0    10     0    10    10    10     0    20    20    20\r\n     0   -30   -30     0   -20   -20   -20   -20   -10   -10   -10   -10   -10   -10     0     0     0     0    10    10    10    10    10    10    20\r\n     0     0   -30   -30   -30   -30   -20   -20   -20     0     0   -10   -10   -10   -10     0     0     0     0     0     0    10     0    10     0\r\n   -40   -40   -40   -30   -30   -30   -30   -30   -20   -20   -20   -20     0     0   -10   -10   -10     0     0     0     0     0     0     0    10\r\n   -40   -40     0   -40   -30   -30   -30     0   -30     0   -20   -20     0   -20   -10   -10   -10   -10   -10   -10     0     0     0     0     0\r\n   -50   -40     0   -40   -40     0   -30     0   -30   -30   -30   -20   -20   -20   -20   -20   -10   -10   -10   -10     0     0     0     0     0 ];\r\nassert(isequal(G,oide))\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":5,"created_by":17471,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":6,"test_suite_updated_at":"2020-10-27T17:24:12.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-12-01T13:26:51.000Z","updated_at":"2026-05-27T23:20:32.000Z","published_at":"2013-12-01T16:03:40.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\u003eFor large datasets this allows much faster plotting.\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\u003eAn irregular 2D spatial sampling is provided in x and y vectors with a data point to plot in vector d. A bin size is also provded in vector b=[dx,dy]\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\u003eReturn a 2D matrix M with minimal empty cells with the correct spatial relationship of d and last value only retained in the event of duplicates.\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\u003eExample\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ b = [6,9];\\n\\n x = rand(3333,1)*100*b(1)+1500;\\n\\n y = rand(3333,1)*100*b(2)+50000;\\n\\n d = sind(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eReturn G, a 2D matrix with d binned in rows and columns\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":1444,"title":"Dots in a Circle","description":"Return how many integer grid points there are inside a circle of radius _r_ centred at (0,0) (including points on the edge).\r\n\r\nNeither *string operations* nor *interpolations* are allowed!\r\n","description_html":"\u003cp\u003eReturn how many integer grid points there are inside a circle of radius \u003ci\u003er\u003c/i\u003e centred at (0,0) (including points on the edge).\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = dots_in_circle(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('dots_in_circle.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nn_correct = 1;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 1;\r\nn_correct = 5;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 2;\r\nn_correct = 13;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 3;\r\nn_correct = 29;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 4;\r\nn_correct = 49;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 5;\r\nn_correct = 81;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 7.5;\r\nn_correct = 177;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 10;\r\nn_correct = 317;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 20;\r\nn_correct = 1257;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 30;\r\nn_correct = 2821;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 40;\r\nn_correct = 5025;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 50;\r\nn_correct = 7845;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 75;\r\nn_correct = 17665;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 100;\r\nn_correct = 31417;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n","published":true,"deleted":false,"likes_count":5,"comments_count":5,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":101,"test_suite_updated_at":"2013-04-28T07:07:28.000Z","rescore_all_solutions":false,"group_id":20,"created_at":"2013-04-22T12:50:26.000Z","updated_at":"2026-04-17T13:45:03.000Z","published_at":"2013-04-22T12:50:26.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\u003eReturn how many integer grid points there are inside a circle of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0) (including points on the edge).\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1462,"title":"Dots in a Sphere","description":"Return how many integer grid points there are inside a 3D sphere of radius _r_ centred at (0,0,0) (including points on the edge).\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many integer grid points there are inside a 3D sphere of radius \u003ci\u003er\u003c/i\u003e centred at (0,0,0) (including points on the edge).\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = dots_in_sphere(r)\r\n   n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('dots_in_sphere.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nn_correct = 1;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 0.5;\r\nn_correct = 1;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 1;\r\nn_correct = 7;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 1.5;\r\nn_correct = 19;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 2;\r\nn_correct = 33;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 2.5;\r\nn_correct = 81;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 3;\r\nn_correct = 123;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 5;\r\nn_correct = 515;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 7.5;\r\nn_correct = 1791;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 10;\r\nn_correct = 4169;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 15;\r\nn_correct = 14147;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 20;\r\nn_correct = 33401;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 25;\r\nn_correct = 65267;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 50;\r\nn_correct = 523305;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 100;\r\nn_correct = 4187857;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":66,"test_suite_updated_at":"2013-04-28T07:09:00.000Z","rescore_all_solutions":false,"group_id":20,"created_at":"2013-04-26T06:32:56.000Z","updated_at":"2026-04-17T13:38:44.000Z","published_at":"2013-04-26T06:41:52.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eReturn how many integer grid points there are inside a 3D sphere of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0,0) (including points on the edge).\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":45397,"title":"Assess the scatter of wind turbines in a field","description":"The renewable energy industry is on the rise in many countries--- and one of the key players is wind energy. \r\n\r\nIt is believed that the layout of a wind farm can influence its ability to harness energy. One assumption is that the more scattered the turbines are in the field, the higher the energy yield. Hence, we need to determine how many turbines in a wind farm are in a good position.\r\n\r\nYou are given the positions of 8 wind turbines in a field rendered as an 8-by-8 grid of cells. For this problem, a wind turbine is defined to be in a _good position_ if there are no other turbines in its immediate vicinity of adjacent cells in the grid. Otherwise, it is in a _bad position_. An illustration of these two cases is further explained in the figure below.\r\n\r\nAccess the figure here: \u003chttps://drive.google.com/open?id=19M-3AZ0aqmJs2vKL-EKoJ0z59RvURukg\u003e\r\n\r\nWrite a function that accepts a MATLAB variable, POS. You are ensured that POS is always a row vector of 8 elements, and each element satisfies 1 \u003c= POS(i) \u003c= 8. This vector represents the wind farm layout: POS(i) is the row position of the sole wind turbine in column _i_. Given the layout, output the number of wind turbines in _good position_.\r\n\r\nAs seen in the examples from the figure above, we have 4 turbines in _good position_ for POS = [8 1 6 3 6 7 3 4]; 6 turbines for POS = [3 1 5 2 8 7 4 6]; and, 2 turbines for POS = [4 5 7 7 3 2 6 8].","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 835.2px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 417.6px; transform-origin: 407px 417.6px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.8px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.4px; text-align: left; transform-origin: 384px 10.4px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eThe renewable energy industry is on the rise in many countries--- and one of the key players is wind energy.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 62.4px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.2px; text-align: left; transform-origin: 384px 31.2px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eIt is believed that the layout of a wind farm can influence its ability to harness energy. One assumption is that the more scattered the turbines are in the field, the higher the energy yield. Hence, we need to determine how many turbines in a wind farm are in a good position.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 62.4px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.2px; text-align: left; transform-origin: 384px 31.2px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou are given the positions of 8 wind turbines in a field rendered as an 8-by-8 grid of cells. For this problem, a wind turbine is defined to be in a\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003egood position\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e if there are no other turbines in its immediate vicinity of adjacent cells in the grid. Otherwise, it is in a\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003ebad position\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e. An illustration of these two cases is further explained in the figure below.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.8px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.4px; text-align: left; transform-origin: 384px 10.4px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 481px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 240.5px; text-align: left; transform-origin: 384px 240.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" width=\"593\" height=\"481\" style=\"vertical-align: middle;width: 593px;height: 481px\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.8px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.4px; text-align: left; transform-origin: 384px 10.4px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 62.4px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.2px; text-align: left; transform-origin: 384px 31.2px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eWrite a function that accepts a MATLAB variable, POS. You are ensured that POS is always a row vector of 8 elements, and each element satisfies 1 \u0026lt;= POS(i) \u0026lt;= 8. This vector represents the wind farm layout: POS(i) is the row position of the sole wind turbine in column \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003ei\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e. Given the layout, output the number of wind turbines in\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003egood position\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 41.6px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 20.8px; text-align: left; transform-origin: 384px 20.8px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eAs seen in the examples from the figure above, we have 4 turbines in \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003egood position\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e for POS = [8 1 6 3 6 7 3 4]; 6 turbines for POS = [3 1 5 2 8 7 4 6]; and, 2 turbines for POS = [4 5 7 7 3 2 6 8].\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = assess_windfarm(POS)\r\n  y = POS;\r\nend","test_suite":"%%\r\nassert(isequal(assess_windfarm([5 6 6 6 6 3 5 1]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 8 3 5 8 2 2 3]),5))\r\n%%\r\nassert(isequal(assess_windfarm([8 4 3 2 4 3 2 4]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 5 1 5 7 2 4 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 6 2 7 8 7 5]),5))\r\n%%\r\nassert(isequal(assess_windfarm([3 6 2 8 5 5 2 1]),4))\r\n%%\r\nassert(isequal(assess_windfarm([3 7 8 6 6 2 5 7]),4))\r\n%%\r\nassert(isequal(assess_windfarm([4 8 1 3 5 1 6 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([5 7 7 7 3 4 7 1]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 3 5 8 6 3 3 7]),6))\r\n%%\r\nassert(isequal(assess_windfarm([8 6 3 1 7 5 8 1]),8))\r\n%%\r\nassert(isequal(assess_windfarm([5 3 7 2 4 4 7 6]),4))\r\n%%\r\nassert(isequal(assess_windfarm([2 3 2 6 5 2 2 4]),1))\r\n%%\r\nassert(isequal(assess_windfarm([8 5 1 1 7 4 4 7]),4))\r\n%%\r\nassert(isequal(assess_windfarm([3 5 6 7 3 6 8 1]),5))\r\n%%\r\nassert(isequal(assess_windfarm([5 4 3 3 7 8 2 7]),2))\r\n%%\r\nassert(isequal(assess_windfarm([2 8 7 4 6 4 7 3]),6))\r\n%%\r\nassert(isequal(assess_windfarm([1 5 8 2 4 6 1 8]),8))\r\n%%\r\nassert(isequal(assess_windfarm([7 5 2 4 5 8 7 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([6 4 8 4 2 4 6 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([7 8 8 5 8 1 1 3]),3))\r\n%%\r\nassert(isequal(assess_windfarm([5 5 8 5 4 5 6 1]),2))\r\n%%\r\nassert(isequal(assess_windfarm([7 2 4 3 3 6 2 3]),3))\r\n%%\r\nassert(isequal(assess_windfarm([2 2 3 8 4 4 2 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([4 7 5 4 8 7 4 7]),4))\r\n%%\r\nassert(isequal(assess_windfarm([8 4 3 5 8 6 4 6]),6))\r\n%%\r\nassert(isequal(assess_windfarm([8 5 5 3 1 2 1 4]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 8 6 1 1 2 4 2]),5))\r\n%%\r\nassert(isequal(assess_windfarm([1 6 3 7 4 4 1 1]),4))\r\n%%\r\nassert(isequal(assess_windfarm([1 5 2 7 7 8 4 2]),5))\r\n%%\r\nassert(isequal(assess_windfarm([2 5 7 3 4 6 8 2]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 5 4 8 4 2 6 5]),3))\r\n%%\r\nassert(isequal(assess_windfarm([3 7 8 8 2 2 1 5]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 8 5 3 2 4 8]),6))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 7 1 6 8 3 2]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 8 5 8 2 7 3 4]),6))\r\n%%\r\nassert(isequal(assess_windfarm([2 7 5 6 7 1 8 4]),5))\r\n%%\r\nassert(isequal(assess_windfarm([7 6 7 2 4 5 8 7]),1))\r\n%%\r\nassert(isequal(assess_windfarm([8 5 5 7 1 8 4 1]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 2 2 5 3 3 4 4]),2))\r\n%%\r\nassert(isequal(assess_windfarm([4 5 2 2 1 3 7 2]),3))\r\n%%\r\nassert(isequal(assess_windfarm([6 6 7 7 3 3 5 3]),2))\r\n%%\r\nassert(isequal(assess_windfarm([7 7 5 3 6 2 4 4]),4))\r\n%%\r\nassert(isequal(assess_windfarm([5 8 7 8 2 5 1 7]),5))\r\n%%\r\nassert(isequal(assess_windfarm([5 7 8 8 4 1 5 2]),5))\r\n%%\r\nassert(isequal(assess_windfarm([2 3 1 6 6 5 3 7]),3))\r\n%%\r\nassert(isequal(assess_windfarm([5 8 8 3 5 3 5 7]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 2 7 1 4 6 7 3]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 8 2 2 2 3 3 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 5 2 7 2 5 8 3]),8))\r\n%%\r\nassert(isequal(assess_windfarm([1 2 4 3 2 8 6 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([4 8 1 5 7 2 8 7]),6))\r\n%%\r\nassert(isequal(assess_windfarm([7 5 7 3 2 3 5 7]),5))\r\n%%\r\nassert(isequal(assess_windfarm([3 4 7 5 8 2 7 6]),4))\r\n%%\r\nassert(isequal(assess_windfarm([2 4 4 5 7 1 7 7]),3))\r\n%%\r\nassert(isequal(assess_windfarm([3 4 5 6 6 7 4 4]),0))\r\n%%\r\nassert(isequal(assess_windfarm([8 5 7 3 5 5 8 1]),6))\r\n%%\r\nassert(isequal(assess_windfarm([5 5 1 8 8 4 7 2]),4))\r\n%%\r\nassert(isequal(assess_windfarm([5 3 4 7 2 3 4 3]),2))\r\n%%\r\nassert(isequal(assess_windfarm([7 8 2 2 6 4 8 8]),2))\r\n%%\r\nassert(isequal(assess_windfarm([6 7 4 6 8 5 8 6]),6))\r\n%%\r\nassert(isequal(assess_windfarm([4 6 8 2 4 8 4 6]),8))\r\n%%\r\nassert(isequal(assess_windfarm([8 8 6 1 1 5 5 8]),2))\r\n%%\r\nassert(isequal(assess_windfarm([6 6 5 3 8 5 1 6]),5))\r\n%%\r\nassert(isequal(assess_windfarm([5 1 8 3 2 1 3 2]),3))\r\n%%\r\nassert(isequal(assess_windfarm([6 1 3 3 8 4 7 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([7 1 8 7 1 4 3 6]),4))\r\n%%\r\nassert(isequal(assess_windfarm([2 5 5 5 4 1 5 4]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 4 5 7 6 7 1]),2))\r\n%%\r\nassert(isequal(assess_windfarm([2 4 8 7 4 3 1 6]),4))\r\n%%\r\nassert(isequal(assess_windfarm([5 2 4 2 7 3 8 1]),8))\r\n%%\r\nassert(isequal(assess_windfarm([7 6 5 6 6 1 8 1]),3))\r\n%%\r\nassert(isequal(assess_windfarm([3 2 8 1 5 6 6 7]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 7 5 6 2 5 6 8]),4))\r\n%%\r\nassert(isequal(assess_windfarm([4 1 1 6 7 6 3 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([5 8 1 2 7 8 7 3]),3))\r\n%%\r\nassert(isequal(assess_windfarm([2 7 7 3 2 3 7 7]),1))\r\n%%\r\nassert(isequal(assess_windfarm([5 5 3 6 7 4 4 4]),1))\r\n%%\r\nassert(isequal(assess_windfarm([3 6 8 8 6 3 6 2]),6))\r\n%%\r\nassert(isequal(assess_windfarm([1 2 2 5 1 7 6 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([4 6 8 5 3 8 1 3]),8))\r\n%%\r\nassert(isequal(assess_windfarm([8 3 3 1 8 2 3 8]),4))\r\n%%\r\nassert(isequal(assess_windfarm([4 5 5 6 1 5 1 7]),4))\r\n%%\r\nassert(isequal(assess_windfarm([3 7 2 5 8 1 1 1]),5))\r\n%%\r\nassert(isequal(assess_windfarm([6 5 1 7 5 1 1 2]),3))\r\n%%\r\nassert(isequal(assess_windfarm([7 1 2 2 1 7 6 6]),1))\r\n%%\r\nassert(isequal(assess_windfarm([6 5 3 6 1 2 1 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([8 1 4 6 3 7 5 4]),6))\r\n%%\r\nassert(isequal(assess_windfarm([3 7 8 6 4 8 3 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([8 3 3 8 1 3 5 2]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 7 5 6 7 2 5 1]),3))\r\n%%\r\nassert(isequal(assess_windfarm([5 7 8 4 3 6 8 5]),4))\r\n%%\r\nassert(isequal(assess_windfarm([8 2 1 3 4 4 3 6]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 3 3 1 5 3 2]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 3 5 7 1 8 2 7]),8))\r\n%%\r\nassert(isequal(assess_windfarm([7 8 2 5 4 2 5 5]),2))\r\n%%\r\nassert(isequal(assess_windfarm([2 5 8 4 6 4 1 3]),8))\r\n%%\r\nassert(isequal(assess_windfarm([7 3 1 5 3 6 5 7]),6))\r\n%%\r\nassert(isequal(assess_windfarm([7 2 1 7 6 1 8 5]),4))\r\n%%\r\nassert(isequal(assess_windfarm([5 5 7 7 4 1 6 3]),4))\r\n%%\r\nassert(isequal(assess_windfarm([1 1 1 1 1 1 1 1]),0))\r\n%%\r\nassert(isequal(assess_windfarm([1 8 1 3 1 5 1 8]),8))\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":1,"created_by":255320,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":66,"test_suite_updated_at":"2020-03-29T00:40:23.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-03-28T23:55:35.000Z","updated_at":"2026-05-31T05:36:38.000Z","published_at":"2020-03-29T00:40:23.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe renewable energy industry is on the rise in many countries--- and one of the key players is wind energy.\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\u003eIt is believed that the layout of a wind farm can influence its ability to harness energy. One assumption is that the more scattered the turbines are in the field, the higher the energy yield. Hence, we need to determine how many turbines in a wind farm are in a good position.\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 given the positions of 8 wind turbines in a field rendered as an 8-by-8 grid of cells. For this problem, a wind turbine is defined to be in a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003egood position\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e if there are no other turbines in its immediate vicinity of adjacent cells in the grid. Otherwise, it is in a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ebad position\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. An illustration of these two cases is further explained in the figure below.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"481\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"593\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"middle\\\"/\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\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWrite a function that accepts a MATLAB variable, POS. You are ensured that POS is always a row vector of 8 elements, and each element satisfies 1 \u0026lt;= POS(i) \u0026lt;= 8. This vector represents the wind farm layout: POS(i) is the row position of the sole wind turbine in column \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ei\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. Given the layout, output the number of wind turbines in\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003egood position\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAs seen in the examples from the figure above, we have 4 turbines in \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003egood position\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e for POS = [8 1 6 3 6 7 3 4]; 6 turbines for POS = [3 1 5 2 8 7 4 6]; and, 2 turbines for POS = [4 5 7 7 3 2 6 8].\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,iVBORw0KGgoAAAANSUhEUgAAA08AAAKvCAYAAACyDfQsAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAGhtSURBVHhe7d1PbNvmHfj/j36nnnZeMBcdEDvp0viQLN1SGQN6MVq7wRI4WLbkUsRB5ALJYDfNBiQIjMAIEqBLMhnzgNpFXPRSrxmaxoMrNfBlxWA33TerD0mzplKAb1AP3nmn702/5yEpiZJI6pEpURL1fgUMJZrkQz4kP+KHfxMFRQAAAAAAgf4/pw0AAAAACEDyBAAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAAABggOQJAAAAAAzUvOcpkUg4nwAAAACg9/i9CtczefLrGQAAAADiLCgf4rI9AAAAADBA8gQAAAAABkieAAAAAMAAyRMAAAAAGCB5AgAAAAADJE8AAAAAYIDkCQAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMEDyBAAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAAABggOQJAAAAAAyQPAEAAACAAZInAAAAADBA8gQAAAAABkieAAAAAMBAByVPWZlIJCRRt5lQfWp5mR1S34dm1adO0uzpcsY3Yc+1r/ysTAwV66YZnOVRr9yOXQ4O03qp6a/D5yuMpq8rrVa9LGK8bEqIh96c8REPt4d4WIt4CKBBnHmKifxnt2Vh3fmCEtN66aX6Y11B3LGOeyMe1mJdAdCoDkqeRmS+UJBCqclJOqk6J9OSq+g+r/rsZP0yuaamc21SfeoFvTa/QBSIh92JeAgAcReTM09ZmdCnra3LWIZkYtbj5HXe3U9ChvRp+sBz3N6nwvOzQ/bwFWU4/VqXdPifUs9mZ1W5dvl+05nPTsiQM42JutOo2eMfmNKHzhZktDRt3tNf6l66/KT8vThv1qVA7oECp6m6nPJ3k/ltfLmUWXXlGrayDHs6auulmkl/rVi/yqqXufdk1hu/Sb3XmVfTMoLWlSrNmTc0phXra3n9cvdGPKyepupyyt+Jh87f6iAebr/uAESkUMWjU5vkCumkFCSZVp+8FP+eKqR0W023u0llnN60XLqQrPq73SQLae+RW3LpZE0/mZQzrLsAZ/xJq8fq6Xa+V5RbbipHo8ur6qc4fxUz5FY7fu/pKHK6l8ZX7C9ZriNrmEwhZX12dS817jqpLqd2etxNM5aL5llXTmOXUTsddr1U8+uvOF+tW78smVT94YzGb1LvAXXSSBk164qPZs9b9ToWVHbs1Jvn4t+Jh9XjJx5afdRMB/EwoE4aKYN4CMSS3vb8dH/ypAOLq59c2glQ1T+GKvikMuUx5TJOkKqI+lWcQFbuxfkBtZqU+uawgmIxuPkENqes8nQ6P3alkRfHrcZTnM5cpmLYIPb4XNNUMx1FTvfS+MrTV/ljWp7XZLo43WoXoma6tzu/xf62sVxKw6r5dU9y8YfHNWxtvXjzrT89vlatX65hi1Wfc35gy8vCdPyu6VXdytNbXe/Fbl7zal6G946XWwvmrXodq1m346zePBfrsrIf4mGRX/053UvjK08f8dArRqimVeuXa9imxQynW3l6q+u92M1rXs3LIB4C8aO3Tz8xSJ6qfwicH7lioHF+QLyCW/0fEq9xqeBn/WCUg6B19NU3kIWcTo8fQC++PwA19ed0rw7EftPnN3yp/+py6oyvKculLJdTOzDqxyWdStn1VFVXpuPy/wFt4XwEDFtiPH7D6VVqpit0GR5aMW++21gvqDfPhsvfuM69eI2LeFjZf3U5dcbXlOVSRjwsjt9wepWa6QpdhodWzJvvNgagGYLyoe6/5ym5Rwacj7YB2aMiUEnusegrmtenBkrXEBcb+1rnR/Kd7/XEI3JERVp59J1YvVjj2iu7Jo9ISn16nNMds3J3QU3GsTeCbxA2nM69u6rG0v+GHHP31yo102erna9+ecOaoKB6U1q6XJT8rHXt+MDAgIyOTsnUwoI1vqZr9XwoNcvcrdHx15teL6HL8NfUeUN9LV1fiYfEwxbPh0I83H7dAYgGjyqvY0TvLazfls9U0MrqvYLUEbULYQfghbtZ9aP1nQppdYIimiwrEwNT1g9NMpWSdDojmUxOcoWM2okD0CrEw05EPASAKMU/eRrYI/pAUypjXaLo0azJZNDvvDW8Pqqale/UXkFyjz7G5BxtfPSdZD+7rf6akiNhnxfsTOejmkNLOXmsfxUb1i+79qrW+mM1BrfGxrduH052yctnt/UI9kqo/aMwy8XZQdPDrs3Py+TkiIyM9Eu/0z1SYdcvpXaZuzRh/HW1sIy2zxsqha1za3jiYRnxsEITtmnioVeZumnCvAFoivgnT85lHgujQzLrft5nPms/ZrT0hn4fxeGvXJHb60k59oYdvfr1L/H6bbmifzito68h9e9SP79qlFNvykRpOvWjUEdlwflWn9dp/QW5W/Fo1kbGpyyMuh7fmpfs7JtiXUEQdp7DLhdFH+kuDakf7/qmffRV78RVVoPp5Q7buCwizHw4w+plXq7iWZnQl2oUH3XchHry5prXVpTR1nmDr7B1XhyeeKgQD2uEmQ9nWOJhs+cNQNMVqnh0apN6N0H6/d3pnnLdwuk81carCbyB02HfrKn7r72pVHd3F1U7XSGns+6jeW3laXTNk9H4/KbPvrE26b7xuNS4b5Bt8vw6TfByccblMZzVuMr2rBcPtf1FMR+Kz7AVi9to/ObTa7yuOE39Mny0bN4anI5YqDfPfn93ujdrfVWIh67hrYZ42LT1y2fYisVtNH7z6SUeAvCitzs/vXHP08i8qAgp6keyLJlU8TMnawbnwa2jqpr76KJzlEh1DH+JSpGazlzGNZ3JlGTWfid7nK9B+icvlYbTl5ZYx630+NIp61IALZlKS85wfCV7fidrGdc4kmnJ5ObDH1nWtr1c+mXyw0zVcClJq+HUpOoKKF2a41kvHkz78xRm/bKWebl+1YDWcPPuCg4zfg9+60ozy7C0Yd5gIGSdEw+Jh4HCrF/WMiceNrVcAE2X0BmU89min+xS1QkAAAAAekJQPsTT9gAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMEDyBAAAAAAGSJ4AAAAAwEAHJU95mR1KSGJoVn2KSH5WJoYmJOt8jT+njic6bY49ln3NsmnD+gG0TRzjYVYmElHEH+LcdmQnhqw36luNqrv2xdnqOjCsE34zAESkp8885T+7LQvrzhd0FJYNEC22ueh1TJ1nJ2S0akL6nXa3YP0FEJUOSp76ZXKtIIW1ya4L2gjLZNmzfqCXsL7HT+fHuVRGlV1QzfyI0wUAUK3DL9tT3dyXEiSGZCJrdgI+n52QIT0+97CzxWHtsgam9GGqBRlVfx8q/c1b8PiCWcNWDJe157X6spJ8VibcZehLELyKMOyvoly/cdWwL62x6qNqeM/ZNZqWesvRvez9lo27H5e65ZeHy2ZnXcvQfPkB0fNa31W3GMRDi0FsMi2DOKeVh2s0zmUnVH+jC9bnhVE9jBq39U0xLVdf5jdbnPfgZRB63anhV5du7vnwKa9qXoe2tYwdRuPyVr0+e0+qSR02c1oNxwX0ikIVj04RyRXSSSlIMq0+ub6r6aluUhmrB1+5dNJzON3Yw9aOO5m2S/VSf3z+gobVh/lKMqlC0qsfSRYqJs2wP89yk6lCSs934ERnCinVbzLlVc52psVkObqXvd+ycffjCFm+buotP6A9qtd3//U4TAyyh/Xb5rxtPx7asUWSybqxxbQM4pzTj8f43E1QVWRS1f2nVO1YfzAv171M3dNexWy5VteBR51UqJ33yrp01gfX33VTUSe5dJOWsWI0Lh+qzusN11AdBvajNHO+gZjR67ifzk2enI06qbbO8jbsbOiBW2xxQ1c/AO5A5TGsHYScHwpf5uOr5ews6EBUHDiXKQei0rDl4JRyFVIKktU/InX7My3XS3FYu79iuZliGY1Os9FydMbl+nGsXTbV/TReZ+X5cfVXmgagk1St70bbkZfi+t9J8VDv3JrElnplEOeaFuecnfZyb42XG5Rw24r91luuTn/VZbjqzYtvXVZMr+7PSVCqy1PrUcW8Zqqmq5FlXG9cnsrDFqsy5yyXct0W+6lTh82cVqNxAfGjtz0/HZ886SNaqXRaBQp3pDCTU8NkVCBIu48uujb22mAbrN74atQEPkd14AkIRPZRQSeYNthf3XI9OTsVHj9UdhlOfTU6zYHLsWrZ6y5+P4TV60e98ovD1SxnZz4D6wJolxjGw+I2VxNb/LbROmU4dUKc099Cxrnq5Cl0ucGC153qeqqtNy/+yVOdOnHm1Sv5qxinyTI2HZeXgGG9mGwbTZlWk3EBMaS3KT+d+7S9/km5pCKcrK/LwtSUjA4M2NfjTszWv3Y4P2tdMzyghhkdnZKphQXRV0Nv2zbHl//ukfo/KcfeqLr1t/8NOaaiUbXUkdqbdEeO6EqoVLe/3GNr+vbuMivX095dNTcsD+zRAz+S71z1X3dawixHA6Z1Jsk9MuB8tA2INTtAN4hBPCxKHnujKrb0yxtWYHLFFpMyiHPOJ5cmx7ntl+uj2euiiXp14qxH61P2MnM39n1UzrpgsoxNxxWgZn2uZlKHzZzWFq/bQDfq6EeVj8wXJJdJS8oV6NYX9MY74XqXQ7WsTAxMWUEhmUpJOp2RTCYnuUJGPEK+gWaPr/dsbzkCcOudeNidMZc4V0/3/5a2fxmb12Ezp5V1G6jU8e956h+ZlHn96NaC2nhzGUlbEWJB7vptsfnvRJ/vSWUKsjY/L5OTIzIy0i/9TveGhRhf/6696v91uf1Z1eGZ/GdyW0e/KgseM5W9az8Fya1ufwN7RMe4RzWHuHLy2KNcT4++k8qh8/KZNdF7xX1gzHSaG16OhkzLB+Kgm+Nh0frjnPOpqCq2mJZBnHM+tU5Ty23CutMSznqkp0svt9pmTSZd60LgMm5wXF5q12eXBuuwmdPaqnUb6EadmzxlJ+xTw7PlN5339w/ILut8e1L21LlGQAf9UgjSj+J80z5aU/tjWf80umY+PpeRI9bRoPWpN2W2eH5bDTtbHLaoeJnJwmjF4z/1o1+tJ8gmj4l15Z9xf7vUT79dbrm/vMwOjapQZ2h9St4s1X1esrNvinUmP3VErAs5TKcl1HIMWDam5QNxEId4WKS22fKjpD1ii6NuGcS51sW5FpYbat2py2z9reDM68LoUPl3WtO/1dYjvJ2zKybL2HRcXpxhrf2F4qD5WeuR+tWPrq9bh82c1pCxB4ilQhWPThHxuUlU36hY3QTeOBownG5cw9o3Rdrd/W/SNB+fF3cZNU3KdetoxnXTZ0VTvDHX0UB/Nf008AhffXNobTlVN7saTYvJcqxe9l7LprafhsqvWU5O96ploIcPrB4gEtXrrfO9Zl1XTc267RYwnG4Ctzkv5uOrZceWpPsG91Ljji0NlEGcc3gMZ3G61wtqXrEvVLlenH49x6ka33oyK8OoLi1Od4/Y79WUt4WA6XeXYTQuHz7Dlic1YBp0U11ngf0oLZjveqsa0C30+uyngy/b029az0nafZGtJNXvYkZy9d7Q/mGm4tpcNZCkMznJWKeBHkvxopH+yUul/vSlJK5jLy7m4/PSP7kmOdVjefCkitnp2mu8R+ZlLVd5TbEuJ5OrOs3fQH8V1yjrftZ+J3ucr3XtvSRrrulOptKqjPmKI8Nm07K95Wi0bEzrAuh68YiHlj2/q4wtyerY0kAZxLnWaXq5TVh3Apitvz7UvKrsq2ra9G91TtZKM2u4jI3G5UMNW7u/kJP50gppWofNnNbtrdtAnCV0BuV8tujTs1Wd0HRZmUiMyqO0QTCNnD1tCyowFsoRGwBihDgHAPAXlA91/AMjuprzSNHEhPt65bxkJ+xr8us+khQAAABAxyB5aqXSTbdTMqCTKKsZcG64TcvvOOAJAAAAdA2Sp5biWmEAAAAgLrjnCQAAAAAc3PMEAAAAACGRPAEAAACAAZInAAAAADBA8gQAAAAABkieAAAAAMAAyRMAAAAAGCB5AgAAAAADJE8AAAAAYIDkCQAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMEDyBAAAAAAGSJ4AAAAAwADJEwAAAAAYSBQU57MlkUhIVSd0KL2sEB7rO9qNbbk5otqWWV7NwfLqLiyv7sK+TTh6PfSrQ5KnLmYtq/89cL61VuIHB+JbFus72kxvy//v/3zifGut514+GulOEGWFE3VZrIfhUFZ4lBVelGXFVVAdctkeAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AUDX2JJ7S+/Jq+NHrRvurWb8opxZ2pCnTh9A67EeAuhdJE8A0A02N+TM+Fk5fHNV7j90umkPn8itm1fkpfH35N6m0w1oFdZDAD2O5AkAOt6WzE1fkVtqZ/Xg2ElZ/vQT65HSVvPpJbk+tlvtvK7K4ekVjvyjhVgPAYDkCQA63NOlP8l5vcN6bk7+fuGQvNbn/EHr2ydnL1yVb87pHdcP5NTSlvMHoLlYDwGA5AkAOtyWZFefqPawXDi+w+7kYefxX8kp1b6/+i+O+qMFWA8BQCN5AoCO9l/5t763ZOzn8prdwcc++eWYaj3clLzdAWgi1kMA0EieAAAAAMAAyRMAAAAAGCB5AoCO9kP5yaBq3flK7tkdfGzI3+6o1mCf9NsdgCZiPQQAjeQJADraDhkZ3q3aq3It4AlmT5f+KrdU++DwT2Wn3QloItZDANBIngCgw+08/lu5Pihy/+ZZefXaSuVLSDc3ZO7aRXnp5hORwZNyK+BJaEAYrIcAIJIoKM5nSyKRkKpO6FDWsvrfA+dbayV+cCC+ZbG+o830tqxfNBpsQ86M2y8o9TQ4LMszb1W+e8fDcy8fjWydj/L3hLLCYz0Mj7LCo6zwoiwrroLqkDNPANAV9smfF+dk+dywHNT3nhQN7pZT5y7JN4v1d1iB8FgPAfQ2zjx1MWtZceYpFM48oRPobbn+Ef/m4Ih/eHEui/UwHMoKj7LCi7KsuAqqQ848AQAAAIABkicAAAAAMEDyBAAAAAAGuOepi+llhfBY39FubMvNEdW2zPJqDpZXd2F5dRf2bcLR66FfHZI8dTFrWUX4YIX1/7vifGut5I8P8cAI9JQo464ui4cChMPyCo/lFR7LKzyWF/wE1SGX7QEAAACAAZInAAAAADBA8gQAAAAABkieAAAAAMAAyROabEu+XJyT1Ngh68EPVjN2Xt5dfCCbTh8AusGW3Ft6T14dP2rd6Gw14xflzNKGPHX6QCdheXUXlld3YXmhjKftdTFrWXXS0/aePZB3374sd792vlfb/7rc+ONZeeUF57sPnraHXhNl3NVl1X261OaGnJm+IrceOt+rDQ7L8sxb8lqf892H3sGIcr7iWhbLKxyWV3gsL5ZXrwmqQ848oUm25GMncdp74rTc+GLFSras5ovLMnniRZGvP5d33l7mDBTQ0bZkztlRODh2UpY//cTaubCaTy/J9bHdIg9X5fD0CkdcOwLLq7uwvLoLywu1SJ7QFJuLN2RWJ07T78vC1cOVZ5deOCC/vnpdbk/rBOp9mVnccv4AoNM8XfqTnNc7Cufm5O8XDlUeTe3bJ2cvXJVvzukdhg/k1BLbcruxvLoLy6u7sLzgheQJTbAlayvfqvbrcnJ8h93JQ9/4b+SIaj9a+Sdnn4COtCXZ1SeqPSwXjvtvyzuP/0pOqfb91X9xtLWtWF7dheXVXVhe8EbyhCb4jzzT9zmdOCiv2B18HJBfnFCtr7+X7+0OADrKf+XfD1Vr7Ofymt3Bxz755ZhqPdyUvN0BbcHy6i4sr+7C8oI3kicAAAAAMEDyBAAAAAAGSJ7QBD+SF/ar1kf35Uu7g48H8o+PVGv/8/K83QFAR/mh/GRQte58JffsDj425G93VGuwT/rtDmgLlld3YXl1F5YXvJE8oQl2yNChF1X7c/kg4El6m4t/kbuqvffQz6TO6xAAtMUOGRnerdqrci3gyVFPl/4qt1T74PBPZafdCW3B8uouLK/uwvKCN5InNEXf+DsyuV/k0cxpSV1cli+fOX/Qnj2Qjy+el2Mz34rsPy3TAU/kA9BeO4//Vq4Pity/eVZevbYi99yPxtzckLlrF+Wlm09EBk/KrYAnUCEaLK/uwvLqLiwveEkUql6fy1uJu4e1rP73wPnWWokfHLBeeBvsgbw7Zr8o19P+1+XGH89WvgPKQ/LHhyKdL9Z3tFuUcVeXpV/wGGxDzozzRn0/LK/wWF4sLz8sr/CirMO4CqpDzjyhiQ7I7++8LzemX5e9+h6oov0vypHpy3L7Tv3ECUAn2Cd/XpyT5XPDclBf8180uFtOnbsk3yzW31FAlFhe3YXl1V1YXqjEmacuZi2rjjrz1ByceUKviTLu6rLqH2ltDo6Mh8fyCo/lFR7LKzzOPHWXoDrkzBMAAAAAGCB5AgAAAAADJE8AAAAAYIB7nrqYXlYIj/Ud7ca23BxRbcssr+ZgeXUXlld3Yd8mHL0e+tUhyVMXs5ZVlA9WiGtZrO9osyjjLmWFR1nhUVZ4uqy4PuyAhziEE2VZcRVUh1y2BwAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAALG1JfeW3pNXx49aD0iwmvGLcmZpQ546fXSnuM4XOh3JEwAAQBxtbsiZ8bNy+Oaq3H/odNMePpFbN6/IS+Pvyb1Np1s3iet8oSuQPAEAAMTOlsxNX5FbKrk4OHZSlj/9xHoEuNV8ekmuj+1WycaqHJ5e6bIzNXGdL3QLkicAAICYebr0JzmvE4xzc/L3C4fktT7nD1rfPjl74ap8c04nGh/IqaUt5w+dL67zhe5B8gQAABArW5JdfaLaw3Lh+A67k4edx38lp1T7/uq/uuQsTVznC92E5AkAACBW/iv/1vcCjf1cXrM7+NgnvxxTrYebkrc7dLi4zhe6CckTAAAAABggeQIAAAAAAyRPAAAAsfJD+cmgat35Su7ZHXxsyN/uqNZgn/TbHTpcXOcL3YTkCQAAIFZ2yMjwbtVelWsBT5x7uvRXuaXaB4d/KjvtTh0urvOFbkLyBAAAEDM7j/9Wrg+K3L95Vl69tlL50tjNDZm7dlFeuvlEZPCk3Ap4cl2niet8oXskCorz2ZJIJKSqEzqUtaz+98D51lqJHxyIb1ms72izKOMuZYVHWeFRVni6LP1i2GAbcmbcfqGsp8FhWZ55q/JdSR6ee/ko8xVSXNfDuAqqQ848AQAAxNI++fPinCyfG5aD+l6hosHdcurcJflmsX6C0ZniOl/oBpx56mLWsuLMUyiceUIniOsRScoKj7LCi3NZ9c/QNEfnnXlqDs48wU9QHXLmCQAAAAAMkDwBAAAAgAGSJwAAAAAwwD1PXUwvK4TH+o52Y1tujqi2ZZZXc7C8ugvLq7uwbxOOXg/96pDkCQAAAAAcQfkQl+0BAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMEDyBAAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAAABggOQJAAAAAAyQPAEAAACAAZInAAAAADBA8gQAAAAABkieAAAAAMAAyRMAAAAAGEgUFOezJZFISFUnAEAL6biL8KL67WJ5NQfLq7uwvLoL+/LhBOVDJE8A0GZRxl1d1v/7P58431rruZePRjpflBUOZYVHWeFRVnhRlhVXQXXIZXsAAAAAYIDkCQAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAPCwJfeW3pNXx49aD36wmvGLcmZpQ546fQAA0Gt42h4AtFnUT2Gq+7S9zQ05M31Fbj10vlcbHJblmbfktT7nuw+ethceZYVHWeFRVnhxLSuuguqQM08AAJctmXMSp4NjJ2X500+sZMtqPr0k18d2izxclcPTK5yBAgD0HJInAEDJ06U/yXmdOJ2bk79fOFR5dqlvn5y9cFW+OacTqA/k1NKW8wcAAHoDyRMAwLEl2dUnqj0sF47vsDt52Hn8V3JKte+v/ouzTwCAnkLyBABw/Ff+re9zGvu5vGZ38LFPfjmmWg83JW93AACgJ5A8AQAAAIABkicAAAAAMEDyBABw/FB+Mqhad76Se3YHHxvytzuqNdgn/XYHAAB6AskTAMCxQ0aGd6v2qlwLeJLe06W/yi3VPjj8U9lpdwIAoCeQPAEASnYe/61cHxS5f/OsvHptRe5tOn/QNjdk7tpFeenmE5HBk3Ir4Il8AADEUaJQ9fpc3koMANGK+s3z+oW3wTbkzLj9olxPg8OyPPNW5TugPDz38tFYvlGfssKjrPAoKzzKgp+gOuTMEwCgyj758+KcLJ8bloP6Hqiiwd1y6twl+WaxfuIEAEAcceYJANos6iOS9c88NQdnnsKjrPAoKzzKCi+uZcVVUB1y5gkAAAAADJA8AQAAAIABkicAAAAAMMA9TwDQZjruIryofrtYXs3B8uouLK/uwr58OEH5EMkTALRZlHFXl8UDI8KJ8/Ji3QiH7Ss81vnwolxecRVUh1y2BwAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAD1tyb+k9eXX8qHWjs9WMX5QzSxvy1OkDnSTK5cW6ER51GB7rPNqDp+0BQJt13JOsNjfkzPQVufXQ+V5tcFiWZ96S1/qc7z70DkaU8xXXsqJcXqwb4bB9hcc6H16UyyuuguqQM08AAJctmXN2FA6OnZTlTz+xdi6s5tNLcn1st8jDVTk8vcIR144Q5fJi3QiPOgyPdR7tRfIEACh5uvQnOa93FM7Nyd8vHKo8mtq3T85euCrfnNM7DB/IqaUt5w9olyiXF+tGeNRheKzzaDeSJwCAY0uyq09Ue1guHN9hd/Kw8/iv5JRq31/9F0db2yrK5cW6ER51GB7rPNqP5AkA4Piv/Puhao39XF6zO/jYJ78cU62Hm5K3O6AtolxerBvhUYfhsc6j/UieAAAAAMAAyRMAAAAAGCB5AgA4fig/GVStO1/JPbuDjw352x3VGuyTfrsD2iLK5cW6ER51GB7rPNqP5AkA4NghI8O7VXtVrgU8Oerp0l/llmofHP6p7LQ7oS2iXF6sG+FRh+GxzqP9SJ4AACU7j/9Wrg+K3L95Vl69tiL3Np0/aJsbMnftorx084nI4Em5FfAEKkQjyuXFuhEedRge6zzaLVGoen0ubyUGgGh13Nv7ZUPOjNsvhvTU42/Uj/PyYt0Ih+0rPNb58KJcXnEVVIeceQIAVNknf16ck+Vzw3Jw0OmkDe6WU+cuyTeL9XcUEKUolxfrRnjUYXis82gfzjwBQJt13lHd5ojzkfG4Li/WjXDYvsJjnQ8vyuUVV0F1yJknAAAAADBA8gQAAAAABkieAAAAAMAA9zwBQJvpuIvwovrtYnk1B8uru7C8ugv78uEE5UMkTwDQZlHGXcoKj7LCi3NZPIAgHMoKL8qy4iqoDrlsDwAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAACK1JfeW3pNXx49aD36wmvGLcmZpQ546fQDoTDxtDwDajCc+hUdZ4VFWeLqsuk/b29yQM9NX5NZD53u1wWFZnnlLXutzvvvgaXvhURb8BNUhZ54AAAAisSVzTuJ0cOykLH/6iZVsWc2nl+T62G6Rh6tyeHqFM1BAhyJ5AgAAiMDTpT/JeZ04nZuTv184VHl2qW+fnL1wVb45pxOoD+TU0pbzBwCdhOQJAACg5bYku/pEtYflwvEddicPO4//Sk6p9v3Vf3H2CehAJE8AAAAt91/5t77Paezn8prdwcc++eWYaj3clLzdAUAHIXkCAAAAAAMkTwAAAABggOQJAACg5X4oPxlUrTtfyT27g48N+dsd1Rrsk367A4AOQvIEAADQcjtkZHi3aq/KtYAn6T1d+qvcUu2Dwz+VnXYnAB2E5AkAACACO4//Vq4Pity/eVZevbYi9zadP2ibGzJ37aK8dPOJyOBJuRXwRD4A7ZMoVL0+l7cSA0C0eMt9eJQVHmWFp8vSL7wNtiFnxu0X5XoaHJblmbcq3wHl4bmXj7K8QqIs+AmqQ848AQAARGaf/HlxTpbPDctBfQ9U0eBuOXXuknyzWD9xAtA+nHkCgDbj6Gd4lBUeZYWny6p/5qk5OPMUHmXBT1AdcuYJAAAAAAyQPAEAAACAAZInAAAAADDAPU8A0GY67iK8qH67WF7NwfLqLiyv7sK+fDhB+RDJEwAAAAA4gvIhLtsDAAAAAAMkTwAAAABggOQJAAAAAAyQPAEAAACAAZInAAAAADBA8gQAAAAABkieAAAAAMAAyRMAAAAAGCB5AgAAAAADJE8AAAAAYIDkCQAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMJAoKM5nSyKRcD4BAAAAQO+pSpFKapInAAAAAEAtLtsDAAAAAAMkTwAAAABggOQJAAAAAAyQPAEAAACAAZInAAAAADBA8gQAAAAABkieAAAAAMAAyRMAAAAAGCB5AgAAAAADJE8AAAAAYIDkCQAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMEDyBAAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAAABggOQJAAAAAAx0YPKUl+zshAwNJSSRcJqhIZmYzaq/dKK8zOppHZptwvRlZaI4z4HNhOqzBfKzMjHUyLh9llW2M5cUAAAAEEaHJU86ERmQ0akFWV93Omnqy8LUqAw0JUGBn/xnt2XBXe9BVKI1lPBZVqMDMjTRkvQOAAAAaJvOSp6yf5ApvSOeTEsmV5BCwWlyGUknVff1KflDrPfJR2S+OM9Wk7PnW9VHrqL7vOqznbIyMTAl1qJKZSTnWla5XFpSaprXF0aF/AkAAABx0lHJU/67R+r/pKQ/nJSRfrubpX9EJtcyklIfF+5W7pHns1WXjSX0JX6u81PWGZKEDKluVr/V/ZS6qX4m3Ge27Evo9HDufhJDE+Ieva+8Gt41XUP6cjiT4bbDqKy8zE4Mlfqx6qDUk33p4YCVuS7IqB5HwEzmZ6+ovnROl5O1+RHpdy2r/v5Jmf8wrZaiGtOVyjOFdZeVJWg6XULPs0NNk/4biR4AAADqKnSSTKqgJ0ntlDsdguXSSat/ryaVKfVUUDvyhWQqZbXL/SQL6Yz9N/dwUhowU1DJmsdwulHDliYxV0gnVbdkWn1yOGVWDqMb93AmPMZdzagsZzwe/dmzW/t3/2VQ7DelashfLlc5vNGyqjudjqbMs8NZ5yq6AQAAAB4667K9kXnJpJKyPjVgnSUYmpiQ2WxW8h4nHvRZhc9u6zMlqapL/JyzHlVnqNYXFmRvJmdfWpbR57DWZWp0SiRtdysOJ4++qzhboodb15emWePPSUbtkVvD+l4/mJfZN/UlbUmVhznjtsrU4w8abjsMy8p/JrqqrEvsnH4q66lfJtfUcNa8qfpUf1+bdJ/6c8vJY6vajwReOtjvPh1luqzqTqfWrHl2qHVO/22+vddBAgAAoBuoHceOk8tlCulUsursQrKgdpadPirpsxyZTFoN4zpLVDyVUDxLUXm6wTqrVHlGxzlTUerm1Y9N5V6qjOKZl6rhime6PM7c2Gdfgs/YVKqepiqmZRXrIKnqMJ0uZKrOChWZTZ9TL9s8VWO0rIKms8nzDAAAAJjqwEeV67MWIzI5vyZr1hmDnHVWQT+EwHqKm/seGed+poGBARkdnZIpfZbI+VO15J4B55PL3l1SPj/SL7v2Oh/dKvqxDexREyOP5DuvM2K5x9Y02GfPyvfk6Ma+p8hnuO0wLat/Ui5ZJ9v0UwunZFTVl+5H3+PldTtRS5gsK5Pp7KZ5BgAAQKx0ZPJUqV/6RyZlfu1D68lz67c/cy6rcz/xLSXpdEYyGZVoFewHS6DSyLx9aZtOQovWF3RS0eg7owbEyh0X7gYOl9fvfyolKubLqnnT2dxxAQAAAB2UPKkdbH0GwfddTs6ZofXHktNf89+JfjZfKlOQtfl5mZwckZERlWg53Zum6h4oVbBz/85e2eV1W9DAHuu+Gj1dheK9NhXNmvjeTtSoBsuyk1D7bzn9+Hcrc1mQqtvD6uiXN45Z2ZNc8X0iX1b+oN//tPBY997wsgqczrbMMwAAANBRydOIHNE7tutT8mbNpVX2Y8avWM/H3iPuC/D0zf+lXvXjq62HCSg1Sc826emZLZaRl+zsm/a7qPwemND/hujcYmF0SGbdM6GmTT8OPJFo4lkP07Kcx3EPleZDDdo/ILusU0hJqbyisf5lhf2Tl6wzRvrSOf0yXPcDPfL5WZkYGnUeZf67ijqqu6xMprMl8wwAAAAYKHQU52EEvo3Zo6itJvABDt4PPbAeBFHzwIjqB1foxv1QBY+HOjiPv/Zq/B8B7qXOAyM0o7IC6so1bvuBC3b3utNZfCCDX1NRt4bLynA6mznPxXFVrQoAAABAjQ6752lE5q3HgadUzuJ0siQlmUpLJue+JKtfJj/MVNzPonqSdEYNb50WcS7vC2vvJVlTIywWY0/HfOBjuq3HX+cq77XRM6Qfre3/CPBtMipLP4o8J+nKntS8ZCS3NmldWadZZ5ScXtYf58pnibz0T8qadRmcGo/TyeKUXah49rfpsjKbzmbOMwAAAGAqoTMo5zMq6HuwRmVB7WxXJgIAAAAAelEXPG0PAAAAANqP5AkAAAAADJA8AQAAAIAB7nkCAAAAAAOceQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMEDyBAAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAAABggOQJAAAAAAyQPAEAAACAAZInAAAAADBA8gQAAAAABkieAAAAAMAAyRMAAAAAGCB5AgAAAAADJE8AAAAAYIDkCQAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAICBzkye8lmZnRiSoURCEsVmaEgmsnmnhy6Rn3XmYUhmu2zSAQTo8hiVz07I0FB3TjvQtbp930bt00y44sbQxKwQNtCLEgXF+dwZ9I/66IKsO19rpDJSmB9xvnQwFSQn3hyVBWtGkpLOrclkv/UXAN2sy2NUfnZIBqa8pz6ZzskagQpovm7ft9EHgwemPKY/JZnCvHTBXhnQNJ115klvnEHBRVsYlaGOPo2Tt4/qDhQTJwCx0fUxKit/KCZOamctVyhIoZCTdMrutD71B9UHgKaKwb5N9g/FxEklSzkVN3JpSVrfF+QKl9agx3RU8lTeOEWSpR92+8c9k7Y3U2399mcqRSnLz6pkxX0aPDEkEzUbc97jdPmE9+V0zqn1yvFlK8r0k599UwbqBUkAXanrY1T+O3mUtKczdWRE7HNM/TJ5xMme5JF8ZxLoABjr/n0b3UdSdOhIpn8nIzpw9L8hx5xJX3+csz8AvUJfttcZMgX1860vISxIKuN0q5RJSSGZShcyKvIU5dJJexiPJpku9pgrqPjk2Y8KBYVSb1ouXVDxwKM/1STTakzBitOjAmQhl0k5w1aVAaALxSNGeSlPI7EKaK54xo3y/o0UfGYLiK3OSZ5cG7b5hlgOSqlSlFDdisGkOCL3uIv95bwCmisQqWBSCmSu4ctBy1sunVLT7/RD8gTER0xiVC1XOdtMvgD4iGHc0MmeNS61b1OePqB3dHny5JLLFTLpdDm46Ka4I+AatyRThbT78I5bwDSUjgI1snNB8gTERxxjlHuHzGOcAEKKXdyoOtulyiVsoNd0/XuerIcz6Gt3BwZkdGrK+yEN/ZNySUUey/qCTI0OWNf6Dk1kJe9zse/CaPGaYLspPZ1q/bFwdS8AUx0bo/QTQRPlB9sk0znphgeZAr2gc/dt+mVyzb5fSyVRVrmjQ7MG900B8dE5yVP/LtnrfFy46/28p6y+KdL9XoH8rLxZfDhDMimpdEZyOWeDrjIyvyaFXEbSxUCjhlpfGJWBgUT5CTe5xzzoAYC3OMUonTjpJ4I6X3XixCPKgRaI7b6NSqIupeyP67fls+K0A73AOQPVEcrX0eqbJzOuU8j6tLX75knnNHHpsjj3aWPXKeWgc+Q51V+pPGf4sKfXq3HZHhAr8YhRrnsiVNP4PVIAGtH1cUMNn0omrXFUDM8+DnpUR122N/K74nsD9JngURkonVrWp63Lx02sR2U6n20Lctc5ZJPP/kFcvdqyE6VT1KU3efeL7CqV5nA9enPhyoTrKJC+vMWZlgneggL0qjjEqOwEZ5yAKHV93OjfpSZ83Tp7tXDFuURPDTt7xYkkyWPyBmEEvcRJojpHJlU6QuLZVNzUWHkEtaYp9es6YuPVuA+luI7Q1Dbuo0AGOCoDxE83x6jAYXVDrAJaotv3bUr7M9VNsjlX6gBdpPOSJy2XKaRT9ini0gaa1Buox6+6dTrZtRHrX37PpEWfHq8KXnqcafcpdIdTfqk/1VS/g8EIyRMQT10ao4LeHWM3xCqgZbp83yaXqX7qn0q6DIcF4iSh/1MbAQAAAAAgQNc/qhwAAAAAokDyBAAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAAABggOQJAAAAAAyQPAEAAACAAZInAAAAADBA8tSA/OyQJBIJ72ZoQmazeafPannJzk7I0JC7/yGZmM2qv/jZzjDNkpdZV7lDs64S87MyUTFNE+I72wGyE2rYiazzzUA+K7MTrvrXdWFYcD5bWY9DE7PmdbidclUdDRX792yGxF2lXkJNc4WsTOhxuOq6Yj0e2u54YYq4of7SpPW50bhh9e+U6W4qYpqPfFZtxxX12ECs206cbELcqFS77QeqE+uIG9EiblRrbH3e1rYfZhts8+9+uHi1/f0rPd9BsS62caMAY7l0sqCrLKhJZZyei3KZQirp3a/VJFOFTM7ptyRXSAcOk1Z9tFJl+cm0U1ouXUi6p6PUJAvFXkyU6rGmsvyoOqwp027qjcJ/mal6d/rxt81yfeup2ATXV7hprpRJOcO6Jrhi/C1fl9DrcaNZ63NpPMZxw78+SjHNTyblOZxRrNtunAwZN6p5bfv+6sc64ka0ej1uVGtsfd7mth9mG2zn736YeLXd/RzNINbFNW6QPDXAXgm8V+RcceWtWDnKG3Ayla4MWirIpVPOSlW9QrnGVTOMMz6j+LFtznRXTVcxeKVKE5UrZJwNo+7OiEX1X5xn3RjORLHcpOq/VIraaK0NPnBjdIJCRT2Wp6Fe8dsv14ezXIPrKtw0u1UErZoBvZcxmq+340Yz1uftxQ29reof9sbnuVj/agegNNFqGorbU50Rho+TVYziRqXgbb+WeawjbkSl1/c33Bpdn7e/7fvYxjZYYjRsmDjZnHi1nf0c81gXv7hB8tSAoGCm2StS+e/FDT5oo/Hqx+7md8TA2cgCNwinn8DGfz78VnRr/mpWfpPp0YrTlFQbmrNh1h1GKwcV/1pskBNYTYNZc8oNOT6jaXYp/Xj4LZ/4BbNO1etxw5Px+lycpkbjhmLttPjVRwDfaTObv3BxspozXCPbad1tv1ojZRA3okLccDS8Pivb3fY9NbJ9VAszrGISJ0PFq3DTZx7r4hc3uOepZfLy2e111U7Jpcl+u5OH/slLqg+R9dufla4F7d+1V/2/Lrc/87o6dETmddI7P+J8j87AHrWJrk/JHyqug78iC6qd3DNgdwiwJ5WRXGFN5kd2OV0MZO9a409dmhT/WmxEXrJ/mFK1m5RjbwSMscnlZidG1fiSkv5wO+MznOaSrEwMqP5VfbdhNUEo8YsbtRpbn7cVN5T8d4/U/6pOchPlexH0vSJe1ePWPylrqq7W/Op/767AbThsnHRrPG5sY9tveoxF9OIaN7b3W7btbd9DmN/uSH73w8SrkNt+M2Nd13GSKBgIOhJUOo1eyrbNj5JUH0HSypepJAvJVKqQzmQKuchSdr+jBOXTyO5Gn+5tjHndlI8g6dPBKesIi1VuUh+JbqRCnHmyhlfjq1d008pVnCNDRvNbocFpdlQeDfKr6/gdCepUxI2i7a3PZQ3EDcWuH++m4U1RKR61rz9sk+LkNuKG2bZfpaFYR9yICnHDmdZG12eladv+tn+7lYh/96sZxavQ+zmmsS5+cYPkqQHFldG/0Suh03PIYKblnOuUSyu0U0bDO+8N81nR1fR43oza8AZhXjd2nas68CpXNYGnsyvoMt3jcS+rWs0rt7h8g8vz1tg0W0rB0PnuW9fsBEWl5+NGyTbW5wrmdVOaFl2Ga7697xWpr3ZnNUCT4mTDccN426/UWKwjbkSl5+PGNtfn0vj0sCG3/e3/docZVs9nmDjpmtembvsejGNd/OIGyVMDgoJZsuYpNuGDWaWcWk/TakW1pyF4pXbKDmyCyvNa0f0DUuNHV8zrplTnVfVbKrduvXnQG7w1Tv8NuXnlms9rIINpVhNtTVvluuFXfvyCWafq7bjhw2R9rmFeN0Ea26lxHVk1mtZmxckG57Whbb9SY7GOuBGVno4bIdbnII1t+2HKCz+tlobjZGPxKtx+TiOxLn5xg+SpAfaKVi/oFBVXrHr9N75x1F8JnXEGNs0IZjazYOzWQGBRG6JfsLOXh2kgrFR32GaVa41ne5cJVatXrv334vL1atzDxi+YdSp7ufRo3AjQ0HZkaSBuBDAvt7gs6u08ujQrTjYYNxrb9qs0FOuIG1Hp5bgRan0OYL7tK2F+uyP83S/bRrxqaNuv0lCsi1/c4IERLdMvbxxTq5YsyJWAuxRLN9cde8O5Yc95EZzvy8T6xb6/87Hk7A4enJs8A5t51VdzWDcNyiP5bhs3Y9Y1sEeSsi6P/WfWX/GldY28jLcoTLku2bvW7ZhyxLSyw0wzYiBmcaNd67NTrtcLMXOP9Y31e2VX4B3Suj4HZGo9qXK1nP/N2A1oJE42HDfCaFKsQzv1zv5GXaG3fVuYbTD63/1txqsWbfst3SfsFGrFhqHGjgRpriMBDbx3wc7aPYZRfZVOibY0g/c6SlA8upT0PkXb0PQ0cgS5WIfbKbdc/+7rtvWwXvVeKUy5RV71WE+YafbiV9fbmTZsR2/HjWauz9uLG+Vy9U3RTt3VGYddlwFHXX01I042a9s0ra9yXdWf5mZNG+rp7bjhpfH1eTvbvi3Mer6dYcvLbjtxcvvxqlxXjcerRmJdmPrsTCRPDWg8mGlqBXM2Cs+m5tplrbhS+jXb2Uga4bOiFzdkj8YoHpWYBkGHc3p4W+UWN+SaxqAOw5RraXA+i8JMcw2/aYhfMOtUxI1mrc8Nbk++8apOuQHbvd3UWZah4+Q240aNBsZjHOuIG1Hp+bhRo4H1ebvbfkmYbXCbw243ToaNVyH3r7yG003c4waX7bXciMyv5SSTTklSraEl6ksqnZHc2ryM1Jxh1afBPYaRpIp9acnk1qQJV5E0bmRecpm0qOBclkyJ2rBb+z4h/R6DXEaV6yrYtFw1zWu5ymlOqmGN6jBMuVr+O9Fvm2j4fQdhphkxEa+40Zb1WZWrdgyqyq1fD/nPbou+uGfbwsbJ7caNMMLGOnSIGMWNMLa57ZeE2QYj/t0PHa9C7l+1ZZ+wAyR0BuV8Bhx5mR0akClJq2DLixPjiWWMZmOdij+WMZqNdSr+4reMOfMEAAAAAAZInuBvfUoGfJ5ag+6Vnx2ShPVkHqcD0EzEjVgibqCliBuxFNe4QfIEAAAAAAa45wkAAAAADHDmCQAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMEDyBAAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAAABggOQJAAAAAAyQPAEAAACAAZInAAAAADBA8gQAAAAABkieAAAAAMAAyRMAAAAAGEgUFOdzbCUSCecTgFaIYxghbgCtRdwA0KhOiBs9kzwV/vfA+dZaiR8ckPX/u+J8a63kjw9FOl9RrSrW8qKsUOJaVpSs+SJuhGLFjbiWxbYcSqzjBssrFMoKj7Jai8v2AAAAAMAAyRMAAAAAGCB5AgAAAAADJE8AAAAAYIDkqW225MvFOUmNHbJu4LaasfPy7uID2XT6AIBKxA0AANqJ5Kkdnj2Qd8dOyzszn8ujr51u2tffyt2Zy3JsbE6+fOZ0AwCNuAEAQNuRPEVuSz5++7LcVTs/e0+clhtfrFiPKLaaLy7L5IkX1c7Q5/LO28scSQbgIG4AANAJSJ4itrl4Q2b1DtD0+7Jw9bC88oLzB+2FA/Lrq9fl9rTeEXpfZha3nD8A6GXEDQAAOgPJU6S2ZG3lW9V+XU6O77A7eegb/40cUe1HK//kKDLQ84gbAAB0CpKnSP1Hnul7FU4clFfsDj4OyC9OqNbX38v3dgcAPYu4AQBApyB5AgAAAAADJE8AAAAAYIDkKVI/khf2q9ZH9+VLu4OPB/KPj1Rr//PyvN0BQM8ibgAA0ClIniK1Q4YOvajan8sHAU/E2lz8i9xV7b2HfiZ9dicAPYu4AQBApyB5iljf+DsyuV/k0cxpSV1crnyp5bMH8vHF83Js5luR/adlOuDJWgB6B3EDAIDOkCgozufYSiQSUvjfA+dbayV+cMB6cWWwB/LumP3CS0/7X5cbfzxb+S4XD8kfH4p0vqJaVazlRVmhxLWsKFnzRdwIxYobcS2LbTmUWMcNllcolBUeZbUWZ57a4oD8/s77cmP6ddmr72Uo2v+iHJm+LLfv1N8BAtBriBsAALQbZ56azOwIcnNw5ik8ygovyrKiZM0XcSOUyM8GEQ9DIW6Ex/IKj7LCo6zW4swTAAAAABggeQIAAAAAAyRPAAAAAGCgZ+55AtA6cQwjxA2gtYgbABrVCXGDB0Y0WaxvkObG71CivNExrmVFibgRni6LB+iEQ9zoLiyv8OJc1v/7P58431rruZePsrxaiMv2AAAAAMAAyRMAAAAAGCB5AgAAAAADJE8AAAAAYIDkCQDQZlvy5eKcpMYOWQ9+sJqx8/Lu4gPZdPoAgN6wJfeW3pNXx49aD36wmvGLcmZpQ546faC9SJ4AAO3z7IG8O3Za3pn5XB597XTTvv5W7s5clmNjc/LlM6cbAMTZ5oacGT8rh2+uyv2HTjft4RO5dfOKvDT+ntzjiFLbkTwBANpkSz5++7LcVUnT3hOn5cYXK9ajza3mi8syeeJFlUR9Lu+8vcwZKAAxtyVz01fklkqaDo6dlOVPP7EebW41n16S62O7VRK1KoenVzgD1WYkTwCAtthcvCGzOnGafl8Wrh6WV15w/qC9cEB+ffW63J7WCdT7MrO45fwBAOLn6dKf5LxOnM7Nyd8vHJLX+pw/aH375OyFq/LNOZ1AfSCnloiH7UTyBABogy1ZW/lWtV+Xk+M77E4e+sZ/I0dU+9HKPzn7BCCmtiS7+kS1h+XCcf94uPP4r+SUat9f/Rdnn9qI5AkA0Ab/kWf6HqcTB+UVu4OPA/KLE6r19ffyvd0BAGLmv/JvfY/T2M/lNbuDj33yyzHVergpebsD2oDkCQAAAAAMkDwBAAAAgAGSJwBAG/xIXtivWh/dly/tDj4eyD8+Uq39z8vzdgcAiJkfyk8GVevOV3LP7uBjQ/52R7UG+6Tf7oA2IHkCALTBDhk69KJqfy4fBDxJb3PxL3JXtfce+pm4Hz4FAPGxQ0aGd6v2qlwLeJLe06W/yi3VPjj8U9lpd0IbkDwBANqib/wdmdwv8mjmtKQuLle+DPfZA/n44nk5NvOtyP7TMh3wRD4A6HY7j/9Wrg+K3L95Vl69tlL5MtzNDZm7dlFeuvlEZPCk3Ap4Ih9aL1FQnM+xlUgkpPC/B8631kr84ABlhRR5WRFtAtZ6SFldg7gRni5Lv/A22AN5d8x+Ua6n/a/LjT+erXwHlIfkjw8RN0IiboTH8govzmXpF94G25Az4/aLcj0NDsvyzFuV74Dy8NzLR1leLcSZJwBAGx2Q3995X25Mvy579T1QRftflCPTl+X2nfqJEwDEwz758+KcLJ8bloP6Hqiiwd1y6twl+WaxfuKE1uPMU5PF+QhybMvi6EwonXIkqNmIG+HpsuqfeWoOzjyFR9wIj+UVXpzLqn/mqTk489RanHkCAAAAAAMkTwAAAABggOQJAAAAAAz0zD1PAFonjmGEuAG0FnEDQKM6IW70zgMjIprNyMvixu9Qor7xm5tFu4eer9iu85QVCmWFZ5UV07gRx9gb57L4XQ4nrmUF4bI9AAAAADBA8gQAAAAABkieAAAAAMAAyRMAAAAAGCB5QpNtyZeLc5IaO2TdBG81Y+fl3cUHsun0gXq25N7Se/Lq+FHrBlOrGb8oZ5Y25KnTBzoJ6zwAxBu/yygjeULzPHsg746dlndmPpdHXzvdtK+/lbszl+XY2Jx8+czpBm+bG3Jm/Kwcvrkq9x863bSHT+TWzSvy0vh7co898s7BOg8A8cbvMqqQPKFJtuTjty/LXbUDuffEabnxxYr1mGer+eKyTJ54Ue1Qfi7vvL3M0XhfWzI3fUVuqeB8cOykLH/6ifUIVav59JJcH9utgvWqHJ5e4UhXR2CdB4B443cZtUie0BSbizdkVu9ETr8vC1cPyysvOH/QXjggv756XW5P653J92Vmccv5A9yeLv1JzusAfW5O/n7hkLzW5/xB69snZy9clW/O6UD9gZxaog7bjXUeAOKN32V4IXlCE2zJ2sq3qv26nBzfYXfy0Df+Gzmi2o9W/smR+Bpbkl19otrDcuG4fx3uPP4rOaXa91f/xVGutmKdB4B443cZ3kie0AT/kWf6fo8TB+UVu4OPA/KLE6r19ffyvd0BJf+Vf+trqcd+Lq/ZHXzsk1+OqdbDTcnbHdAWrPMAEG/8LsMbyRMAAAAAGCB5AgAAAAADJE9ogh/JC/tV66P78qXdwccD+cdHqrX/eXne7oCSH8pPBlXrzldyz+7gY0P+dke1Bvuk3+6AtmCdB4B443cZ3kie0AQ7ZOjQi6r9uXwQ8FSxzcW/yF3V3nvoZ+J+YA20HTIyvFu1V+VawBN7ni79VW6p9sHhn8pOuxPagnUeAOKN32V4I3lCU/SNvyOT+0UezZyW1MXlyheDPnsgH188L8dmvhXZf1qmA55O1st2Hv+tXB8UuX/zrLx6baXypXubGzJ37aK8dPOJyOBJuRXw5B9Eg3UeAOKN32V4SRQU53NsJRIJiWo2Iy/rfw+cb62V+MEB6+WfwR7Iu2P2S0M97X9dbvzxbOX7cDwkf3wo0vmKcnnpF+sF028yt1/I52lwWJZn3qp814SH514+Gst1Pkp6vmK7zlNWKJQVnlVWTONGHGNvnMvidzmcuJYVhDNPaKID8vs778uN6ddlr74fpGj/i3Jk+rLcvlN/JxL75M+Lc7J8blgO6mutiwZ3y6lzl+SbxfoBGlFinQeAeON3GZU489RkkZcV4VHC+kfhm6O3zzw1B2eewtPzFdt1nrJCoazwrLJiGjfiGHvjXBa/y+HEtawgnHkCAAAAAAMkTwAAAABggOQJAAAAAAz0zD1PAFonjmGEuAG0FnEDQKM6IW7wwIgmi7wsbloOJcqblqNeN+J4E2yU2L7Ci/W2HOF88bCe7hHX2Bv17xdlhUNZrcVlewAAAABggOQJAAAAAAyQPAEAAACAAZInAAAAADBA8gT0tC25t/SevDp+1Lr52GrGL8qZpQ156vQBoBtsyZeLc5IaO2Q9+MFqxs7Lu4sPZNPpA52E2At0K5InoFdtbsiZ8bNy+Oaq3H/odNMePpFbN6/IS+PvyT32uoDO9+yBvDt2Wt6Z+Vwefe10077+Vu7OXJZjY3Py5TOnG9qP2At0NZInoCdtydz0FbmlfrgPjp2U5U8/sR6vazWfXpLrY7vVD/mqHJ5e4Sgo0NG25OO3L8tdlTTtPXFabnyxYj3a3Gq+uCyTJ15USdTn8s7by5yB6gjEXqDbkTwBPejp0p/kvP7xPjcnf79wSF7rc/6g9e2Tsxeuyjfn9I/4B3Jqacv5A4BOs7l4Q2Z14jT9vixcPSyvvOD8QXvhgPz66nW5Pa0TqPdlZpFtud2IvUD3I3kCes6WZFefqPawXDi+w+7kYefxX8kp1b6/+i+OgAIdaUvWVr5V7dfl5Lj/ttw3/hs5otqPVv7J2ae2IvYCcUDyBPSc/8q/9XX2Yz+X1+wOPvbJL8dU6+Gm5O0OADrKf+SZvsfpxEF5xe7g44D84oRqff29fG93QFsQe4E4IHkCAAAAAAMkTwAAAABggOQJ6Dk/lJ8Mqtadr+Se3cHHhvztjmoN9km/3QFAR/mRvLBftT66L1/aHXw8kH98pFr7n5fn7Q5oC2IvEAckT0DP2SEjw7tVe1WuBTzN6enSX+WWah8c/qnstDsB6Cg7ZOjQi6r9uXwQ8CS9zcW/yF3V3nvoZ+J+uBuiRuwF4oDkCehBO4//Vq4Pity/eVZevbZS+ULGzQ2Zu3ZRXrr5RGTwpNwKeCoUgPbqG39HJveLPJo5LamLy5Uvw332QD6+eF6OzXwrsv+0TAc8kQ/RIPYC3S9RUJzPsZVIJCSq2Yy8rP89cL61VuIHB+JbVkzXDf3SxWD6Lff2yxo9DQ7L8sxble8h8fDcy0cjm68osX2FF+ttOcL50i+8DfZA3h2zX5Traf/rcuOPZyvfAeUh+eNDsVxeUYpr7I3694uywqGs1uLME9Cz9smfF+dk+dywHNTX4RcN7pZT5y7JN4v1f7wBdIID8vs778uN6ddlr74Hqmj/i3Jk+rLcvlM/cUKUiL1AN+PMU5NFXhZHq0OJ/Gh1hGXVP/rZHJx5Ci/W21dct+UI56v+mafm4MxTeHGNvVH/flFWOJTVWpx5AgAAAAADJE8AAAAAYIDkCQAAAAAM9Mw9TwBaJ45hhLgBtBZxA0CjOiFu8MCIJrPK4sbvUCK/8ZuyQomyrChFXoc8gCCUyOMGcT6UKJdXlKKOGzycIpzIyyJuhNIpcYPL9gAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkA4GFLvlyck9TYIevBD1Yzdl7eXXwgm04fALrBltxbek9eHT9qPfjBasYvypmlDXnq9AHAHMkTAKDSswfy7thpeWfmc3n0tdNN+/pbuTtzWY6NzcmXz5xuADrX5oacGT8rh2+uyv2HTjft4RO5dfOKvDT+ntzjaAjQEJInAIDLlnz89mW5q5KmvSdOy40vVqxHm1vNF5dl8sSLKon6XN55e5kzUEBH25K56StySyVNB8dOyvKnn1iPNreaTy/J9bHdKolalcPTK5yBAhpA8gQAKNlcvCGzOnGafl8Wrh6WV15w/qC9cEB+ffW63J7WCdT7MrO45fwBQKd5uvQnOa8Tp3Nz8vcLh+S1PucPWt8+OXvhqnxzTidQH8ipJbZlwBTJEwDAsSVrK9+q9utycnyH3clD3/hv5IhqP1r5J2efgI60JdnVJ6o9LBeO+2/LO4//Sk6p9v3Vf3H2CTBE8gQAcPxHnul7nE4clFfsDj4OyC9OqNbX38v3dgcAHeW/8m99j9PYz+U1u4OPffLLMdV6uCl5uwOAOkieAAAAAMAAyRMAAAAAGCB5AgA4fiQv7Fetj+7Ll3YHHw/kHx+p1v7n5Xm7A4CO8kP5yaBq3flK7tkdfGzI3+6o1mCf9NsdANRB8gQAcOyQoUMvqvbn8kHAk/Q2F/8id1V776GfifsBXgA6xQ4ZGd6t2qtyLeBJek+X/iq3VPvg8E9lp90JQB0kTwCAkr7xd2Ryv8ijmdOSurhc+TLcZw/k44vn5djMtyL7T8t0wBP5ALTXzuO/leuDIvdvnpVXr61Uvgx3c0Pmrl2Ul24+ERk8KbcCnsgHoFKioDifYyuRSEhUs2mV9b8HzrfWSvzgQHzLinJ5UVYoUZYVpcjrMMLtS7/wNtgDeXfMflGup/2vy40/nq18B5SH5I8PxTduEOdDiXJ5RSnquKFfeBtsQ86M2y/K9TQ4LMszb1W+A8rDcy8fjXb7imtZxI1QOiVucOYJAFDlgPz+zvtyY/p12avvgSra/6Icmb4st+/UT5wAdIJ98ufFOVk+NywH9T1QRYO75dS5S/LNYv3ECUAlzjw1GUcWwovyyEKsj3DFsKwoRV6HEW5f9c88NQdnnsIjzneXqONG/TNPzcGZp/CIG+F1StzgzBMAAAAAGCB5AgAAAAADJE8AAAAAYKBn7nkC0DpxDCPEDaC1iBsAGtUJcYMHRjRZ1DcExvXGb26CDSeuZUUpznGDG4nDifO6EelvCnEjFMoKL/Ky4rotxzDOB+GyPQAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeeoJW/Ll4pykxg5ZN/ZZzdh5eXfxgWw6fXSnLbm39J68On7UevCD1YxflDNLG/LU6QMA0Gxx/U0Beg3b8naQPMXdswfy7thpeWfmc3n0tdNN+/pbuTtzWY6NzcmXz5xu3WRzQ86Mn5XDN1fl/kOnm/bwidy6eUVeGn9P7rHlA0BzxfU3Beg1bMvbRvIUa1vy8duX5a7aKPaeOC03vlixHl1pNV9clskTL6qN5HN55+3lLjvCsCVz01fklkqaDo6dlOVPP7EebW41n16S62O7VRK1KoenVzgDBQBNE9ffFKDXsC2HQfIUY5uLN2RWbxjT78vC1cPyygvOH7QXDsivr16X29N6A3lfZha3nD90vqdLf5LzOnE6Nyd/v3BIXutz/qD17ZOzF67KN+d0AvWBnFrqnvkCgE4W198UoNewLYdD8hRbW7K28q1qvy4nx3fYnTz0jf9Gjqj2o5V/dsnRhS3Jrj5R7WG5cNx/vnYe/5WcUu37q//i7BMAhBbX3xSg17Ath0XyFFv/kWdfq9aJg/KK3cHHAfnFCdX6+nv53u7Q4f4r/9b3OI39XF6zO/jYJ78cU62Hm5K3OwAAti2uvylAr2FbDovkCQAAAAAMkDwBAAAAgAGSp9j6kbywX7U+ui9f2h18PJB/fKRa+5+X5+0OHe6H8pNB1brzldyzO/jYkL/dUa3BPum3OwAAti2uvylAr2FbDovkKbZ2yNChF1X7c/kg4Ekpm4t/kbuqvffQz8T90LrOtUNGhner9qpcC3iS3tOlv8ot1T44/FPZaXcCAGxbXH9TgF7DthwWyVOM9Y2/I5P7RR7NnJbUxeXKl509eyAfXzwvx2a+Fdl/WqYDnrjSaXYe/61cHxS5f/OsvHptpfJluJsbMnftorx084nI4Em5FfBEPgCAubj+pgC9hm05nERBcT7HViKRkKhm0yrrfw+cb62V+MEB64VmwfQbpO0XoXna/7rc+OPZymf8e0j++FCk86VfeBtsQ86M2y/K9TQ4LMszb1W+A8rDcy8fjXbdoKyuEee4Eduy4rp9xfU3hbgRCmWFF3lZcd2WYxjng3DmKfYOyO/vvC83pl+Xvfoa16L9L8qR6cty+079DaMz7ZM/L87J8rlhOajvgSoa3C2nzl2SbxbrJ04AgEbF9TcF6DVsy9vFmacm67wjC83ReWeemoMzT+FFWVaU4hw3YltWXLevuP6mEDdCoazwIi8rrttyDON8EM48AQAAAIABkicAAAAAMEDyBAAAAAAGeuaeJwCtE8cwQtwAWou4AaBRnRA3eueBEXG9QTquZUW0Wup1g4dThBNlWVGKax1SVni6rEjjBnG+a7DOh6fX+dj+LrN/GEqnxA0u2wMAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkifAyJbcW3pPXh0/at1gajXjF+XM0oY8dfoAgErEDfSaKNd5ti+0B8kTUM/mhpwZPyuHb67K/YdON+3hE7l184q8NP6e3Nt0ugGARtxAr4lynWf7QhuRPAGBtmRu+orcUsH54NhJWf70E+sRqlbz6SW5PrZbBetVOTy9wpEuAA7iBnpNlOs82xfai+QJCPB06U9yXgfoc3Py9wuH5LU+5w9a3z45e+GqfHNOB+oP5NTSlvMHAL2MuIFeE+U6z/aFdiN5AnxtSXb1iWoPy4XjO+xOHnYe/5WcUu37q//iKBfQ84gb6DVRrvNsX2g/kifA13/l3w9Va+zn8prdwcc++eWYaj3clLzdAUDPIm6g10S5zrN9of1IngAAAADAAMkTAAAAABggeQJ8/VB+Mqhad76Se3YHHxvytzuqNdgn/XYHAD2LuIFeE+U6z/aF9iN5AnztkJHh3aq9KtcCntjzdOmvcku1Dw7/VHbanQD0LOIGek2U6zzbF9qP5AkIsPP4b+X6oMj9m2fl1WsrlS/d29yQuWsX5aWbT0QGT8qtgCf/AOgdxA30mijXebYvtFuioDifYyuRSEjhfw+cb62V+MEBygrJKiui1VKvG/rFesH0m8ztF/J5GhyW5Zm3Kt814eG5l49GOl9xLCtKca1DygpPlxVp3CDOdw3W+eas87H9XWb/MJROiRuceQLq2id/XpyT5XPDclBfa100uFtOnbsk3yzWD9AAeg1xA70mynWe7Qvtw5mnJot1th/DIwtmR9OagzNP3SWudUhZ4emyIo0bxPmuwTofntmZp+bgzFN4vRg3OPMEAAAAAAZIngAAAADAAMkTAAAAABjomXueALROHMMIcQNoLeIGgEZ1QtzomeRp/f+uON9aK/njQ7G8cc660ZGyQqGs7sLyCi/qsnj4SzhxLStKLK/wKCs8q6wI90Uj3ceOqA6DcNkeAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8VdiSLxfnJDV2yLopzWrGzsu7iw9k0+kDANDNtuTe0nvy6vhR68EPVjN+Uc4sbchTpw8AQLPFZx+b5Kno2QN5d+y0vDPzuTz62ummff2t3J25LMfG5uTLZ043AED32dyQM+Nn5fDNVbn/0OmmPXwit25ekZfG35N7HCkDgOaK2T42yZNlSz5++7LcVQt074nTcuOLFeuxi1bzxWWZPPGiWsCfyztvL3MGCgC60pbMTV+RWyppOjh2UpY//cR6tLnVfHpJro/tVknUqhyeXuEMFAA0Tfz2sUmelM3FGzKrF+r0+7Jw9bC88oLzB+2FA/Lrq9fl9rReuO/LzOKW8wcAQLd4uvQnOa8Tp3Nz8vcLh+S1PucPWt8+OXvhqnxzTidQH8ipJeI8ADRDHPexSZ5URry28q1qvy4nx3fYnTz0jf9Gjqj2o5V/cvYJALrKlmRXn6j2sFw47h/ndx7/lZxS7fur/+LsEwCEFs99bJIn+Y8809dfnjgor9gdfByQX5xQra+/l+/tDgCArvBf+be+x2ns5/Ka3cHHPvnlmGo93JS83QEAsG3x3McmeQIAAAAAAyRPAAAAAGCA5El+JC/sV62P7suXdgcfD+QfH6nW/uflebsDAKAr/FB+Mqhad76Se3YHHxvytzuqNdgn/XYHAMC2xXMfm+RJdsjQoRdV+3P5IOApH5uLf5G7qr330M/E/ZAmAECn2yEjw7tVe1WuBTxJ7+nSX+WWah8c/qnstDsBALYtnvvYJE9K3/g7Mqky40czpyV1cbnyRV3PHsjHF8/LsZlvVUZ8WqYDnhYCAOhMO4//Vq4Pity/eVZevbZS+TLczQ2Zu3ZRXrr5RGTwpNwKeCIfAMBcHPexEwXF+RxbiUTCehlXMP32Y/slXp72vy43/ni28vn0HpI/PiSF/z1wvrVW4gcHJKrFp+uQssKhrO7C8gov6rL0C2+DbciZcftFuZ4Gh2V55q3Kd0B5eO7loyyvkKIsK0osr/AoKzyrrAj3RSPdx46oDoNw5qnkgPz+zvtyY/p12auvzyza/6Icmb4st+/UX6gAgE62T/68OCfL54bloL4Hqmhwt5w6d0m+WayfOAEAGhWvfWzOPDUZZ57Co6zw4lpWlFhe4UVdVv0zT83BmafwoiwrSiyv8CgrPKusjjrz1ByceQIAAACALkLyBAAAAAAGSJ4AAAAAwEDP3PMEoHXiGEaIG0BrETcANKoT4kZPJE8AAAAAEBaX7QEAAACAAZInAAAAADBA8gQAAAAABkieAAAAAMAAyRMAAAAAGCB5AgAAAAADJE8AAAAAYIDkCQAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMEDyBAAAAAAGSJ4AAAAAwADJEwAAAAAYIHkCAAAAAAMkTwAAAABggOQJAAAAAAyQPAEAAACAAZInAAAAADBA8gQAAAAABno0ecrL7FBCEkOz6lPcOPM2kXW+dwqPOs/PysTQhJSnNM7LpdmyMpHoxOUcZ8SN6BE3QstnZXZiSBI6XuhmaEgmstRUdIgb0SNuhJXPzsqQrp9S3FB1R0WVcOYJbZP/7LYsrDtf0JDsxKgsOJ+BXkLcaERWJgZGZcpdYevrsjA6oBIo5zvQA4gbDchOyMDolA4VZesLMjowJLMkUBaSJ0SkXybXClJYm1Sf/Jj0g/zskIySOaEnEDfCKB5kSaYykiuoOtJNLi0p1W3hCkfcEVfEje3Ly+wVK2pIOpOzY0YhJ5l0UnVbl6k/cNRFI3mylE/fZitOVQ7JhGGanVeZ+lDx9KY1XNb7dHY+KxMmp0IN+6so1/i0qn3J15Cet6rhPWfXaFpUHbovDdF1UNGT+xS5/XlgSh/WWJBR1b81LRX9uNQtv4Hlp+ZX/61rj7rmZ+VNVW+pTMbaAUI7NbDe+SBuqDokbrRIVu5a+0Bp+XB+pLyD2D8p83qHiJ3GNmlgvfNB3FB1SNxojfxncltVVTL9oUyOFCNEv4xMfihW/vTou8r66lUqq+xBuYJaCQpq7VCfXN9VdXg1qYzVk69cOuk5nNW4B86kCmrd8+gvWUjbE2Iz7M+z3GSqkNLzEjjRmYLa8S4kU17lbGda/OuvPBnuOq/tP2mNrHq5KCHL101FVajx1XTrGvZys5et+zOiUb1+NrDeeSBu+NdfeTLcdV7bP3EjQDdOcyxVr58NrHceiBv+9VeeDHed1/ZP3NgOZ77jMTOhkTy5v+uVX60YxW2kFCwCVxZnJ1ZvXBlnyFymYnxOx1K3VLE/pVSGx7QE92darpfisHZ/xXIzNfNrOC25tBVwkqVxKU63mnG5ApU9npSamqLqfhqvs/L8uPorTUN3y6Tc8+wsw5jMW3fwXz8bX++IG6oDcaOVrB03vdOnl5FrpzCZrKgXtJr/+tn4ekfcUB2IG21QnL+Yzl7DSJ7c3ys2LM3Z6IPWFufIgn0kw6V6Y67ZuMusnWLrR059abC/uuV6cubLFViK7DKcemh0mvWPcjpdyKgf61rVda4HqxPMTMsvDred5dctSjtCzvc4zVvXIG4QN7qHXU/JQtKax9qmZh1AixA3iBvdLeesd3Gct+3inie35B4ZcD7aBmSP2pqC5L97pP5PyrE3qq4e739DjnkMmzoy4nwqGzmiNrkqdfvLPRZ9Be/eXWbletq7q+aa9wFrhh/Jd66LWutOS/+kXNJf9VOcpqZkdGDAus53aGLW8JroYKZ1tp3l1xXyszI0uqBi/IcyyU0KnYe4QdzoWOvqX0oyOetAqdWoHSG15qm/TP1BuvXWz1ggbhA3Ol5eshNDMqCfUJVMS26+tm56FckTmmJkXv8opyXlCh7rCzqwTfADHZJ+xKr+4Vqfsn8k7MZ5VPnCqPrM40PRnYgbrdO/a6/6PynpD+eldN+30j8yLx+ma3dagW5B3IiCfjDGgIwurKu8KccDZqqQPIVk/0Cty+3Pqn6FnCeWVFu4W7tpZ61HIlWq29/AHuvo4aOaX7+cPPYo11PNU1Py8pk10XvFfYDJdJr7RyZlXj/6Ux/dzGUkbR2sWRCPwRtiWj7QLYgbZcSNFrGW9bo8zjnf0fWIG2XEjVbST0gckKn1pKQyOVnjkpcaJE9hjRyxHhm9PvWmzBbPGeezMvvmlHW2oKR4enthtOKRmqV39iSPiXUm3ri/XSrk2OWW+9NHChp4eer6lLw5m3UCWl6ys2+qjUV9TB0R6+Ss6bQ4j+McKo1LDdo/ILusc9hJ2VN5brtKwNFP0/Jjrn9yrXTJTblxHlWeyqjPa1zO122IG8SNVnPqYWF0qLyOKfpx0/p1Bz1TD3FC3CBuRMB+P1xS0rk1mXeftkaZ2hHrQT43cNbc0Oh0r3OTXPEpJJ6Ne9iM2SNBG+mvpp8GHh2qb7isLafqJkijaSneQOnRBNSxu97sG1E9lkMj5ZssP6fOuv++x/jenNq5qtezBtY7D8QNp568+guoY+JGA4o3wXs0XTcvXat6PWtgvfNA3HDqyau/gDombhgKiBl2U/2gjN7Emacm0GcGijfh2vSpTvst7hVG5mVNv9293KPqVd/MW3XmoIH+Kq771f2s/U72OF/r2ntJ1lzTnUylVRnz9lGgIqNp0W/qzkm6sifVW0ZyAdfJ9k9eKo13/XGudBSpgmldAF2GuEHcaLn+SVUPGVUPropQ9aB2BIV7v7sTcYO40UrFe6wRLKEzKOczmkpfMzoqj9KdeL2oPW0L+pIvfkGBDkLcANAo4gYQJc48haUfI62ffjYx6zqSoR/vaF8LXPNoTwAgbgBoFHED6AgkT2GVbjKckgEd1KxGP95RdUum5XccaAFQjbgBoFHEDaAjkDyFtr3rbwH0MuIGgEYRN4BOwD1PAAAAAGCAM08AAAAAYIDkCQAAAAAMkDwBAAAAgAGSJwAAAAAwQPIEAAAAAAZ6NHnKy+xQQhJD7hfNbZd+e7Ya10TW+d4qzjS3vJxGedRlflYmhiZUzRQ1s75hi2q9Qxlxo3mIG1HJZ2dlSNdj8b1Auo6p0AgRN5qHuBGZfFZmJ4ZccWNIJggcJZx5QtPlP7stC+vOF7RE8Y3yQFwQN1ogOyEDo1Oy7q7X9QUZHRiSWfaDEAPEjVZQSfrAqEy5K1YFkYXRAZVAOd97HMkTQtIv7StIIfAFfSb9wFR+dsh+ozzQtYgbrZeX2Ss6UCQlncmJfqVjoZCTTFq/YHVdpv7AXhC6DXEjCsWDs9bLl624oZpcWlKq28IVzuhpJE+W8mnebMUlDkMy0cjhueyEDJVOcXpfGpHX/ZTG71+G1V+dcdWyT+kP6fFVDe85G3nVv3taPMtRdeM+daunt6In9yly+/PAlD5asSCjqn9rWir6calbfgPLRc2v/lvsj4rkZ+VNVb+pTMYKZGinBtbPIMQN4kYr5D+T26pKk+kPZXKkuBvZLyOTH4qVPz36rrJeEZEG1s8gxA3iRktk5a6VOaXlw/mRcgLaPynzOokiKbWpjLIH5Qrqx6OgVg71yfVdVYdXk8pYPfnIFNROrBpXsqB+j6qGTRbSdgGWXDpZ9fdy4y7Ds79kqpDS0xg4Mfa0JFOputNSyHj1U92ff72UJ8Ndl7X9J62RVde3ErJ83VRUhRpfTbfYcdY1aybdnxGN6vW4gfWzBnGjXJe1/RM3Wsmpn96a6TaqXo8bWD9rEDfKdVnbP3GjCXoyJjaO5Mn9XW8kao0pbkuloBK4FjnBTDXJdHHYXCFTM2yxjFQhU9pYlVza3qhL/RXHpzbqYo+5TMX0+StPS3k+gqZFbyDliSnNb7FenGlLlsal1ExvdV0Wx6Pm0/le249h+a7+yvPj6q80Db0hk3LXjbOse6wO2st/PW58/SRuVNZlcTzEjVYr1kOPV0OE/NfjxtdP4kZlXRbHQ9xoGit50kmlXpaupFMl7O7663UkT+7vFRug5gSHwI3G6ce1Mdv8xqn+olfKTLqQdh+xKZZRDCAVh22UmiDixW9a9PbgmpaAcdn9OUdjiv3pjSadVkG4eqxadV3qweoEM9Pyi8Nta7nETCmgOd97sQ7arnpdD7N+Ejcq61IPRtxotZxzVLmX6yB61et6mPWTuFFZl3ow4kYz2fWZLCStuqhtataVHsU9T27JPTLgfLQNyB611ZlIHnuj6jrQfnnjmB74kXxXvFw2P2tdFzwwMCCjo1MytbAgrmeZ2HKPrW57d1VdVdr/hlijM7F3V801qQPWjLimRUkdGXE+lY0cUWGiqH9SLumv+ikrU1MyqqZbX+c7NDFreE10sLrlF4VYLrGg15vRBfVb8KFMcrFx5yFuEDc6Xl6yE0MyoJ80k0xLbr62DhEx4gZxo2Otq38pyeSch0WoJqcyTV0N61N/EB41wwMjIpSViYEpK1AlUylJpzOSyeQkV+jsG/9H5vVGk5aUK3isL+jANsEGFBH9KFa93qxP2T8mduM8qnxhVH3mscPxRdxAWPpGeLUDvbCu8qYcN3z3BOIGtqd/1171f1LSH85L6TkzSv/IvHyY1gumMinuVSRPTbL+OOd8KsrLZ/pRR7JXrIM6+e/UKif6zK+szc/L5OSIjKg1s9/pXjKwx8ruH9WsnTl5rEdnouYpSlXT4li4WxuOstZjVir1j0zKvH70pz76kMtI2oq+C+IxeENMywfiirjROOJGI9ROdGJAptaTah3KyRqnrmOBuNE44oYha51Yl5pVDBVInpplYdR5TKaWl+zsm+oHS31MHRH3yWK9AZcCjX505pv20aFSAOrfpUKOCo5Tb7oe0amPHDbwUtT1KXlztliOx7QUT8mraXY/BrT0/qDkMXlDBz3ncZxDpXGpQfsHZJd1DjspeyrPbVcJODphWj4s/ZNrpVPn5cY5gpjKqM9rXM7XrYgbVYgbzWS/ryUp6dyazLsPI6O7ETeqEDeaxqmvhdEhmXXXl1o++jUp1JdD7Yj1oOqbDmtvQrQ53QNvFLRvJkx6Pq7T4ybGmn6cxl128abeir+bPzrU+zGmVTdBqjJq+9GN+6EEAdMcUHelp9Ooxr650KN+GynfZLk4dRZYPbHSWzexdobq9bGB9bMGcaO67ogbTVa8Ud63qb4xHq1RvT42sH7WIG5U1x1xowUCYkds57lBnHlqlj2/kzXnhjotmUxLJjfvOgrUL5MfZiqu5VUBynrzuxpMZP2xlM6SjsxXXver+sus/U72OF/r2nupclpS1dOiqDLW9Bujq6Ynk3OfxdBv6s5JurIn1VtGcgHXzfdPXiqNV19e4HlAyKh8IOaIGyXEjeYq3iuJGCJulBA3WqB/UtWXXn9cFabXn1xBeNaMLaEzKOczup6+vn1UFvSlXKzhAIwQNwA0iriB3sWZJwAAAAAwQPIEAAAAAAZIngAAAADAAPc8AQAAAIABzjwBAAAAgAGSJwAAAAAwQPIEAAAAAAZIngAAAADAAMkTAAAAABggeQIAAAAAAyRPAAAAAGCA5AkAAAAADJA8AQAAAIABkicAAAAAMEDyBAAAAAB1ifz/J5YZ4IAcgEcAAAAASUVORK5CYII=\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":44066,"title":"Number of paths on a 3d grid","description":"This problem is inspired by \u003chttps://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003e, which you might want to solve first.\r\n\r\nConsider a 3d grid formed by n vertices vertically down, m vertices horizontally right, l vertices horizontally front. Your starting point is at the top left front vertex. Your destination is the bottom right back vertex. (From one corner to the furthest corner) You are permitted at each vertex to choose to move down,  right or back, that is in the direction towards the destination. You are not to move on what constitutes a back step like moving left, up, or front. If you hit the bottom boundary, right boundary, or back boundary, take it to be given that you move along the 2d boundary.\r\n\r\nEx: in a 2x2X2 grid there are 6 ways. (down, right, back), (d,b,r), (r,d,b), (r,b,d), (b,r,d), (b,d,r)\r\n\r\n4x3x2 has 60 ways\r\n\r\n6x5x4 has 27720 ways\r\n\r\nThis problem can be solved using dynamic programming but there are other methods too.\r\n\r\n","description_html":"\u003cp\u003eThis problem is inspired by \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\"\u003ehttps://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003c/a\u003e, which you might want to solve first.\u003c/p\u003e\u003cp\u003eConsider a 3d grid formed by n vertices vertically down, m vertices horizontally right, l vertices horizontally front. Your starting point is at the top left front vertex. Your destination is the bottom right back vertex. (From one corner to the furthest corner) You are permitted at each vertex to choose to move down,  right or back, that is in the direction towards the destination. You are not to move on what constitutes a back step like moving left, up, or front. If you hit the bottom boundary, right boundary, or back boundary, take it to be given that you move along the 2d boundary.\u003c/p\u003e\u003cp\u003eEx: in a 2x2X2 grid there are 6 ways. (down, right, back), (d,b,r), (r,d,b), (r,b,d), (b,r,d), (b,d,r)\u003c/p\u003e\u003cp\u003e4x3x2 has 60 ways\u003c/p\u003e\u003cp\u003e6x5x4 has 27720 ways\u003c/p\u003e\u003cp\u003eThis problem can be solved using dynamic programming but there are other methods too.\u003c/p\u003e","function_template":"function y = count3dPath(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nm = 2; n = 2 ; l = 5;\r\ny_correct = 30;\r\nassert(isequal(count3dPath(m,n,l),y_correct))\r\n \t\t\r\n%%\r\nm = 8; n = 5 ; l = 2;\r\ny_correct = 3960;\r\nassert(isequal(count3dPath(m,n,l),y_correct))\r\n\t\r\n%%\r\nm = 5; n = 5 ; l = 10;\r\ny_correct = 1701700;\r\nassert(isequal(count3dPath(m,n,l),y_correct))\r\n\t\r\n%%\r\nm = 8; n = 4 ; l=2;\r\ny_correct = 1320;\r\nassert(isequal(count3dPath(m,n,l),y_correct))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":115733,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":54,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-02-14T00:01:08.000Z","updated_at":"2026-04-16T11:38:21.000Z","published_at":"2017-02-14T00:01:08.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is inspired by\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026lt;https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026gt;, which you might want to solve first.\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\u003eConsider a 3d grid formed by n vertices vertically down, m vertices horizontally right, l vertices horizontally front. Your starting point is at the top left front vertex. Your destination is the bottom right back vertex. (From one corner to the furthest corner) You are permitted at each vertex to choose to move down, right or back, that is in the direction towards the destination. You are not to move on what constitutes a back step like moving left, up, or front. If you hit the bottom boundary, right boundary, or back boundary, take it to be given that you move along the 2d 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEx: in a 2x2X2 grid there are 6 ways. (down, right, back), (d,b,r), (r,d,b), (r,b,d), (b,r,d), (b,d,r)\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\u003e4x3x2 has 60 ways\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\u003e6x5x4 has 27720 ways\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 problem can be solved using dynamic programming but there are other methods too.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44072,"title":"Number of paths on a n-dimensional grid","description":"This problem is inspired by \u003chttps://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003e and  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\u003e, which you might want to solve first.\r\n \r\nConsider n-dimensional grid, and you are moving from one corner to the farthest corner in a minimal number of moves. Each move corresponds to moving to a neighbouring hypercube (among possible up to 2*n neighbours). How many ways are there?\r\n\r\nInput format is a row array of size \"d\" (for d dimension) with number of grid points on each direction.\r\n\r\nOptional: can you solve it without loops?","description_html":"\u003cp\u003eThis problem is inspired by \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\"\u003ehttps://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003c/a\u003e and  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\"\u003ehttps://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\u003c/a\u003e, which you might want to solve first.\u003c/p\u003e\u003cp\u003eConsider n-dimensional grid, and you are moving from one corner to the farthest corner in a minimal number of moves. Each move corresponds to moving to a neighbouring hypercube (among possible up to 2*n neighbours). How many ways are there?\u003c/p\u003e\u003cp\u003eInput format is a row array of size \"d\" (for d dimension) with number of grid points on each direction.\u003c/p\u003e\u003cp\u003eOptional: can you solve it without loops?\u003c/p\u003e","function_template":"function y = countNdPath(NdRowVector)\r\n  y = sum(NdRowVector);\r\nend","test_suite":"%%\r\nNdRowVector = [3,3,3,3,3];\r\ny_correct = 113400;\r\nassert(isequal(countNdPath(NdRowVector),y_correct))\r\n\r\n%%\r\nNdRowVector = [1,3,3,3,3,1,1,1,3,3];\r\ny_correct = 7484400;\r\nassert(isequal(countNdPath(NdRowVector),y_correct))\r\n\r\n%%\r\nNdRowVector = [2,2,2,2,2,2,2,1,1,2,2,2,2];\r\ny_correct = 39916800;\r\nassert(isequal(countNdPath(NdRowVector),y_correct))","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":115733,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":51,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-02-14T01:28:35.000Z","updated_at":"2026-05-22T15:26:40.000Z","published_at":"2017-02-14T01:28:35.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is inspired by\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026lt;https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026gt; and \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026lt;https://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026gt;, which you might want to solve first.\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\u003eConsider n-dimensional grid, and you are moving from one corner to the farthest corner in a minimal number of moves. Each move corresponds to moving to a neighbouring hypercube (among possible up to 2*n neighbours). How many ways are there?\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\u003eInput format is a row array of size \\\"d\\\" (for d dimension) with number of grid points on each direction.\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\u003eOptional: can you solve it without loops?\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1490,"title":"Shifted Hexagonal Tiling Dots in a Circle","description":"Return how many \u003chttp://en.wikipedia.org/wiki/Hexagonal_grid Hexagonal Tiling\u003e grid points there are inside a circle of radius _r_ centred at (0,0) (including points on the edge).  Assume that a Hexagonal Tiling grid is a \u003chttp://en.wikipedia.org/wiki/Regular_tiling 2D Regular Hexagonal Tessellation\u003e with equal edges of size _e_=1.  \r\n\r\nFor _shifted_ symmetry purposes, assume that (0,0) is a _grid point_.\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many \u003ca href = \"http://en.wikipedia.org/wiki/Hexagonal_grid\"\u003eHexagonal Tiling\u003c/a\u003e grid points there are inside a circle of radius \u003ci\u003er\u003c/i\u003e centred at (0,0) (including points on the edge).  Assume that a Hexagonal Tiling grid is a \u003ca href = \"http://en.wikipedia.org/wiki/Regular_tiling\"\u003e2D Regular Hexagonal Tessellation\u003c/a\u003e with equal edges of size \u003ci\u003ee\u003c/i\u003e=1.\u003c/p\u003e\u003cp\u003eFor \u003ci\u003eshifted\u003c/i\u003e symmetry purposes, assume that (0,0) is a \u003ci\u003egrid point\u003c/i\u003e.\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = shifted_hexagonal_tiling_dots_in_circle(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('shifted_hexagonal_tiling_dots_in_circle.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nN_correct = 1;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 0.5;\r\nN_correct = 1;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 1;\r\nN_correct = 4;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 1.5;\r\nN_correct = 4;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 2;\r\nN_correct = 13;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 2.5;\r\nN_correct = 13;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 3;\r\nN_correct = 25;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 5;\r\nN_correct = 61;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 7.5;\r\nN_correct = 130;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 10;\r\nN_correct = 244;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 15;\r\nN_correct = 547;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 20;\r\nN_correct = 979;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 25;\r\nN_correct = 1510;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 50;\r\nN_correct = 6049;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 100;\r\nN_correct = 24202;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":20,"created_at":"2013-05-05T11:12:35.000Z","updated_at":"2026-02-16T10:46:10.000Z","published_at":"2013-05-05T11:13:56.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\u003eReturn how many\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Hexagonal_grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHexagonal Tiling\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e grid points there are inside a circle of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0) (including points on the edge). Assume that a Hexagonal Tiling grid is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Regular_tiling\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e2D Regular Hexagonal Tessellation\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with equal edges of size\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ee\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e=1.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eshifted\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e symmetry purposes, assume that (0,0) is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003egrid point\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1459,"title":"Triangular Tiling Dots in a Circle","description":"Return how many \u003chttp://en.wikipedia.org/wiki/Triangular_tiling Triangular Tiling\u003e grid points there are inside a circle of radius _r_ centred at (0,0) (including points on the edge).  \r\n\r\nAssume that a Triangular Tiling grid is a \u003chttp://en.wikipedia.org/wiki/Bravais_lattice 2D Hexagonal Bravais lattice\u003e with | _a1_ | = | _a2_ | = 1 and _\u0026phi;_ = 120\u0026deg;.\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many \u003ca href = \"http://en.wikipedia.org/wiki/Triangular_tiling\"\u003eTriangular Tiling\u003c/a\u003e grid points there are inside a circle of radius \u003ci\u003er\u003c/i\u003e centred at (0,0) (including points on the edge).\u003c/p\u003e\u003cp\u003eAssume that a Triangular Tiling grid is a \u003ca href = \"http://en.wikipedia.org/wiki/Bravais_lattice\"\u003e2D Hexagonal Bravais lattice\u003c/a\u003e with | \u003ci\u003ea1\u003c/i\u003e | = | \u003ci\u003ea2\u003c/i\u003e | = 1 and \u003ci\u003e\u0026phi;\u003c/i\u003e = 120\u0026deg;.\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = hexagonal_dots_in_circle(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('hexagonal_dots_in_circle.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nn_correct = 1;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 0.5;\r\nn_correct = 1;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 1;\r\nn_correct = 7;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 1.5;\r\nn_correct = 7;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 2;\r\nn_correct = 19;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 2.5;\r\nn_correct = 19;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 3;\r\nn_correct = 37;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 5;\r\nn_correct = 91;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 7.5;\r\nn_correct = 199;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 10;\r\nn_correct = 367;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 15;\r\nn_correct = 823;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 20;\r\nn_correct = 1459;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 25;\r\nn_correct = 2263;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 50;\r\nn_correct = 9061;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 100;\r\nn_correct = 36295;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n ","published":true,"deleted":false,"likes_count":0,"comments_count":1,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":33,"test_suite_updated_at":"2013-05-05T10:49:55.000Z","rescore_all_solutions":false,"group_id":20,"created_at":"2013-04-25T18:57:26.000Z","updated_at":"2026-05-22T14:31:55.000Z","published_at":"2013-04-25T18:57:26.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\u003eReturn how many\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Triangular_tiling\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eTriangular Tiling\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e grid points there are inside a circle of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0) (including points on the edge).\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\u003eAssume that a Triangular Tiling grid is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Bravais_lattice\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e2D Hexagonal Bravais lattice\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with |\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e | = |\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e | = 1 and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eφ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 120°.\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1489,"title":"Hexagonal Tiling Dots in a Circle","description":"Return how many \u003chttp://en.wikipedia.org/wiki/Hexagonal_grid Hexagonal Tiling\u003e grid points there are inside a circle of radius _r_ centred at (0,0) (including points on the edge).  Assume that a Hexagonal Tiling grid is a \u003chttp://en.wikipedia.org/wiki/Regular_tiling 2D Regular Hexagonal Tessellation\u003e with equal edges of size _e_=1.  \r\n\r\nFor symmetry purposes, assume that (0,0) point is a _vacancy_; i.e., there _are_ points at (\u0026plusmn;1,0), (\u0026plusmn;1/2,\u0026plusmn;\u0026radic;3/2), etcetera.\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many \u003ca href = \"http://en.wikipedia.org/wiki/Hexagonal_grid\"\u003eHexagonal Tiling\u003c/a\u003e grid points there are inside a circle of radius \u003ci\u003er\u003c/i\u003e centred at (0,0) (including points on the edge).  Assume that a Hexagonal Tiling grid is a \u003ca href = \"http://en.wikipedia.org/wiki/Regular_tiling\"\u003e2D Regular Hexagonal Tessellation\u003c/a\u003e with equal edges of size \u003ci\u003ee\u003c/i\u003e=1.\u003c/p\u003e\u003cp\u003eFor symmetry purposes, assume that (0,0) point is a \u003ci\u003evacancy\u003c/i\u003e; i.e., there \u003ci\u003eare\u003c/i\u003e points at (\u0026plusmn;1,0), (\u0026plusmn;1/2,\u0026plusmn;\u0026radic;3/2), etcetera.\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = hexagonal_tiling_dots_in_circle(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('hexagonal_tiling_dots_in_circle.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nN_correct = 0;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 0.5;\r\nN_correct = 0;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 1;\r\nN_correct = 6;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 1.5;\r\nN_correct = 6;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 2;\r\nN_correct = 12;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 2.5;\r\nN_correct = 12;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 3;\r\nN_correct = 24;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 5;\r\nN_correct = 60;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 7.5;\r\nN_correct = 138;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 10;\r\nN_correct = 246;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 15;\r\nN_correct = 552;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 20;\r\nN_correct = 960;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 25;\r\nN_correct = 1506;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 50;\r\nN_correct = 6024;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 100;\r\nN_correct = 24186;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":29,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":20,"created_at":"2013-05-05T10:39:46.000Z","updated_at":"2026-03-25T00:01:03.000Z","published_at":"2013-05-05T10:54:39.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eReturn how many\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Hexagonal_grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHexagonal Tiling\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e grid points there are inside a circle of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0) (including points on the edge). Assume that a Hexagonal Tiling grid is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Regular_tiling\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e2D Regular Hexagonal Tessellation\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with equal edges of size\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ee\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e=1.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor symmetry purposes, assume that (0,0) point is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003evacancy\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e; i.e., there\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eare\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e points at (±1,0), (±1/2,±√3/2), etcetera.\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1493,"title":"Dots in a Diamond","description":"Return how many \u003chttp://en.wikipedia.org/wiki/Diamond_cubic Diamond Cubic\u003e lattice grid points there are inside a 3D sphere of radius _r_ centred at (0,0,0) (including points on the edge).  \r\n\r\nSet the distance between two adjacent lattice grid points to be _e_ =1. In addition, assume that (0,0,0) is a grid point.\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many \u003ca href = \"http://en.wikipedia.org/wiki/Diamond_cubic\"\u003eDiamond Cubic\u003c/a\u003e lattice grid points there are inside a 3D sphere of radius \u003ci\u003er\u003c/i\u003e centred at (0,0,0) (including points on the edge).\u003c/p\u003e\u003cp\u003eSet the distance between two adjacent lattice grid points to be \u003ci\u003ee\u003c/i\u003e =1. In addition, assume that (0,0,0) is a grid point.\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = dots_in_diamond(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('dots_in_diamond.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nN_correct = 1;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 0.5;\r\nN_correct = 1;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 1;\r\nN_correct = 5;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 1.5;\r\nN_correct = 5;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 1.74;\r\nN_correct = 17;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 2;\r\nN_correct = 29;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 2.5;\r\nN_correct = 35;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 3;\r\nN_correct = 87;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 4;\r\nN_correct = 167;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 5;\r\nN_correct = 357;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 6;\r\nN_correct = 633;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 7;\r\nN_correct = 943;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 8;\r\nN_correct = 1371;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 9;\r\nN_correct = 1963;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 10;\r\nN_correct = 2809;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 12.5;\r\nN_correct = 5359;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 15;\r\nN_correct = 9249;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 17.5;\r\nN_correct = 14451;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 20;\r\nN_correct = 21777;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 22.5;\r\nN_correct = 31075;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 25;\r\nN_correct = 42509;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":"2013-05-10T08:33:38.000Z","rescore_all_solutions":false,"group_id":20,"created_at":"2013-05-08T09:16:44.000Z","updated_at":"2026-04-24T02:54:04.000Z","published_at":"2013-05-08T09:58:42.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\u003eReturn how many\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Diamond_cubic\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eDiamond Cubic\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e lattice grid points there are inside a 3D sphere of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0,0) (including points on the edge).\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\u003eSet the distance between two adjacent lattice grid points to be\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ee\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e =1. In addition, assume that (0,0,0) is a grid point.\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":2617,"title":"Yet Another Path Finder","description":"Assume there is a rectangular grid of points. These points are indicated by linear indices in a MATLAB-fashion. Some of the grid points are connected by vertical or horizontal lines. Your task is to find a path through the points which are not connected or touched by any line starting from the top left to the bottom right corner. One additional difficulty is that you can not move diagonally. That means the valid paths should only contain horizontal and vertical moves. There exists only one unique path. You cannot go through a particular path more than once.\r\n\r\nA matrix M of size N-by-2 will be given containing the grid information. Each row of M indicates two grid points which are connected by a line. Return a vector containing the linear indices of points in the grid that forms a valid path. The second (r) and third (c) input indicates the row and column size of the grid.\r\n\r\nExample:\r\n\r\n  M =\r\n   \r\n  [2 3\r\n   3 6\r\n   7 10\r\n   10 11]\r\n  r = 3\r\n  c = 4\r\n\r\nGrid points 2-3, 3-6, 7-10 and 10-11 are connected by lines. Thus the only path though which you can navigate is that formed by grid points 1,4,5,8,9 and 12. Thus return [1 4 5 8 9 12]\r\n\r\n\r\n","description_html":"\u003cp\u003eAssume there is a rectangular grid of points. These points are indicated by linear indices in a MATLAB-fashion. Some of the grid points are connected by vertical or horizontal lines. Your task is to find a path through the points which are not connected or touched by any line starting from the top left to the bottom right corner. One additional difficulty is that you can not move diagonally. That means the valid paths should only contain horizontal and vertical moves. There exists only one unique path. You cannot go through a particular path more than once.\u003c/p\u003e\u003cp\u003eA matrix M of size N-by-2 will be given containing the grid information. Each row of M indicates two grid points which are connected by a line. Return a vector containing the linear indices of points in the grid that forms a valid path. The second (r) and third (c) input indicates the row and column size of the grid.\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eM =\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003e[2 3\r\n 3 6\r\n 7 10\r\n 10 11]\r\nr = 3\r\nc = 4\r\n\u003c/pre\u003e\u003cp\u003eGrid points 2-3, 3-6, 7-10 and 10-11 are connected by lines. Thus the only path though which you can navigate is that formed by grid points 1,4,5,8,9 and 12. Thus return [1 4 5 8 9 12]\u003c/p\u003e","function_template":"function y = pathFinder(x)\r\n\r\nend","test_suite":"%%\r\nM = [2 3\r\n     3 6\r\n     7 10\r\n     10 11];\r\nr = 3;\r\nc = 4;\r\ny_correct = [1 4 5 8 9 12];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n\r\n%%\r\nM = [4 5];\r\nr = 3;\r\nc = 3;\r\ny_correct = [1 2 3 6 9];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n%%\r\nM = [2 5];\r\nr = 3;\r\nc = 3;\r\ny_correct = [1 4 7 8 9];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n%%\r\nM = [2 3\r\n     5 10\r\n     12 13\r\n     13 18\r\n     18 19];\r\nr = 5;\r\nc = 4;\r\ny_correct = [1 6 7 8 9 14 15 20];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n%%\r\nM = [ ];\r\nr = 1;\r\nc = 1000;\r\ny_correct = 1:1000;\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n%%\r\nM = [7 8\r\n     9 10\r\n     10 11];\r\nr = 6;\r\nc = 2;\r\ny_correct = [1:6 12];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n%%\r\nM = [2 3\r\n     4 5\r\n     5 10\r\n     10 15\r\n     15 14\r\n     13 14\r\n     11 16\r\n     16 21\r\n     23 24];\r\nr = 5;\r\nc = 5;\r\ny_correct = [1 6 7 12 17 18 19 20 25];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":17203,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":32,"test_suite_updated_at":"2014-10-06T07:21:26.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2014-10-05T05:18:09.000Z","updated_at":"2025-11-24T15:30:37.000Z","published_at":"2014-10-05T05:18:09.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\u003eAssume there is a rectangular grid of points. These points are indicated by linear indices in a MATLAB-fashion. Some of the grid points are connected by vertical or horizontal lines. Your task is to find a path through the points which are not connected or touched by any line starting from the top left to the bottom right corner. One additional difficulty is that you can not move diagonally. That means the valid paths should only contain horizontal and vertical moves. There exists only one unique path. You cannot go through a particular path more than once.\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\u003eA matrix M of size N-by-2 will be given containing the grid information. Each row of M indicates two grid points which are connected by a line. Return a vector containing the linear indices of points in the grid that forms a valid path. The second (r) and third (c) input indicates the row and column size of the grid.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[M =\\n\\n[2 3\\n 3 6\\n 7 10\\n 10 11]\\nr = 3\\nc = 4]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGrid points 2-3, 3-6, 7-10 and 10-11 are connected by lines. Thus the only path though which you can navigate is that formed by grid points 1,4,5,8,9 and 12. Thus return [1 4 5 8 9 12]\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":{"problems":[{"id":2029,"title":"Convert vector datasets to plot with imagesc instead of scatter","description":"For large datasets this allows much faster plotting.\r\n\r\nAn irregular 2D spatial sampling is provided in x and y vectors with a data point to plot in vector d. A bin size is also provded in vector b=[dx,dy]\r\n\r\nReturn a 2D matrix M with minimal empty cells with the correct spatial relationship of d and last value only retained in the event of duplicates.\r\n\r\nExample\r\n\r\n b = [6,9];\r\n\r\n x = rand(3333,1)*100*b(1)+1500;\r\n\r\n y = rand(3333,1)*100*b(2)+50000;\r\n\r\n d = sind(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);\r\n\r\nReturn G, a 2D matrix with d binned in rows and columns\r\n\r\n\r\n","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.4333px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 337.033px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 168.517px; transform-origin: 407px 168.517px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 158px 8px; transform-origin: 158px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eFor large datasets this allows much faster plotting.\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; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 362px 8px; transform-origin: 362px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eAn irregular 2D spatial sampling is provided in x and y vectors with a data point to plot in vector d. A bin size is also provded in vector b=[dx,dy]\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; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 378.5px 8px; transform-origin: 378.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eReturn a 2D matrix M with minimal empty cells with the correct spatial relationship of d and last value only retained in the event of duplicates.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 26.5px 8px; transform-origin: 26.5px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eExample\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 143.033px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 71.5167px; transform-origin: 404px 71.5167px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 44px 8.5px; transform-origin: 44px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e b = [6,9];\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 128px 8.5px; transform-origin: 128px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e x = rand(3333,1)*100*b(1)+1500;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 132px 8.5px; transform-origin: 132px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e y = rand(3333,1)*100*b(2)+50000;\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 8.5px; transform-origin: 0px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20.4333px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10.2167px; transform-origin: 404px 10.2167px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 176px 8.5px; transform-origin: 176px 8.5px; unicode-bidi: normal; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e d = sind(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 178px 8px; transform-origin: 178px 8px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eReturn G, a 2D matrix with d binned in rows and columns\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function G = binit(x,y,d,b)\r\n  G=nan(x/b(1),y/b(2));\r\n  G(r,c)=d;\r\nend","test_suite":"%%\r\nrng('default');\r\n\r\nb=[6,9];\r\nx=rand(3333,1)*100*b(1)+1500;\r\ny=rand(3333,1)*100*b(2)+50000;\r\nd=sind(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);\r\nG=binit(x,y,d,b);\r\n\r\nchk1=sum(sum(G~=0));\r\nchk2=round((mean(abs(G(G~=0))))/10^-8)*10^-8;\r\nassert(isequal(chk1,2809))\r\nassert(isequal(chk2,1.2680e-05))\r\n\r\n%%\r\nrng('default');\r\n\r\nb=[25,12.5];\r\nx=rand(5,1)*10*b(1)-200;\r\ny=rand(5,1)*10*b(2)-50;\r\nd=round((2*x+3*y-x.*y+30)/10)*10;\r\nG=binit(x,y,d,b);\r\noide=[     0 0 0 0 0 0 60 0\r\n           0 0 0 0 0 0 0 440\r\n           0 0 0 0 0 0 0 0\r\n           0 0 0 0 0 0 0 0\r\n        2840 0 0 0 0 0 0 0\r\n           0 0 0 0 0 0 0 0\r\n           0 0 0 0 0 0 0 0\r\n           0 0 0 0 0 0 0 0\r\n           0 0 0 0 0 3120 0 -1680];\r\nassert(isequal(G,oide))\r\n%%\r\n\r\nrng('default');\r\n\r\nb=[2,4];\r\nx=rand(1000,1)*25*b(1)+1000;\r\ny=rand(1000,1)*25*b(2)+200;\r\nd=round((x-y-750)/10)*10;\r\n\r\nG=binit(x,y,d,b);\r\noide=[50    50    50    50    60    60     0    60     0     0    70    70    70    70    80    80    80     0    80    90     0     0    90   100     0\r\n    40    50    50    50    50    50    60     0     0    60     0    70    70    70    70    70    80    80    80     0    80    90     0     0    90\r\n    40     0    40    50    50    50     0    60    60     0    60    60    60    70    70     0    70    80    80    80     0    80    90     0     0\r\n     0    40    40    40    40    50     0    50    50    50    60    60    60    60    70     0    70    70    70    80    80    80    80    80    80\r\n     0    30    40    40     0    50    40     0    50     0    50    50    60    60     0    60    60    60     0    70    70    80    80     0    80\r\n     0    30    30     0    40    40    40    40    40    50    50    50    50    50    60    60    60    60    60    70    70     0    70    80    80\r\n    30    30    30    30    30    30    40    40    40    40    40     0     0    50     0     0     0    60     0    60     0    70     0    70    70\r\n    20    20    30    30    30     0    30    40     0    40    40     0    40    50    50     0    50     0    60     0    60     0    70     0    70\r\n    20    20    20    20    20     0    30    30     0    40    40     0     0    40    50    50    50    50    50    50    60     0    60    60     0\r\n    10    20    20    20    20    20    30    30     0    30     0    40    40    40    40    40    40    50    50     0    50    60    60    60    60\r\n    10    10    10    20    20    20    20    20    30    30    30     0    30    40    30    40    40     0    50    50    50     0     0    60    50\r\n     0    10    10    10    10    20     0     0    20     0    20     0    30     0     0    40    40    40    40    40     0    50    50    50     0\r\n     0     0     0    10     0    10    10    20     0    20    20    20    20    30    30    30    30     0    40    40     0    40    40    50    50\r\n     0     0     0     0     0    10    10    10    10    10    20    20     0    20    20     0    30    30    30     0    40    40    40    40     0\r\n   -10   -10     0     0     0     0     0    10    10    10    10    20    10    20    20    20    20    30    30    30    30    30     0    40    40\r\n   -10   -10   -10     0     0     0     0     0    10    10    10    10     0     0    20    20    20    20    30     0    30    30     0    40     0\r\n     0     0   -10   -10   -10   -10     0     0     0     0     0    10    10    10    10    20    20    20    20    20     0    30    30    30    30\r\n   -20   -20   -10   -10   -10   -10     0     0     0     0     0     0     0    10    10    10     0    10    20    20     0    20    20    30     0\r\n     0   -20   -20   -20   -20   -10   -10     0   -10     0     0     0     0     0     0    10    10    10    10    10     0     0    20    20    30\r\n     0   -30   -20   -20   -20     0   -10   -10   -10   -10     0   -10     0     0     0     0    10     0    10    10    10     0    20    20    20\r\n     0   -30   -30     0   -20   -20   -20   -20   -10   -10   -10   -10   -10   -10     0     0     0     0    10    10    10    10    10    10    20\r\n     0     0   -30   -30   -30   -30   -20   -20   -20     0     0   -10   -10   -10   -10     0     0     0     0     0     0    10     0    10     0\r\n   -40   -40   -40   -30   -30   -30   -30   -30   -20   -20   -20   -20     0     0   -10   -10   -10     0     0     0     0     0     0     0    10\r\n   -40   -40     0   -40   -30   -30   -30     0   -30     0   -20   -20     0   -20   -10   -10   -10   -10   -10   -10     0     0     0     0     0\r\n   -50   -40     0   -40   -40     0   -30     0   -30   -30   -30   -20   -20   -20   -20   -20   -10   -10   -10   -10     0     0     0     0     0 ];\r\nassert(isequal(G,oide))\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":5,"created_by":17471,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":6,"test_suite_updated_at":"2020-10-27T17:24:12.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2013-12-01T13:26:51.000Z","updated_at":"2026-05-27T23:20:32.000Z","published_at":"2013-12-01T16:03:40.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\u003eFor large datasets this allows much faster plotting.\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\u003eAn irregular 2D spatial sampling is provided in x and y vectors with a data point to plot in vector d. A bin size is also provded in vector b=[dx,dy]\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\u003eReturn a 2D matrix M with minimal empty cells with the correct spatial relationship of d and last value only retained in the event of duplicates.\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\u003eExample\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ b = [6,9];\\n\\n x = rand(3333,1)*100*b(1)+1500;\\n\\n y = rand(3333,1)*100*b(2)+50000;\\n\\n d = sind(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eReturn G, a 2D matrix with d binned in rows and columns\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":1444,"title":"Dots in a Circle","description":"Return how many integer grid points there are inside a circle of radius _r_ centred at (0,0) (including points on the edge).\r\n\r\nNeither *string operations* nor *interpolations* are allowed!\r\n","description_html":"\u003cp\u003eReturn how many integer grid points there are inside a circle of radius \u003ci\u003er\u003c/i\u003e centred at (0,0) (including points on the edge).\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = dots_in_circle(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('dots_in_circle.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nn_correct = 1;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 1;\r\nn_correct = 5;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 2;\r\nn_correct = 13;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 3;\r\nn_correct = 29;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 4;\r\nn_correct = 49;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 5;\r\nn_correct = 81;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 7.5;\r\nn_correct = 177;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 10;\r\nn_correct = 317;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 20;\r\nn_correct = 1257;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 30;\r\nn_correct = 2821;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 40;\r\nn_correct = 5025;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 50;\r\nn_correct = 7845;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 75;\r\nn_correct = 17665;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n\r\n%%\r\nr = 100;\r\nn_correct = 31417;\r\nassert(isequal(dots_in_circle(r),n_correct))\r\n","published":true,"deleted":false,"likes_count":5,"comments_count":5,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":101,"test_suite_updated_at":"2013-04-28T07:07:28.000Z","rescore_all_solutions":false,"group_id":20,"created_at":"2013-04-22T12:50:26.000Z","updated_at":"2026-04-17T13:45:03.000Z","published_at":"2013-04-22T12:50:26.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\u003eReturn how many integer grid points there are inside a circle of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0) (including points on the edge).\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1462,"title":"Dots in a Sphere","description":"Return how many integer grid points there are inside a 3D sphere of radius _r_ centred at (0,0,0) (including points on the edge).\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many integer grid points there are inside a 3D sphere of radius \u003ci\u003er\u003c/i\u003e centred at (0,0,0) (including points on the edge).\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = dots_in_sphere(r)\r\n   n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('dots_in_sphere.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nn_correct = 1;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 0.5;\r\nn_correct = 1;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 1;\r\nn_correct = 7;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 1.5;\r\nn_correct = 19;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 2;\r\nn_correct = 33;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 2.5;\r\nn_correct = 81;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 3;\r\nn_correct = 123;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 5;\r\nn_correct = 515;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 7.5;\r\nn_correct = 1791;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 10;\r\nn_correct = 4169;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 15;\r\nn_correct = 14147;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 20;\r\nn_correct = 33401;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 25;\r\nn_correct = 65267;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 50;\r\nn_correct = 523305;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n\r\n%%\r\nr = 100;\r\nn_correct = 4187857;\r\nassert(isequal(dots_in_sphere(r),n_correct));\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":66,"test_suite_updated_at":"2013-04-28T07:09:00.000Z","rescore_all_solutions":false,"group_id":20,"created_at":"2013-04-26T06:32:56.000Z","updated_at":"2026-04-17T13:38:44.000Z","published_at":"2013-04-26T06:41:52.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eReturn how many integer grid points there are inside a 3D sphere of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0,0) (including points on the edge).\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":45397,"title":"Assess the scatter of wind turbines in a field","description":"The renewable energy industry is on the rise in many countries--- and one of the key players is wind energy. \r\n\r\nIt is believed that the layout of a wind farm can influence its ability to harness energy. One assumption is that the more scattered the turbines are in the field, the higher the energy yield. Hence, we need to determine how many turbines in a wind farm are in a good position.\r\n\r\nYou are given the positions of 8 wind turbines in a field rendered as an 8-by-8 grid of cells. For this problem, a wind turbine is defined to be in a _good position_ if there are no other turbines in its immediate vicinity of adjacent cells in the grid. Otherwise, it is in a _bad position_. An illustration of these two cases is further explained in the figure below.\r\n\r\nAccess the figure here: \u003chttps://drive.google.com/open?id=19M-3AZ0aqmJs2vKL-EKoJ0z59RvURukg\u003e\r\n\r\nWrite a function that accepts a MATLAB variable, POS. You are ensured that POS is always a row vector of 8 elements, and each element satisfies 1 \u003c= POS(i) \u003c= 8. This vector represents the wind farm layout: POS(i) is the row position of the sole wind turbine in column _i_. Given the layout, output the number of wind turbines in _good position_.\r\n\r\nAs seen in the examples from the figure above, we have 4 turbines in _good position_ for POS = [8 1 6 3 6 7 3 4]; 6 turbines for POS = [3 1 5 2 8 7 4 6]; and, 2 turbines for POS = [4 5 7 7 3 2 6 8].","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 835.2px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 417.6px; transform-origin: 407px 417.6px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 20.8px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.4px; text-align: left; transform-origin: 384px 10.4px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eThe renewable energy industry is on the rise in many countries--- and one of the key players is wind energy.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 62.4px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.2px; text-align: left; transform-origin: 384px 31.2px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eIt is believed that the layout of a wind farm can influence its ability to harness energy. One assumption is that the more scattered the turbines are in the field, the higher the energy yield. Hence, we need to determine how many turbines in a wind farm are in a good position.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 62.4px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.2px; text-align: left; transform-origin: 384px 31.2px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eYou are given the positions of 8 wind turbines in a field rendered as an 8-by-8 grid of cells. For this problem, a wind turbine is defined to be in a\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003egood position\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e if there are no other turbines in its immediate vicinity of adjacent cells in the grid. Otherwise, it is in a\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003ebad position\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e. An illustration of these two cases is further explained in the figure below.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.8px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.4px; text-align: left; transform-origin: 384px 10.4px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 481px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 240.5px; text-align: left; transform-origin: 384px 240.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cimg class=\"imageNode\" width=\"593\" height=\"481\" style=\"vertical-align: middle;width: 593px;height: 481px\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 20.8px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.4px; text-align: left; transform-origin: 384px 10.4px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 62.4px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.2px; text-align: left; transform-origin: 384px 31.2px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eWrite a function that accepts a MATLAB variable, POS. You are ensured that POS is always a row vector of 8 elements, and each element satisfies 1 \u0026lt;= POS(i) \u0026lt;= 8. This vector represents the wind farm layout: POS(i) is the row position of the sole wind turbine in column \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003ei\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e. Given the layout, output the number of wind turbines in\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003egood position\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 41.6px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 20.8px; text-align: left; transform-origin: 384px 20.8px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eAs seen in the examples from the figure above, we have 4 turbines in \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003egood position\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e for POS = [8 1 6 3 6 7 3 4]; 6 turbines for POS = [3 1 5 2 8 7 4 6]; and, 2 turbines for POS = [4 5 7 7 3 2 6 8].\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function y = assess_windfarm(POS)\r\n  y = POS;\r\nend","test_suite":"%%\r\nassert(isequal(assess_windfarm([5 6 6 6 6 3 5 1]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 8 3 5 8 2 2 3]),5))\r\n%%\r\nassert(isequal(assess_windfarm([8 4 3 2 4 3 2 4]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 5 1 5 7 2 4 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 6 2 7 8 7 5]),5))\r\n%%\r\nassert(isequal(assess_windfarm([3 6 2 8 5 5 2 1]),4))\r\n%%\r\nassert(isequal(assess_windfarm([3 7 8 6 6 2 5 7]),4))\r\n%%\r\nassert(isequal(assess_windfarm([4 8 1 3 5 1 6 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([5 7 7 7 3 4 7 1]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 3 5 8 6 3 3 7]),6))\r\n%%\r\nassert(isequal(assess_windfarm([8 6 3 1 7 5 8 1]),8))\r\n%%\r\nassert(isequal(assess_windfarm([5 3 7 2 4 4 7 6]),4))\r\n%%\r\nassert(isequal(assess_windfarm([2 3 2 6 5 2 2 4]),1))\r\n%%\r\nassert(isequal(assess_windfarm([8 5 1 1 7 4 4 7]),4))\r\n%%\r\nassert(isequal(assess_windfarm([3 5 6 7 3 6 8 1]),5))\r\n%%\r\nassert(isequal(assess_windfarm([5 4 3 3 7 8 2 7]),2))\r\n%%\r\nassert(isequal(assess_windfarm([2 8 7 4 6 4 7 3]),6))\r\n%%\r\nassert(isequal(assess_windfarm([1 5 8 2 4 6 1 8]),8))\r\n%%\r\nassert(isequal(assess_windfarm([7 5 2 4 5 8 7 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([6 4 8 4 2 4 6 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([7 8 8 5 8 1 1 3]),3))\r\n%%\r\nassert(isequal(assess_windfarm([5 5 8 5 4 5 6 1]),2))\r\n%%\r\nassert(isequal(assess_windfarm([7 2 4 3 3 6 2 3]),3))\r\n%%\r\nassert(isequal(assess_windfarm([2 2 3 8 4 4 2 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([4 7 5 4 8 7 4 7]),4))\r\n%%\r\nassert(isequal(assess_windfarm([8 4 3 5 8 6 4 6]),6))\r\n%%\r\nassert(isequal(assess_windfarm([8 5 5 3 1 2 1 4]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 8 6 1 1 2 4 2]),5))\r\n%%\r\nassert(isequal(assess_windfarm([1 6 3 7 4 4 1 1]),4))\r\n%%\r\nassert(isequal(assess_windfarm([1 5 2 7 7 8 4 2]),5))\r\n%%\r\nassert(isequal(assess_windfarm([2 5 7 3 4 6 8 2]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 5 4 8 4 2 6 5]),3))\r\n%%\r\nassert(isequal(assess_windfarm([3 7 8 8 2 2 1 5]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 8 5 3 2 4 8]),6))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 7 1 6 8 3 2]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 8 5 8 2 7 3 4]),6))\r\n%%\r\nassert(isequal(assess_windfarm([2 7 5 6 7 1 8 4]),5))\r\n%%\r\nassert(isequal(assess_windfarm([7 6 7 2 4 5 8 7]),1))\r\n%%\r\nassert(isequal(assess_windfarm([8 5 5 7 1 8 4 1]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 2 2 5 3 3 4 4]),2))\r\n%%\r\nassert(isequal(assess_windfarm([4 5 2 2 1 3 7 2]),3))\r\n%%\r\nassert(isequal(assess_windfarm([6 6 7 7 3 3 5 3]),2))\r\n%%\r\nassert(isequal(assess_windfarm([7 7 5 3 6 2 4 4]),4))\r\n%%\r\nassert(isequal(assess_windfarm([5 8 7 8 2 5 1 7]),5))\r\n%%\r\nassert(isequal(assess_windfarm([5 7 8 8 4 1 5 2]),5))\r\n%%\r\nassert(isequal(assess_windfarm([2 3 1 6 6 5 3 7]),3))\r\n%%\r\nassert(isequal(assess_windfarm([5 8 8 3 5 3 5 7]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 2 7 1 4 6 7 3]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 8 2 2 2 3 3 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 5 2 7 2 5 8 3]),8))\r\n%%\r\nassert(isequal(assess_windfarm([1 2 4 3 2 8 6 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([4 8 1 5 7 2 8 7]),6))\r\n%%\r\nassert(isequal(assess_windfarm([7 5 7 3 2 3 5 7]),5))\r\n%%\r\nassert(isequal(assess_windfarm([3 4 7 5 8 2 7 6]),4))\r\n%%\r\nassert(isequal(assess_windfarm([2 4 4 5 7 1 7 7]),3))\r\n%%\r\nassert(isequal(assess_windfarm([3 4 5 6 6 7 4 4]),0))\r\n%%\r\nassert(isequal(assess_windfarm([8 5 7 3 5 5 8 1]),6))\r\n%%\r\nassert(isequal(assess_windfarm([5 5 1 8 8 4 7 2]),4))\r\n%%\r\nassert(isequal(assess_windfarm([5 3 4 7 2 3 4 3]),2))\r\n%%\r\nassert(isequal(assess_windfarm([7 8 2 2 6 4 8 8]),2))\r\n%%\r\nassert(isequal(assess_windfarm([6 7 4 6 8 5 8 6]),6))\r\n%%\r\nassert(isequal(assess_windfarm([4 6 8 2 4 8 4 6]),8))\r\n%%\r\nassert(isequal(assess_windfarm([8 8 6 1 1 5 5 8]),2))\r\n%%\r\nassert(isequal(assess_windfarm([6 6 5 3 8 5 1 6]),5))\r\n%%\r\nassert(isequal(assess_windfarm([5 1 8 3 2 1 3 2]),3))\r\n%%\r\nassert(isequal(assess_windfarm([6 1 3 3 8 4 7 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([7 1 8 7 1 4 3 6]),4))\r\n%%\r\nassert(isequal(assess_windfarm([2 5 5 5 4 1 5 4]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 4 5 7 6 7 1]),2))\r\n%%\r\nassert(isequal(assess_windfarm([2 4 8 7 4 3 1 6]),4))\r\n%%\r\nassert(isequal(assess_windfarm([5 2 4 2 7 3 8 1]),8))\r\n%%\r\nassert(isequal(assess_windfarm([7 6 5 6 6 1 8 1]),3))\r\n%%\r\nassert(isequal(assess_windfarm([3 2 8 1 5 6 6 7]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 7 5 6 2 5 6 8]),4))\r\n%%\r\nassert(isequal(assess_windfarm([4 1 1 6 7 6 3 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([5 8 1 2 7 8 7 3]),3))\r\n%%\r\nassert(isequal(assess_windfarm([2 7 7 3 2 3 7 7]),1))\r\n%%\r\nassert(isequal(assess_windfarm([5 5 3 6 7 4 4 4]),1))\r\n%%\r\nassert(isequal(assess_windfarm([3 6 8 8 6 3 6 2]),6))\r\n%%\r\nassert(isequal(assess_windfarm([1 2 2 5 1 7 6 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([4 6 8 5 3 8 1 3]),8))\r\n%%\r\nassert(isequal(assess_windfarm([8 3 3 1 8 2 3 8]),4))\r\n%%\r\nassert(isequal(assess_windfarm([4 5 5 6 1 5 1 7]),4))\r\n%%\r\nassert(isequal(assess_windfarm([3 7 2 5 8 1 1 1]),5))\r\n%%\r\nassert(isequal(assess_windfarm([6 5 1 7 5 1 1 2]),3))\r\n%%\r\nassert(isequal(assess_windfarm([7 1 2 2 1 7 6 6]),1))\r\n%%\r\nassert(isequal(assess_windfarm([6 5 3 6 1 2 1 8]),3))\r\n%%\r\nassert(isequal(assess_windfarm([8 1 4 6 3 7 5 4]),6))\r\n%%\r\nassert(isequal(assess_windfarm([3 7 8 6 4 8 3 5]),6))\r\n%%\r\nassert(isequal(assess_windfarm([8 3 3 8 1 3 5 2]),6))\r\n%%\r\nassert(isequal(assess_windfarm([6 7 5 6 7 2 5 1]),3))\r\n%%\r\nassert(isequal(assess_windfarm([5 7 8 4 3 6 8 5]),4))\r\n%%\r\nassert(isequal(assess_windfarm([8 2 1 3 4 4 3 6]),2))\r\n%%\r\nassert(isequal(assess_windfarm([1 4 3 3 1 5 3 2]),3))\r\n%%\r\nassert(isequal(assess_windfarm([1 3 5 7 1 8 2 7]),8))\r\n%%\r\nassert(isequal(assess_windfarm([7 8 2 5 4 2 5 5]),2))\r\n%%\r\nassert(isequal(assess_windfarm([2 5 8 4 6 4 1 3]),8))\r\n%%\r\nassert(isequal(assess_windfarm([7 3 1 5 3 6 5 7]),6))\r\n%%\r\nassert(isequal(assess_windfarm([7 2 1 7 6 1 8 5]),4))\r\n%%\r\nassert(isequal(assess_windfarm([5 5 7 7 4 1 6 3]),4))\r\n%%\r\nassert(isequal(assess_windfarm([1 1 1 1 1 1 1 1]),0))\r\n%%\r\nassert(isequal(assess_windfarm([1 8 1 3 1 5 1 8]),8))\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":1,"created_by":255320,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":66,"test_suite_updated_at":"2020-03-29T00:40:23.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2020-03-28T23:55:35.000Z","updated_at":"2026-05-31T05:36:38.000Z","published_at":"2020-03-29T00:40:23.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe renewable energy industry is on the rise in many countries--- and one of the key players is wind energy.\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\u003eIt is believed that the layout of a wind farm can influence its ability to harness energy. One assumption is that the more scattered the turbines are in the field, the higher the energy yield. Hence, we need to determine how many turbines in a wind farm are in a good position.\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 given the positions of 8 wind turbines in a field rendered as an 8-by-8 grid of cells. For this problem, a wind turbine is defined to be in a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003egood position\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e if there are no other turbines in its immediate vicinity of adjacent cells in the grid. Otherwise, it is in a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ebad position\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. An illustration of these two cases is further explained in the figure below.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"481\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"593\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"middle\\\"/\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\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWrite a function that accepts a MATLAB variable, POS. You are ensured that POS is always a row vector of 8 elements, and each element satisfies 1 \u0026lt;= POS(i) \u0026lt;= 8. This vector represents the wind farm layout: POS(i) is the row position of the sole wind turbine in column \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ei\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. Given the layout, output the number of wind turbines in\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003egood position\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAs seen in the examples from the figure above, we have 4 turbines in \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003egood position\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e for POS = [8 1 6 3 6 7 3 4]; 6 turbines for POS = [3 1 5 2 8 7 4 6]; and, 2 turbines for POS = [4 5 7 7 3 2 6 8].\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":44066,"title":"Number of paths on a 3d grid","description":"This problem is inspired by \u003chttps://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003e, which you might want to solve first.\r\n\r\nConsider a 3d grid formed by n vertices vertically down, m vertices horizontally right, l vertices horizontally front. Your starting point is at the top left front vertex. Your destination is the bottom right back vertex. (From one corner to the furthest corner) You are permitted at each vertex to choose to move down,  right or back, that is in the direction towards the destination. You are not to move on what constitutes a back step like moving left, up, or front. If you hit the bottom boundary, right boundary, or back boundary, take it to be given that you move along the 2d boundary.\r\n\r\nEx: in a 2x2X2 grid there are 6 ways. (down, right, back), (d,b,r), (r,d,b), (r,b,d), (b,r,d), (b,d,r)\r\n\r\n4x3x2 has 60 ways\r\n\r\n6x5x4 has 27720 ways\r\n\r\nThis problem can be solved using dynamic programming but there are other methods too.\r\n\r\n","description_html":"\u003cp\u003eThis problem is inspired by \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\"\u003ehttps://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003c/a\u003e, which you might want to solve first.\u003c/p\u003e\u003cp\u003eConsider a 3d grid formed by n vertices vertically down, m vertices horizontally right, l vertices horizontally front. Your starting point is at the top left front vertex. Your destination is the bottom right back vertex. (From one corner to the furthest corner) You are permitted at each vertex to choose to move down,  right or back, that is in the direction towards the destination. You are not to move on what constitutes a back step like moving left, up, or front. If you hit the bottom boundary, right boundary, or back boundary, take it to be given that you move along the 2d boundary.\u003c/p\u003e\u003cp\u003eEx: in a 2x2X2 grid there are 6 ways. (down, right, back), (d,b,r), (r,d,b), (r,b,d), (b,r,d), (b,d,r)\u003c/p\u003e\u003cp\u003e4x3x2 has 60 ways\u003c/p\u003e\u003cp\u003e6x5x4 has 27720 ways\u003c/p\u003e\u003cp\u003eThis problem can be solved using dynamic programming but there are other methods too.\u003c/p\u003e","function_template":"function y = count3dPath(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nm = 2; n = 2 ; l = 5;\r\ny_correct = 30;\r\nassert(isequal(count3dPath(m,n,l),y_correct))\r\n \t\t\r\n%%\r\nm = 8; n = 5 ; l = 2;\r\ny_correct = 3960;\r\nassert(isequal(count3dPath(m,n,l),y_correct))\r\n\t\r\n%%\r\nm = 5; n = 5 ; l = 10;\r\ny_correct = 1701700;\r\nassert(isequal(count3dPath(m,n,l),y_correct))\r\n\t\r\n%%\r\nm = 8; n = 4 ; l=2;\r\ny_correct = 1320;\r\nassert(isequal(count3dPath(m,n,l),y_correct))\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":115733,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":54,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-02-14T00:01:08.000Z","updated_at":"2026-04-16T11:38:21.000Z","published_at":"2017-02-14T00:01:08.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is inspired by\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026lt;https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026gt;, which you might want to solve first.\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\u003eConsider a 3d grid formed by n vertices vertically down, m vertices horizontally right, l vertices horizontally front. Your starting point is at the top left front vertex. Your destination is the bottom right back vertex. (From one corner to the furthest corner) You are permitted at each vertex to choose to move down, right or back, that is in the direction towards the destination. You are not to move on what constitutes a back step like moving left, up, or front. If you hit the bottom boundary, right boundary, or back boundary, take it to be given that you move along the 2d 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEx: in a 2x2X2 grid there are 6 ways. (down, right, back), (d,b,r), (r,d,b), (r,b,d), (b,r,d), (b,d,r)\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\u003e4x3x2 has 60 ways\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\u003e6x5x4 has 27720 ways\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 problem can be solved using dynamic programming but there are other methods too.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44072,"title":"Number of paths on a n-dimensional grid","description":"This problem is inspired by \u003chttps://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003e and  \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\u003e, which you might want to solve first.\r\n \r\nConsider n-dimensional grid, and you are moving from one corner to the farthest corner in a minimal number of moves. Each move corresponds to moving to a neighbouring hypercube (among possible up to 2*n neighbours). How many ways are there?\r\n\r\nInput format is a row array of size \"d\" (for d dimension) with number of grid points on each direction.\r\n\r\nOptional: can you solve it without loops?","description_html":"\u003cp\u003eThis problem is inspired by \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\"\u003ehttps://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003c/a\u003e and  \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\"\u003ehttps://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\u003c/a\u003e, which you might want to solve first.\u003c/p\u003e\u003cp\u003eConsider n-dimensional grid, and you are moving from one corner to the farthest corner in a minimal number of moves. Each move corresponds to moving to a neighbouring hypercube (among possible up to 2*n neighbours). How many ways are there?\u003c/p\u003e\u003cp\u003eInput format is a row array of size \"d\" (for d dimension) with number of grid points on each direction.\u003c/p\u003e\u003cp\u003eOptional: can you solve it without loops?\u003c/p\u003e","function_template":"function y = countNdPath(NdRowVector)\r\n  y = sum(NdRowVector);\r\nend","test_suite":"%%\r\nNdRowVector = [3,3,3,3,3];\r\ny_correct = 113400;\r\nassert(isequal(countNdPath(NdRowVector),y_correct))\r\n\r\n%%\r\nNdRowVector = [1,3,3,3,3,1,1,1,3,3];\r\ny_correct = 7484400;\r\nassert(isequal(countNdPath(NdRowVector),y_correct))\r\n\r\n%%\r\nNdRowVector = [2,2,2,2,2,2,2,1,1,2,2,2,2];\r\ny_correct = 39916800;\r\nassert(isequal(countNdPath(NdRowVector),y_correct))","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":115733,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":51,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2017-02-14T01:28:35.000Z","updated_at":"2026-05-22T15:26:40.000Z","published_at":"2017-02-14T01:28:35.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is inspired by\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026lt;https://www.mathworks.com/matlabcentral/cody/problems/1483-number-of-paths-on-a-grid\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026gt; and \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026lt;https://www.mathworks.com/matlabcentral/cody/problems/44066-number-of-paths-on-a-3d-grid\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e\u0026gt;, which you might want to solve first.\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\u003eConsider n-dimensional grid, and you are moving from one corner to the farthest corner in a minimal number of moves. Each move corresponds to moving to a neighbouring hypercube (among possible up to 2*n neighbours). How many ways are there?\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\u003eInput format is a row array of size \\\"d\\\" (for d dimension) with number of grid points on each direction.\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\u003eOptional: can you solve it without loops?\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1490,"title":"Shifted Hexagonal Tiling Dots in a Circle","description":"Return how many \u003chttp://en.wikipedia.org/wiki/Hexagonal_grid Hexagonal Tiling\u003e grid points there are inside a circle of radius _r_ centred at (0,0) (including points on the edge).  Assume that a Hexagonal Tiling grid is a \u003chttp://en.wikipedia.org/wiki/Regular_tiling 2D Regular Hexagonal Tessellation\u003e with equal edges of size _e_=1.  \r\n\r\nFor _shifted_ symmetry purposes, assume that (0,0) is a _grid point_.\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many \u003ca href = \"http://en.wikipedia.org/wiki/Hexagonal_grid\"\u003eHexagonal Tiling\u003c/a\u003e grid points there are inside a circle of radius \u003ci\u003er\u003c/i\u003e centred at (0,0) (including points on the edge).  Assume that a Hexagonal Tiling grid is a \u003ca href = \"http://en.wikipedia.org/wiki/Regular_tiling\"\u003e2D Regular Hexagonal Tessellation\u003c/a\u003e with equal edges of size \u003ci\u003ee\u003c/i\u003e=1.\u003c/p\u003e\u003cp\u003eFor \u003ci\u003eshifted\u003c/i\u003e symmetry purposes, assume that (0,0) is a \u003ci\u003egrid point\u003c/i\u003e.\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = shifted_hexagonal_tiling_dots_in_circle(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('shifted_hexagonal_tiling_dots_in_circle.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nN_correct = 1;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 0.5;\r\nN_correct = 1;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 1;\r\nN_correct = 4;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 1.5;\r\nN_correct = 4;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 2;\r\nN_correct = 13;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 2.5;\r\nN_correct = 13;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 3;\r\nN_correct = 25;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 5;\r\nN_correct = 61;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 7.5;\r\nN_correct = 130;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 10;\r\nN_correct = 244;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 15;\r\nN_correct = 547;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 20;\r\nN_correct = 979;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 25;\r\nN_correct = 1510;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 50;\r\nN_correct = 6049;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 100;\r\nN_correct = 24202;\r\nassert(isequal(shifted_hexagonal_tiling_dots_in_circle(r),N_correct));\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":20,"created_at":"2013-05-05T11:12:35.000Z","updated_at":"2026-02-16T10:46:10.000Z","published_at":"2013-05-05T11:13:56.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\u003eReturn how many\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Hexagonal_grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHexagonal Tiling\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e grid points there are inside a circle of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0) (including points on the edge). Assume that a Hexagonal Tiling grid is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Regular_tiling\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e2D Regular Hexagonal Tessellation\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with equal edges of size\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ee\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e=1.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eshifted\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e symmetry purposes, assume that (0,0) is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003egrid point\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1459,"title":"Triangular Tiling Dots in a Circle","description":"Return how many \u003chttp://en.wikipedia.org/wiki/Triangular_tiling Triangular Tiling\u003e grid points there are inside a circle of radius _r_ centred at (0,0) (including points on the edge).  \r\n\r\nAssume that a Triangular Tiling grid is a \u003chttp://en.wikipedia.org/wiki/Bravais_lattice 2D Hexagonal Bravais lattice\u003e with | _a1_ | = | _a2_ | = 1 and _\u0026phi;_ = 120\u0026deg;.\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many \u003ca href = \"http://en.wikipedia.org/wiki/Triangular_tiling\"\u003eTriangular Tiling\u003c/a\u003e grid points there are inside a circle of radius \u003ci\u003er\u003c/i\u003e centred at (0,0) (including points on the edge).\u003c/p\u003e\u003cp\u003eAssume that a Triangular Tiling grid is a \u003ca href = \"http://en.wikipedia.org/wiki/Bravais_lattice\"\u003e2D Hexagonal Bravais lattice\u003c/a\u003e with | \u003ci\u003ea1\u003c/i\u003e | = | \u003ci\u003ea2\u003c/i\u003e | = 1 and \u003ci\u003e\u0026phi;\u003c/i\u003e = 120\u0026deg;.\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = hexagonal_dots_in_circle(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('hexagonal_dots_in_circle.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nn_correct = 1;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 0.5;\r\nn_correct = 1;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 1;\r\nn_correct = 7;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 1.5;\r\nn_correct = 7;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 2;\r\nn_correct = 19;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 2.5;\r\nn_correct = 19;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 3;\r\nn_correct = 37;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 5;\r\nn_correct = 91;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 7.5;\r\nn_correct = 199;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 10;\r\nn_correct = 367;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 15;\r\nn_correct = 823;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 20;\r\nn_correct = 1459;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 25;\r\nn_correct = 2263;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 50;\r\nn_correct = 9061;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n\r\n%%\r\nr = 100;\r\nn_correct = 36295;\r\nassert(isequal(hexagonal_dots_in_circle(r),n_correct));\r\n ","published":true,"deleted":false,"likes_count":0,"comments_count":1,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":33,"test_suite_updated_at":"2013-05-05T10:49:55.000Z","rescore_all_solutions":false,"group_id":20,"created_at":"2013-04-25T18:57:26.000Z","updated_at":"2026-05-22T14:31:55.000Z","published_at":"2013-04-25T18:57:26.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\u003eReturn how many\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Triangular_tiling\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eTriangular Tiling\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e grid points there are inside a circle of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0) (including points on the edge).\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\u003eAssume that a Triangular Tiling grid is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Bravais_lattice\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e2D Hexagonal Bravais lattice\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with |\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e | = |\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e | = 1 and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eφ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 120°.\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1489,"title":"Hexagonal Tiling Dots in a Circle","description":"Return how many \u003chttp://en.wikipedia.org/wiki/Hexagonal_grid Hexagonal Tiling\u003e grid points there are inside a circle of radius _r_ centred at (0,0) (including points on the edge).  Assume that a Hexagonal Tiling grid is a \u003chttp://en.wikipedia.org/wiki/Regular_tiling 2D Regular Hexagonal Tessellation\u003e with equal edges of size _e_=1.  \r\n\r\nFor symmetry purposes, assume that (0,0) point is a _vacancy_; i.e., there _are_ points at (\u0026plusmn;1,0), (\u0026plusmn;1/2,\u0026plusmn;\u0026radic;3/2), etcetera.\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many \u003ca href = \"http://en.wikipedia.org/wiki/Hexagonal_grid\"\u003eHexagonal Tiling\u003c/a\u003e grid points there are inside a circle of radius \u003ci\u003er\u003c/i\u003e centred at (0,0) (including points on the edge).  Assume that a Hexagonal Tiling grid is a \u003ca href = \"http://en.wikipedia.org/wiki/Regular_tiling\"\u003e2D Regular Hexagonal Tessellation\u003c/a\u003e with equal edges of size \u003ci\u003ee\u003c/i\u003e=1.\u003c/p\u003e\u003cp\u003eFor symmetry purposes, assume that (0,0) point is a \u003ci\u003evacancy\u003c/i\u003e; i.e., there \u003ci\u003eare\u003c/i\u003e points at (\u0026plusmn;1,0), (\u0026plusmn;1/2,\u0026plusmn;\u0026radic;3/2), etcetera.\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = hexagonal_tiling_dots_in_circle(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('hexagonal_tiling_dots_in_circle.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nN_correct = 0;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 0.5;\r\nN_correct = 0;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 1;\r\nN_correct = 6;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 1.5;\r\nN_correct = 6;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 2;\r\nN_correct = 12;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 2.5;\r\nN_correct = 12;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 3;\r\nN_correct = 24;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 5;\r\nN_correct = 60;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 7.5;\r\nN_correct = 138;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 10;\r\nN_correct = 246;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 15;\r\nN_correct = 552;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 20;\r\nN_correct = 960;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 25;\r\nN_correct = 1506;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 50;\r\nN_correct = 6024;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n\r\n%%\r\nr = 100;\r\nN_correct = 24186;\r\nassert(isequal(hexagonal_tiling_dots_in_circle(r),N_correct));\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":1,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":29,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":20,"created_at":"2013-05-05T10:39:46.000Z","updated_at":"2026-03-25T00:01:03.000Z","published_at":"2013-05-05T10:54:39.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eReturn how many\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Hexagonal_grid\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHexagonal Tiling\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e grid points there are inside a circle of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0) (including points on the edge). Assume that a Hexagonal Tiling grid is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Regular_tiling\\\"\u003e\u003cw:r\u003e\u003cw:t\u003e2D Regular Hexagonal Tessellation\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with equal edges of size\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ee\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e=1.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor symmetry purposes, assume that (0,0) point is a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003evacancy\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e; i.e., there\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eare\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e points at (±1,0), (±1/2,±√3/2), etcetera.\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":1493,"title":"Dots in a Diamond","description":"Return how many \u003chttp://en.wikipedia.org/wiki/Diamond_cubic Diamond Cubic\u003e lattice grid points there are inside a 3D sphere of radius _r_ centred at (0,0,0) (including points on the edge).  \r\n\r\nSet the distance between two adjacent lattice grid points to be _e_ =1. In addition, assume that (0,0,0) is a grid point.\r\n\r\nNeither *string operations* nor *interpolations* are allowed!","description_html":"\u003cp\u003eReturn how many \u003ca href = \"http://en.wikipedia.org/wiki/Diamond_cubic\"\u003eDiamond Cubic\u003c/a\u003e lattice grid points there are inside a 3D sphere of radius \u003ci\u003er\u003c/i\u003e centred at (0,0,0) (including points on the edge).\u003c/p\u003e\u003cp\u003eSet the distance between two adjacent lattice grid points to be \u003ci\u003ee\u003c/i\u003e =1. In addition, assume that (0,0,0) is a grid point.\u003c/p\u003e\u003cp\u003eNeither \u003cb\u003estring operations\u003c/b\u003e nor \u003cb\u003einterpolations\u003c/b\u003e are allowed!\u003c/p\u003e","function_template":"function n = dots_in_diamond(r)\r\n  n = r;\r\nend","test_suite":"%%\r\nuser_solution = fileread('dots_in_diamond.m');\r\nassert(isempty(strfind(user_solution,'regexp')));\r\nassert(isempty(strfind(user_solution,'2str')));\r\nassert(isempty(strfind(user_solution,'str2')));\r\nassert(isempty(strfind(user_solution,'interp')));\r\nassert(isempty(strfind(user_solution,'printf')));\r\nassert(isempty(strfind(user_solution,'assert')));\r\n\r\n%%\r\nr = 0;\r\nN_correct = 1;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 0.5;\r\nN_correct = 1;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 1;\r\nN_correct = 5;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 1.5;\r\nN_correct = 5;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 1.74;\r\nN_correct = 17;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 2;\r\nN_correct = 29;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 2.5;\r\nN_correct = 35;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 3;\r\nN_correct = 87;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 4;\r\nN_correct = 167;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 5;\r\nN_correct = 357;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 6;\r\nN_correct = 633;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 7;\r\nN_correct = 943;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 8;\r\nN_correct = 1371;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 9;\r\nN_correct = 1963;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 10;\r\nN_correct = 2809;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 12.5;\r\nN_correct = 5359;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 15;\r\nN_correct = 9249;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 17.5;\r\nN_correct = 14451;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 20;\r\nN_correct = 21777;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 22.5;\r\nN_correct = 31075;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n\r\n%%\r\nr = 25;\r\nN_correct = 42509;\r\nassert(isequal(dots_in_diamond(r),N_correct));\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":10352,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":25,"test_suite_updated_at":"2013-05-10T08:33:38.000Z","rescore_all_solutions":false,"group_id":20,"created_at":"2013-05-08T09:16:44.000Z","updated_at":"2026-04-24T02:54:04.000Z","published_at":"2013-05-08T09:58:42.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\u003eReturn how many\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://en.wikipedia.org/wiki/Diamond_cubic\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eDiamond Cubic\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e lattice grid points there are inside a 3D sphere of radius\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003er\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e centred at (0,0,0) (including points on the edge).\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\u003eSet the distance between two adjacent lattice grid points to be\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ee\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e =1. In addition, assume that (0,0,0) is a grid point.\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\u003eNeither\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estring operations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e nor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einterpolations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are allowed!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":2617,"title":"Yet Another Path Finder","description":"Assume there is a rectangular grid of points. These points are indicated by linear indices in a MATLAB-fashion. Some of the grid points are connected by vertical or horizontal lines. Your task is to find a path through the points which are not connected or touched by any line starting from the top left to the bottom right corner. One additional difficulty is that you can not move diagonally. That means the valid paths should only contain horizontal and vertical moves. There exists only one unique path. You cannot go through a particular path more than once.\r\n\r\nA matrix M of size N-by-2 will be given containing the grid information. Each row of M indicates two grid points which are connected by a line. Return a vector containing the linear indices of points in the grid that forms a valid path. The second (r) and third (c) input indicates the row and column size of the grid.\r\n\r\nExample:\r\n\r\n  M =\r\n   \r\n  [2 3\r\n   3 6\r\n   7 10\r\n   10 11]\r\n  r = 3\r\n  c = 4\r\n\r\nGrid points 2-3, 3-6, 7-10 and 10-11 are connected by lines. Thus the only path though which you can navigate is that formed by grid points 1,4,5,8,9 and 12. Thus return [1 4 5 8 9 12]\r\n\r\n\r\n","description_html":"\u003cp\u003eAssume there is a rectangular grid of points. These points are indicated by linear indices in a MATLAB-fashion. Some of the grid points are connected by vertical or horizontal lines. Your task is to find a path through the points which are not connected or touched by any line starting from the top left to the bottom right corner. One additional difficulty is that you can not move diagonally. That means the valid paths should only contain horizontal and vertical moves. There exists only one unique path. You cannot go through a particular path more than once.\u003c/p\u003e\u003cp\u003eA matrix M of size N-by-2 will be given containing the grid information. Each row of M indicates two grid points which are connected by a line. Return a vector containing the linear indices of points in the grid that forms a valid path. The second (r) and third (c) input indicates the row and column size of the grid.\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eM =\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003e[2 3\r\n 3 6\r\n 7 10\r\n 10 11]\r\nr = 3\r\nc = 4\r\n\u003c/pre\u003e\u003cp\u003eGrid points 2-3, 3-6, 7-10 and 10-11 are connected by lines. Thus the only path though which you can navigate is that formed by grid points 1,4,5,8,9 and 12. Thus return [1 4 5 8 9 12]\u003c/p\u003e","function_template":"function y = pathFinder(x)\r\n\r\nend","test_suite":"%%\r\nM = [2 3\r\n     3 6\r\n     7 10\r\n     10 11];\r\nr = 3;\r\nc = 4;\r\ny_correct = [1 4 5 8 9 12];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n\r\n%%\r\nM = [4 5];\r\nr = 3;\r\nc = 3;\r\ny_correct = [1 2 3 6 9];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n%%\r\nM = [2 5];\r\nr = 3;\r\nc = 3;\r\ny_correct = [1 4 7 8 9];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n%%\r\nM = [2 3\r\n     5 10\r\n     12 13\r\n     13 18\r\n     18 19];\r\nr = 5;\r\nc = 4;\r\ny_correct = [1 6 7 8 9 14 15 20];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n%%\r\nM = [ ];\r\nr = 1;\r\nc = 1000;\r\ny_correct = 1:1000;\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n%%\r\nM = [7 8\r\n     9 10\r\n     10 11];\r\nr = 6;\r\nc = 2;\r\ny_correct = [1:6 12];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n%%\r\nM = [2 3\r\n     4 5\r\n     5 10\r\n     10 15\r\n     15 14\r\n     13 14\r\n     11 16\r\n     16 21\r\n     23 24];\r\nr = 5;\r\nc = 5;\r\ny_correct = [1 6 7 12 17 18 19 20 25];\r\nassert(isequal(pathFinder(M,r,c),y_correct))\r\n\r\n\r\n\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":17203,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":32,"test_suite_updated_at":"2014-10-06T07:21:26.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2014-10-05T05:18:09.000Z","updated_at":"2025-11-24T15:30:37.000Z","published_at":"2014-10-05T05:18:09.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\u003eAssume there is a rectangular grid of points. These points are indicated by linear indices in a MATLAB-fashion. Some of the grid points are connected by vertical or horizontal lines. Your task is to find a path through the points which are not connected or touched by any line starting from the top left to the bottom right corner. One additional difficulty is that you can not move diagonally. That means the valid paths should only contain horizontal and vertical moves. There exists only one unique path. You cannot go through a particular path more than once.\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\u003eA matrix M of size N-by-2 will be given containing the grid information. Each row of M indicates two grid points which are connected by a line. Return a vector containing the linear indices of points in the grid that forms a valid path. The second (r) and third (c) input indicates the row and column size of the grid.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[M =\\n\\n[2 3\\n 3 6\\n 7 10\\n 10 11]\\nr = 3\\nc = 4]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGrid points 2-3, 3-6, 7-10 and 10-11 are connected by lines. Thus the only path though which you can navigate is that formed by grid points 1,4,5,8,9 and 12. Thus return [1 4 5 8 9 12]\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\"}]}"}],"errors":[],"facets":[[{"value":"Computational Geometry II","count":6,"selected":false},{"value":"Combinatorics II","count":3,"selected":false},{"value":"Chemical Engineering Problems I","count":1,"selected":false}],[{"value":"medium","count":8,"selected":false},{"value":"hard","count":3,"selected":false}]],"term":"tag:\"grid\"","page":1,"per_page":50,"sort":"map(difficulty_value,0,0,999) asc"}}