{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2025-12-14T01:33:56.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2025-12-14T00:00:00.000Z","image_id":null,"published":true,"community_created":false,"status_id":2,"is_default_group_for_player":false,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"description_opc":null,"description_html":null,"published_at":null},"problems":[{"id":1506,"title":"Maximum Intra-Vector Swaps","description":"This Challenge, based upon a contest in which Rokicki came in 2nd, is to find sequences containing 1:N that require maximum iterations prior to the value 1 appearing in the first position.\r\n\r\nThe processing rule is that positions 1 thru Vector(1) are swapped. Processing stops when Vector(1) is 1.\r\n\r\n*Example Sequences:* \r\n\r\n  [3 1 2], [2 1 3], [1 2 3] Score 2\r\n  [3 1 4 5 2][4 1 3 5 2][5 3 1 4 2][2 4 1 3 5][4 2 1 3 5][3 1 2 4 5][2 1 3 4 5][1 2 3 4 5]\r\n\r\n\r\n*Input:* n  (Integer from 1 to 31) (16 Actual Cases 2:11 13 17 19 23 29 31) \r\n\r\n*Output:* Vector of values 1:n\r\n\r\nExample:\r\n\r\nInput: 5  Output: [3 1 4 5 2]  \r\n\r\nScore: 7  \r\n\r\nA minimum cumulative score of 531 for the 17 cases is required to Pass.\r\n\r\nFinal Score = 2531 - sum(scores)\r\n\r\n*Hints:*\r\n\r\nUsage of perms for 10 or higher may cause Cody Memory/Time issues. Random subsets are suggested for n\u003e9.\r\n\r\nRequest: If Code is implemented external then please post as a block comment.\r\n\r\nFaster Code Block than fliplr:\r\n\r\n  function count=process_seq(seq)\r\n   count=0;\r\n   while seq(1)\u003e1\r\n    count=count+1;\r\n    seq(1:seq(1))=seq(seq(1):-1:1);\r\n   end\r\n  end","description_html":"\u003cp\u003eThis Challenge, based upon a contest in which Rokicki came in 2nd, is to find sequences containing 1:N that require maximum iterations prior to the value 1 appearing in the first position.\u003c/p\u003e\u003cp\u003eThe processing rule is that positions 1 thru Vector(1) are swapped. Processing stops when Vector(1) is 1.\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample Sequences:\u003c/b\u003e\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e[3 1 2], [2 1 3], [1 2 3] Score 2\r\n[3 1 4 5 2][4 1 3 5 2][5 3 1 4 2][2 4 1 3 5][4 2 1 3 5][3 1 2 4 5][2 1 3 4 5][1 2 3 4 5]\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e n  (Integer from 1 to 31) (16 Actual Cases 2:11 13 17 19 23 29 31)\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e Vector of values 1:n\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cp\u003eInput: 5  Output: [3 1 4 5 2]\u003c/p\u003e\u003cp\u003eScore: 7\u003c/p\u003e\u003cp\u003eA minimum cumulative score of 531 for the 17 cases is required to Pass.\u003c/p\u003e\u003cp\u003eFinal Score = 2531 - sum(scores)\u003c/p\u003e\u003cp\u003e\u003cb\u003eHints:\u003c/b\u003e\u003c/p\u003e\u003cp\u003eUsage of perms for 10 or higher may cause Cody Memory/Time issues. Random subsets are suggested for n\u003e9.\u003c/p\u003e\u003cp\u003eRequest: If Code is implemented external then please post as a block comment.\u003c/p\u003e\u003cp\u003eFaster Code Block than fliplr:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003efunction count=process_seq(seq)\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nend\r\n\u003c/pre\u003e","function_template":"function max_seq=find_max_swap_seq(n)\r\n max_seq=1:n;\r\n count=process_seq(max_seq);\r\nend\r\n\r\n% Suggested function for sequence performance evaluation\r\nfunction count=process_seq(seq)\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nend","test_suite":"tic\r\nfeval(@assignin,'caller','score',2000);\r\n%%\r\n% 2 1\r\nglobal cseq\r\ncseq{1}=1; % Gift answer\r\nmax_seq=find_max_swap_seq(2);\r\nassert(isequal(1:2,unique(max_seq)))\r\ncseq{2}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 3 2\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(3);\r\nassert(isequal(1:3,unique(max_seq)))\r\ncseq{3}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 4 4\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(4);\r\nassert(isequal(1:4,unique(max_seq)))\r\ncseq{4}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 5 7\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(5);\r\nassert(isequal(1:5,unique(max_seq)))\r\ncseq{5}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 6 10\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(6);\r\nassert(isequal(1:6,unique(max_seq)))\r\ncseq{6}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 7 16\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(7);\r\nassert(isequal(1:7,unique(max_seq)))\r\ncseq{7}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 8 22\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(8);\r\nassert(isequal(1:8,unique(max_seq)))\r\ncseq{8}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 9 30\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(9);\r\nassert(isequal(1:9,unique(max_seq)))\r\ncseq{9}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%10 38\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(10);\r\nassert(isequal(1:10,unique(max_seq)))\r\ncseq{10}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%11 51\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(11);\r\nassert(isequal(1:11,unique(max_seq)))\r\ncseq{11}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%13 80 case 12\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(13);\r\nassert(isequal(1:13,unique(max_seq)))\r\ncseq{12}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%17 159 case 13\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(17);\r\nassert(isequal(1:17,unique(max_seq)))\r\ncseq{13}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%19 221 case 14\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(19);\r\nassert(isequal(1:19,unique(max_seq)))\r\ncseq{14}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%23 382 case 15\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(23);\r\nassert(isequal(1:23,unique(max_seq)))\r\ncseq{15}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%29 689 case 16\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(29);\r\nassert(isequal(1:29,unique(max_seq)))\r\ncseq{16}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%31 819 case 17\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(31);\r\nassert(isequal(1:31,unique(max_seq)))\r\ncseq{17}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\ntoc\r\n%%\r\nglobal cseq\r\ntotal=0;\r\nfor i=2:17\r\n seq=cseq{i};\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\n total=total+count;\r\nend\r\n\r\n% 2531 is optimal sum\r\ntotal=sum([0 1 2 4 7 10 16 22 30 38 51 80 159 221 382 689 819])-total;\r\nassert(total\u003c2001); % Minimum performance requirement\r\n\r\ntoc\r\nfeval(@assignin,'caller','score',min(2000,total));\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":8,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-05-13T01:28:12.000Z","updated_at":"2026-04-01T14:34:03.000Z","published_at":"2013-05-13T04:01: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\u003eThis Challenge, based upon a contest in which Rokicki came in 2nd, is to find sequences containing 1:N that require maximum iterations prior to the value 1 appearing in the first 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe processing rule is that positions 1 thru Vector(1) are swapped. Processing stops when Vector(1) is 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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExample Sequences:\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[[3 1 2], [2 1 3], [1 2 3] Score 2\\n[3 1 4 5 2][4 1 3 5 2][5 3 1 4 2][2 4 1 3 5][4 2 1 3 5][3 1 2 4 5][2 1 3 4 5][1 2 3 4 5]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e n (Integer from 1 to 31) (16 Actual Cases 2:11 13 17 19 23 29 31)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Vector of values 1:n\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInput: 5 Output: [3 1 4 5 2]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eScore: 7\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 minimum cumulative score of 531 for the 17 cases is required to Pass.\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\u003eFinal Score = 2531 - sum(scores)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHints:\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\u003eUsage of perms for 10 or higher may cause Cody Memory/Time issues. Random subsets are suggested for n\u0026gt;9.\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\u003eRequest: If Code is implemented external then please post as a block comment.\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\u003eFaster Code Block than fliplr:\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[function count=process_seq(seq)\\n count=0;\\n while seq(1)\u003e1\\n  count=count+1;\\n  seq(1:seq(1))=seq(seq(1):-1:1);\\n end\\nend]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":52338,"title":"ICFP2021 Hole-In-Wall: Solve Score=0, where number Hole Vertices = Figure Vertices","description":"The ICFP held its annual 3-day contest in July 2021 with Hole-In-Wall. Contest Specification.\r\nThe contest folds the figure in Red to fit within the hole shown in light grey \r\nThis Challenge is to solve ICFP problems 11, 13, 16, 17, 18, and 23 according to the Specification when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths.\r\nValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u003c= epsilon/1000000.  Lsqr is length squared.\r\nScore is sum of minimum square distances to the figure from each unique hole vertex. \r\nnpxy=Solve_nPeqnH(hxy, pxy, mseg, epsilon)  \r\nThis challenge set all have optimal Scores of zero. The npxy vertices set must be a permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH.\r\nThe function template includes routines to read ICFP problem files and to write ICFP solution files.\r\nThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use Register Team. Anyone can select Problems Page and then click problem numbers to see the puzzles and to download problem files.","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: 745px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 372.5px; transform-origin: 407px 372.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 14px 7.91667px; transform-origin: 14px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.icfpconference.org/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eICFP\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 146.65px 7.91667px; transform-origin: 146.65px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e held its annual 3-day contest in July 2021 with \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eHole-In-Wall\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 29.95px 7.91667px; transform-origin: 29.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Contest \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 295px; 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 147.5px; text-align: left; transform-origin: 384px 147.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: 230.267px 7.91667px; transform-origin: 230.267px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe contest folds the figure in Red to fit within the hole shown in light grey \u003c/span\u003e\u003c/span\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: middle;width: 223px;height: 295px\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\" width=\"223\" height=\"295\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 126px; 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 63px; text-align: left; transform-origin: 384px 63px; 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: 263.2px 7.91667px; transform-origin: 263.2px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to solve ICFP problems 11, 13, 16, 17, 18, and 23 according to the \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 66.1333px 7.91667px; transform-origin: 66.1333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths.\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: 384px 7.91667px; transform-origin: 384px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/52308\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eScore\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250.1px 7.91667px; transform-origin: 250.1px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e is sum of minimum square distances to the figure from each unique hole vertex. \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 151.6px 7.91667px; transform-origin: 151.6px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003enpxy=Solve_nPeqnH(hxy, pxy, mseg, epsilon)\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: 3.88333px 7.91667px; transform-origin: 3.88333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e  \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: 367.567px 7.91667px; transform-origin: 367.567px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis challenge set all have optimal Scores of zero. The npxy vertices set must be a permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH.\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: 303.4px 7.91667px; transform-origin: 303.4px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; 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 42px; text-align: left; transform-origin: 384px 42px; 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: 375.883px 7.91667px; transform-origin: 375.883px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/register\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eRegister Team\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42.7833px 7.91667px; transform-origin: 42.7833px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Anyone can select \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/problems\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblems Page\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 256.35px 7.91667px; transform-origin: 256.35px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e and then click problem numbers to see the puzzles and to download problem files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function npxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon)\r\n% hxy hole vertices in order of connection. Last row repeats first for use in inpolygon\r\n% pxy figure original vertices used for initial segment length calculations\r\n% mseg is paired list of connected vertices\r\n% epsilon is allowed stretchiness of segment. hxy,pxy,npxy are all integer\r\n% Output: npxy is figure final vertices\r\n nseg=size(mseg,1);\r\n %hplot(hxy,pxy,mseg,nseg,1);\r\n \r\n npxy=hxy(1:end-1,:);\r\n msegMM=calc_msegMM(pxy,mseg,epsilon,nseg)\r\n %hplot3(hxy,npxy,mseg,nseg,3,segMM);\r\n \r\nend % Solve_nPeqnH(hxy,pxy,mseg,epsilon)\r\n\r\nfunction msegMM=calc_msegMM(pxy,mseg,epsilon,nseg)\r\n%determine Min and Max integer value of allowed length squared for each segment\r\n%abs(Lsqr(npxy,seg(i))/Lsqr(pxy,seg(i))-1)\u003c= epsilon/1000000.\r\n%mseg has indices of connected vertices [nseg,2].  The nseg may exceed number of vertices.\r\n msegMM=zeros(nseg,2);\r\n for i=1:nseg\r\n  Lseg=sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n  delta=floor(epsilon*Lseg/1000000);\r\n  msegMM(i,:)=[-delta delta]+Lseg;\r\n end\r\nend % calc_msegMM\r\n\r\n\r\n%These routines can be used to read ICFP problems, write ICFP text file, and visualize the data\r\n\r\n% function [epsilon,hxy,pxy,mseg]=read_problem(pid)\r\n%  fid=fopen([num2str(pid) '.problem'],'r');\r\n%   pstr=fgetl(fid);\r\n%  fclose(fid)\r\n%  \r\n%  Lpstr=length(pstr);\r\n%  holidx=findstr('\"hole\":[[',pstr); %starting location match\r\n%  epsidx=findstr('\"epsilon\":',pstr);\r\n%  figidx=findstr(',\"figure\"',pstr);\r\n%  edgidx=findstr('\"edges\":[[',pstr);\r\n%  veridx=findstr('\"vertices\":[[',pstr);\r\n%  epsilon=str2num(pstr(epsidx+10:figidx-1));\r\n%  \r\n%  hxy=reshape(str2num(pstr(holidx+8:epsidx-3)),2,[])';\r\n%  hxy=[hxy;hxy(1,:)]; %repeat row1 to close path\r\n%  \r\n%  pxy=reshape(str2num(pstr(veridx+12:Lpstr-3)),2,[])';\r\n%  \r\n%  mseg=reshape(str2num(pstr(edgidx+9:veridx-3)),2,[])'+1;\r\n% end % read_problem\r\n\r\n% function write_submission(npxy,pid)\r\n%  fname=['Solution_' num2str(pid) '_' datestr(now,'yyyymmdd_HHMMSS') '.txt'];\r\n%  fid=fopen(fname,'wt'); % t for notepad editing\r\n%  \r\n%  %Create ICFP submission\r\n%  fprintf('{\"vertices\": [');\r\n%  fprintf(fid,'{\"vertices\": [');\r\n%  for i=1:size(npxy,1)-1 \r\n%   fprintf('[%i,%i],',npxy(i,:));\r\n%   fprintf(fid,'[%i,%i],',npxy(i,:));\r\n%  end \r\n%  fprintf('[%i,%i]]}\\n',npxy(end,:));\r\n%  fprintf(fid,'[%i,%i]]}\\n',npxy(end,:));\r\n%  fclose(fid);\r\n% end\r\n\r\n\r\n% function hplot(vxy,qxy,mseg,Lmseg,id)\r\n% %Need check of segment crossing a hole segment but ignore endpoint\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1)%length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i),'FontSize',12);\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    if in(mseg(i,1))+in(mseg(i,2))\u003c2\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment to OOB pt\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-')\r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%    \r\n%   axis tight\r\n%   axis ij\r\n%   hold off  \r\n% end % hplot\r\n\r\n% function hplot3(vxy,qxy,mseg,Lmseg,id,segMM)\r\n%  segMNM=[segMM(:,1) segMM(:,1)+segMM(:,2) segMM(:,2)];\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1) %length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i));\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    d2seg=(qxy(mseg(i,1),1)-qxy(mseg(i,2),1))^2+(qxy(mseg(i,1),2)-qxy(mseg(i,2),2))^2;\r\n%    if d2seg\u003csegMNM(i,1)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-') % segment too short\r\n%    elseif d2seg\u003esegMNM(i,3)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment too long\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'g-') \r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%   \r\n%   axis tight\r\n%   axis ij\r\n%   hold off\r\n% end % hplot3","test_suite":"%%\r\n% ICFP Problem Id 11\r\nepsilon=0;\r\nhxy=[10 0;10 10;0 10;10 0];\r\npxy=[0 0;10 0;10 10];\r\nmseg=[1 2;2 3;3 1];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 13\r\nepsilon=2494;\r\nhxy=[20 0;40 20;20 40;0 20;20 0];\r\npxy=[15 21;34 0;0 45;19 24];\r\nmseg=[1 2;1 3;2 4;3 4];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 16\r\nepsilon=8897;\r\nhxy=[0 7;22 0;36 19;22 38;0 31;0 7];\r\npxy=[8 6;26 22;21 25;19 0;0 14];\r\nmseg=[1 2;1 3;2 4;3 5;4 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 17\r\nepsilon=11966;\r\nhxy=[0 31;18 0;48 18;30 48;0 65;0 31];\r\npxy=[27 36;0 57;28 0;32 70;29 35];\r\nmseg=[1 2;1 3;1 4;2 4;3 5;4 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 18\r\nepsilon=6731;\r\nhxy=[34 0;17 30;10 62;13 30;0 0;34 0];\r\npxy=[0 0;0 34;17 62;30 17;45 46];\r\nmseg=[1 2;1 4;2 3;2 4;3 5;4 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 22\r\nepsilon=30202;\r\nhxy=[30 0;64 1;94 18;64 35;29 35;0 18;30 0];\r\npxy=[29 67;32 34;0 47;32 34;26 0;0 22];\r\nmseg=[1 2;1 3;2 3;2 5;3 4;4 5;4 6;5 6];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 23\r\nepsilon=8317;\r\nhxy=[0 0;30 17;60 41;41 72;10 69;0 34;0 0];\r\npxy=[0 0;0 34;10 69;30 17;39 80;54 47];\r\nmseg=[1 2;1 4;2 3;2 4;3 5;4 6;5 6];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":2,"test_suite_updated_at":"2021-07-20T23:17:27.000Z","rescore_all_solutions":true,"group_id":1,"created_at":"2021-07-20T13:12:58.000Z","updated_at":"2021-07-20T23:17:27.000Z","published_at":"2021-07-20T14:53:37.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.icfpconference.org/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eICFP\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e held its annual 3-day contest in July 2021 with \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHole-In-Wall\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Contest \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe contest folds the figure in Red to fit within the hole shown in light grey \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"295\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"223\\\"/\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\u003eThis Challenge is to solve ICFP problems 11, 13, 16, 17, 18, and 23 according to the \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths.\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\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/52308\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eScore\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is sum of minimum square distances to the figure from each unique hole vertex. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enpxy=Solve_nPeqnH(hxy, pxy, mseg, epsilon)\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\u003eThis challenge set all have optimal Scores of zero. The npxy vertices set must be a permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/register\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eRegister Team\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Anyone can select \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/problems\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblems Page\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and then click problem numbers to see the puzzles and to download problem files.\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,iVBORw0KGgoAAAANSUhEUgAAAb4AAAJNCAYAAABOYxDDAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAHX8SURBVHhe7d1nYBTVGgbgKNWOiqJgV+yiKIq9i2LDhiKKBRQbghVFvSIqkJCQRhq99957Db136b13QgkQyHfPWQQ3m5dksju7O+X98fy418yZ2Zk552X3zJwvomnj/wkREZFbMPiIiMhVGHxEROQqDD4iInIVBh8REbkKg4+IiFyFwUdERK7C4CMiIldh8BERkasw+IiIyFUYfERE5CoMPiIichUGHxERuQqDj4iIXIXBR0RErsLgIyIiV2HwERGRqzD4iIjIVRh8RETkKgw+IiJyFQYfERG5CoOPiIhchcFHRESuwuAjIiJXYfAREZGrMPiIiMhVGHxEROQqDD4iInIVBh8REbkKg4+IiFyFwUdERK7C4CMiIlexXPC1+bq2rLjtZtlz6SWytUxpGflqZfh3RERE/rBU8KU/9bhIREQuGRdeKG3qfg63ISIiKgjLBF+/6lUl+6yzYPBp+r/Nr1BeEht8C7cnIiIywjLBt/amG2Dg+cosXlzGP/+0RDdqANshIiLKi2WCb3+Ji2DQncmBUpfLtK8/k57d2hIRhVxCbFM4lpH1WSb4dpe8BAZcfo5UKC9bB3SX9asXEBGFxOzpYyUxPhKOZWR9lgm+dTdcB4PNqINvviqbpoyCNykRkZl692gPxzGyB8sE3/Lbb4GBVhDZxYrJvnqfy4alM+HNSkQUqMkTh0l0ZCM4jpE9OCr4Tjl+RSnZ1ewveNMSEflr9fI50qVjGhzDyD4cGXynHH72SdmZFANvYCKigho7sj8cv8heHB18WnaxonLgnTdkW/d28EYmIjJiycKp0qZlAhy/yF4cH3ynHC99hez/8hPZMmoAvKmJiPIydFAPOHaR/dgq+Pb+UFeO3nk7/G9GHb3rdtnzv/qycc5EeHMTEfmaO3O8JCU2g2MX2Y+tgm/jvMmyZWR/2f9FLTl+5RXwb4w6/MSjsisuEt7kRETe+vbqCMctsidbBd/yqWNO34jburWVA2+/IdlFi8K/NeTss+XgG6/K9k4tc9zkRESnTE0fIc2b/QXHLbInWwXfhL5dct2UO1tEy+FnnoR/b9Txy0rK/k8/ki1De+dqn4jca+3KedKtcys4ZpF92Sr4uifFyLpV83PdnBvnT5E9jX6RI+XLwe2MOnbrzbL3529l0/SxufZBRO4zfvRAOF6Rvdkq+GL/96Nn1QR0g2qbxw2WfXU/l6xrroLbG5X5yIOyK/ovWa/+tYf2Q0TO98/i6dKudQs4XpG92S749Kro6Cb1tq13Jznw3tuSfd65sB2jDr5aWXa0S4b7ICJnGz6kFxyryP5sF3yxMX/LnBnj4I3qa0davBx64VnYllEnSpSQjI/eYwUIIheZP3uipCTFwLGK7M92waf/dlC/rvBmRTYsmSG7G/8uR+6/F7Zp1LEbr5e9338tm9JHwv0QkXP079M51xhFzmHL4NP/EluyYCq8Yc9k86QRsve7Op4AQ20bdeSB+2R3k4asAEHkUNOnjJK4mMa5xihyDlsGnzZqeF940+Zna/9ukvFRdTlRwIrvvg5Vfk52tEyA+yAi++rRtU2OsYmcx7bB175NkqxZMRfeuEbsaJskh16pDPdj1Inzz5MD778j2/p0gvsgInuZOHZwjnGJnMm2wadNGj8U3ryGqeDc1exPyXy4ItyfUVnXXi376n0hm8cPwfshIstbvnSmdGibnGOMIWeydfB179Ia3sAFtWnaGNn707dy7JaycL9GHSl/t+xu9ItsLOD8IxGF38hhfXKML+Rctg6+mKg/ZZYKLXQT+2PrkF6y/5MP5XjJS+H+jTr87FMsgEtkIwvnpktaSvMc4ws5l62DTxvQpzO8kQOxvWNLOfj6KyJnnwWPw4jsYsVYAJfIJgb265prbCHnsn3w6RpZi+ZNhjdzoHbFNZXMJx6Bx2JUFgvgElnazGljJCG2Sa6xhZzL9sGnjQhiVYWNsyfInt9+lKN33gaPyaj/CuBOgvshovDo1b0dHFfIuRwRfG1bJcrKZbPhTW0W0wrgPvmo7IxnAVwiK0gfP1SimjaE4wo5lyOCT5swdjC8sc12sgDu6yYVwG0F90FEwaf/sdypfQocT8jZHBN8XUNcRZ0FcInsbfSIfnAsIedzTPA1a/qHzJgyCt7gweIpgPtHAzlyjxkFcL9jAVyiEFms+m6rtDg4lpDzOSb4tL69OsKbPNg2j2UBXCI7GTygGxxDyB0cFXyJ8ZGyIIxPTW7r3dGkArgvsgAuUZDMnjFOWqixAo0h5A6OCj5t2OCe8GYPJVMK4F5cQjI+fk+2DmQBXCIz9enZHo4d5B6OC77WKnT0YrPohg8l0wrg3nQDC+ASmWTyxOESHdUIjh3kHo4LPm3c6IHwpg+HzZOGyz5dAPeG6+BnMuq/Ariz4H6IKG+rl8+VLh3T4JhB7uLI4OvcIRXe+OHkKYD7YXU5cREL4BKFw9hR/eF4Qe7jyOCLbPy7TEsfAW/+cNvRRhfAfQF+PqP+K4Br/gLdRE60dOE0adMqAY4X5D6ODD6td4/2sANYwnIWwCUKpaGDesBxgtzJscEXH9tE5s2aADuBVZwsgPtN4AVw771bdv/5q2xcyAK4RL7mzhwvyYnN4DhB7uTY4NOG2ORVANMK4D73lOxMZgFcIm/9eneE4wO5l6ODr2VKrPyzeDrsDFa0vWPayQK4ZwVaAPdNFsAlUqamj5Dm0X/B8YHcy9HBp40Z2R92CCvbFdtEMh8PtADulSyAS662duU86da5FRwXyN0cH3wd2yXLulXzYcewso2zJsieX80ogHsHC+CSK40fPRCOCUSODz5tysThsGPYwZaR/f4tgFsKnhOjWACX3GTZ4unSrk0LOB4QuSL4enZrCzuHnWw3owBuoUJy8M1XZXtnhxbAXTNXtmwYIDu2tpA9u+rLvj2fy/69NeVgxqs56P9P/7c9OxvI9q0psnkDXwdxmuFDesGxgEhzRfDFxvwtc2aMgx3Ebk4WwH0Cnh+jjl9eUvbX/ki2DOsD92EXm9cPl107/vKEWdaxq0V9OP9lF5Jjx673tKXb1G2jfZL1zZ89UVKTYuBYQKS5Ivi0Qf27wk5iR24ugLtlY1/Zv+9DycoqjQPMRHofGfvek60be8FjIWsa0KczHAOITnFN8Ol/AS5Z4KwXvD0FcL/+TLKuNqMA7t+WLYC7Yc1Mz8+SR4/cDgMqFI4evcXz8+nGtZPhMZI1TJ8ySuKaN4ZjANEprgk+bdTwvrCz2N22Xh3lQHXnFcDdtG6cCpsfVeDdCcMoHHQA7t39jWxazzJRVtSjaxvY94m8uSr42rdJkjUr5sIO4wQ70uJMKoD7flgL4G5YM11272gomYcfgOFjBUcyy8vunb/wG6CFTBw7WPXz33P1eyJfrgo+bdL4obDTOIWpBXB/+Fo2TQ7tN5ud26Pk8KEnYdhY0eFDj8qu7Y09T5Siz0OhsWLpTOnQNhn2eSJfrgu+7l1aw47jNKYVwK1YQXY3bSgb/gluAVz90ErmoUdguNhBZmYF2brJHmvDOtHIYX1gfydCXBd8Mc3+lFnTxsDO40Rb+3f9twDuhfCcGhXMAri7d/5Pso5dAwPFTrKyrpA9u36Cn5GCZ+HcdM+6vKi/EyGuCz5tQF/3FXD1FMB9OdACuOdLhokFcDesnSb79nwh2SfOhUFiR9nZhWX/3lqycR2XiAuVQf26wn5OdCauDL6kxGayaJ77HkrYsHyO7IrSBXAfgOfXqP8K4Po/X7p5w2A5sL8qDA8nOJhRRbZs7Ac/O5ln5rQxkhDbFPZzojNxZfBpI4b2hh3JDTZNDW8B3G2b28vhg0/BwHASPWe5fYtDl4eziF7d28H+TZQX1wZf21aJsmrZbNiZ3OJkAdwPTCqA2xzuw9fObdFy9MhdMCicSL/353nqE5wLCkz6+KES1fQP2L+J8uLa4NMmjB0MO5TbmFIAt3gxOVDtTdnW48wFcHdui5WsrDIwIJzs+PGSKvyawnNC/tH/aO3UPhX2a6L8uDr4unZqCTuVW5lWAPerT3MVwN22uZMcybwbBoMbHD1yK3/2NNHoEf1gnyYywtXB1yzyD5kxZRTsWG51sgDuD3L0DjMK4P7kKYC7ecNQOXTwGRgIbqJfducDL4FbPH+KtE6Lh32ayAhXB5/Wr1dH2Lncbov6F/X+z2vJ8SsCK4Cb+eTDktn2IRgEbnQw4zXZuJavOgRiyIDusC8TGeX64EuMj5QF6lsJ6mC0QLZ3bfNvAdwi8JoYUkj5SBmjgDBwG/2eHzrXlL/ZM8ZJi/go2JeJjHJ98GnDBveEnYz+Y0YBXLlSqa8sVEAguEV2dhGu8OKnPj07wD5MVBAMPkXPF+hFblFHo/9snD/53wK4d8HrY9jdSrSyVQHB4ArZhbi2ZwFNmThcoqMawT5MVBAMvn+NGz0QdjbKzawCuPKc0lE5oaBwcLhDB5+TDWvmwHNMOelyYl06toR9l6igGHz/6twhDXY4OrOTBXCrSva5gRXAlerKcAWEg9Pt2vEXPLeU09hRA2C/JfIHg+9fkU1+l2nprKrtjx2pcXLo+cAK4EpJ5RtltgICwqkyDz8sG9dNhOeVTlq6cJpnpSXUb4n8weDz0rtHe9jxKH8bFusCuP+TrAevgdfOsNuVJsoGBQSFE+3Z+TM8p3TSsEE9YX8l8heDz0t8bBOZN2sC7HyUv03rxsmRf+4R+Utdr1tyX78CeUJpoxxRQFg4iV7RZvP6YfCcut1c1R+TE5vB/krkLwafjyED+aSdv/bs+vG/AX2m8rVy8clr57eqykDFKyicaO/ur+E5dbt+vTvBfkoUCAafD13J+Z/F02EnpDPTRWX1YszqQuU0RKmmgOtp2IXKV8o0xbd9hzhx4gLZuNZ9NSLzoufcm0f/BfspUSAYfMCYkf1hR6Qz0/NU6iJhx5R2ytMKuK6G3aT8oaxW0H5sbu/uuvDcutG6VfOlW+dWsH8SBYrBB3Rsl+LpeKhDEnb40BNwMM9hsxKl3KmA62vYw0qKkqGg/dhU5uH7+V7fv8aPGQT7JpEZGHxnoFeJQB2Sctu2uZ1kZxeFgzk0T/leKaWA62zYa0ofBe3DpnZsTYLn2E2WLZ4h7du0gP2SyAwMvjPo2a0t7JSU2/69NeEgnq+RSg3lLAVcb0POUT5VJiloHzaTsb8aPMduMmJIL9gniczC4DuD2Ji/Zc6McbBjUk5HMsvDQdywLsrzCrjmhl2r/Kr8o6B92MTRo7fI+jVz4Xl2g/lzJklqUgzsk0RmYfDlYVD/rrBz0n90YdXs7GJwEC+QHUqscq8Crr1h9ysJym4F7ccGtm3qDM+1Gwzo2xn2RSIzMfjyoP/luWThVNhB6aRdO/6Gg7ffFis/K1cp4B4w7EWlu4L2YXF7djaA59rpZkwZLXHNG8O+SGQmBl8+Rg3vCzspnZSx7104eAdsvFJTKaqAe8GQwooNC+AezKgCz7XT9ejaBvZBIrMx+PLRvk2SpyQK6qi0wDMnpS5O8PRUXlHA/WBYacVGBXCzjl0Nz7WTTRw3WCIb/w77IJHZGHwGpI8fCjur662ZK8ezSsHB21R7lRZKRQXcF4bpArgxyjYF7cciTpw4TzauTcfn3IFWLJ0lHdslw75HFAwMPgO6d2kNO6zbbd4wBA7cQbNC+V25XgH3h2E2KIC7dVMPeM6daOSwPrDfEQULg8+AmGZ/yqxpY2CndbPtW1rBQTvoJiufK+cr4D4x7D3FogVwd26LhefcaRbOS/esj4v6HVGwMPgM0o9Zo47rZrp6uLow4dNPeUMB94phpwrgzlHQPsJkz6768Jw7jX5lCPU3omBi8Bmka4Itms/V873pwVldmPA6pLRUHlXAPWOYxQrg7tvzJTznTqJ/RUmIawr7G1EwMfgKYMTQ3rADu9W+PV/BQTss1ipmFMB9UrFAAdz9+z6E59xJenVvB/sZUbAx+AqgbatEWbVsNuzEbrR/70dw0A6rGYpZBXAHKWgfIXBg/1vwnDtF+oSh0qzpH7CfEQUbg6+AJowdDDuyGx3MeBUO2pZgRgHci5QwFcDV5xadcyfQ/3js3CEV9i+iUGDwFVDXTq1gZ3ajA/vfhoO2ZZhZALeREsICuAcPvAjPuROMGdEP9i2iUGHwFVCzyD88awqiDu02+/d+DAdty9mkRCpmFcA9oKD9mOjA/qrwnNvd4gVTpHVaPOxbRKHC4PNDv94dYad2m72768BB27JOFcC9XAH3l2EhKICr50/RObe7IQO7wz5FFEoMPj8kxkfKgrmTYMd2kz27foKDtuWZVQC3thKkArj6iVl0zu1M17dskRAF+xRRKDH4/DRscE/Yud1k1/YmcNC2jc6KGQVwf1OWKWgffnJiaaI+PTvAvkQUagw+P+l5ihVLZ8IO7hbbt7SFg7atnCqAW14B95xhJhfA3bE1AZ5zu5oyabjERP0J+xJRqDH4AjBu9EDYyd1i8/rhcNC2JbMK4L6kmFAAd8vGPvCc25Eu69W1U0vYh4jCgcEXgM4d0mBHd5OsrNJw4LatcYpZBXDHKmgf+Thx4iLZuNY5lf/HjhoA+w9RuDD4AhDZ5HeZlj4Sdna3OHrkdjh4214YC+AeO3Y9PNd2tHTRNM+KR6j/EIULgy9AfXq2hx3eLfbv/RAO3o5gVgHce5QCFMB10nJl+iEw1G+IwonBF6D42CYyb9YE2OndYOf2ZnDwdpTlyv8UswrgZitoP//avaMhPNd2o/tFcoto2G+IwonBZwL9Ui7q+G6gq7CfOHEhHMAd51QB3PMUcH8almcB3LNl6yZnvCrTr3cn2F+Iwo3BZwJdQXrZ4umw87vBkSPlwADuYGYVwP1W8SmAqx8WQufYbqZNHimx0X/D/kIUbgw+k4wZ2R8OAG6wd/c3OQZvV9AFcNMUswrgblRUu/v31oLn2E7WrZov3bu0hv2EyAoYfCbp2C7F0+HRQOB0+qe5E8cvzh0ObnCqAO7NCrhnDXsyQrLbnC071tn/FZnxYwbBPkJkFQw+E02ZOBwOBG6gy+ioi+ReJhXAPfRiJdnRKhGeYztYtmSGtG+TBPsHkVUw+EzUq3tbOBi4wc5tMTgQ3Gaw8o4C7l+jTlxwvmTUqCbb+naB59rKRgztDfsGkZUw+EwUG/O3zJkxHg4ITrdx3UTJPPwQDgO3OVUA9ykF3MdGZV13jez75kvZPGEoPOdWs2DOJElNbg77BpGVMPhMNqh/VzgouMGuHX/iIHArkwrgHrnvHtn912+yYdE0eN6tYoD6hor6BJHVMPhMlpoUI0sWOmedxYLYsGaWHDr4DA4BN5urfKcEWAD3cKWnZaf6RoXOfbjNmDpa4ps3hn2CyGoYfEEwanhfODi4gZ7ry84ujAPA7U4VwAX3tlHZxYvLgWpvybYe1loqr2e3trAvEFkRgy8I9FNtuhQLGiDc4GDGK3jgp5NMKICbVaa07PvqU9ligdJYE8cN8SzYjvoCkRUx+IIkfbw9HkgIhu1bU92zjJm/dqhvb80LSdZdZdT/VP/bT0fL3Sl7fv9JNs5Nh9ci2FYsnSUd2yXDPkBkVQy+IOnetQ0cKNwiY381PODTaQczqsiWEf1k/+c15fgVpdT/pf5/Px1+6jHZmRAFr0Uw6Z/10f1PZGUMviCJafanzJo2Fg4WbqCrsx8/XhIO+KS+7Z0417PA96nztV39Q+lA1dcku0gR9Z/V3/ghu3BhOfhWFdnepXWOaxEsi+ZNlpapsfD+J7IyBl8QDejbGQ4YbrFzW7RkZV0JB34308u77drxFz5nic3k8NOPqz9Tf+un46Uuk/2ffSxbhgX3IatB/bvB+57I6hh8QZSsBrFF8yfDQcNfG9bMlC0b+8qObfGyd9d3cmB/VTl44CXJzKzgkXXsas8K/7pigv7fhw8+JQczXpV9u+vIzu1RsnVTd9m41txjysuenT9LdnZRGAButXd3PXiuTtmovkntafizHL37LvXnahs/Hb3tFtnb4HvZNGMc3E8g9K8ZiXFN4X1PZHUMviDTSzihgcOoTetHy46t8bJvT23JPPSI+rZQAg6mBXX0yO2e0NRFT7duDG79N33s6BjcKGPf+7J+jbEnfjePGST76tSWrKsCewAm89GHZFdMY1lv4iLqvXu0g/c7kR0w+IKsbatEWbVsNhw8zmTj2nRPZfMDGa/L8awr4ABqtszDD6pvIt+qEOwFjykQG9dOUZ/lTbhfNzl04AX1D5lR8BzlZVvPDnKgelXJPvcc1Yxqy08Hq7wk29unwH0URPqEYdIs8g94vxPZAYMvBCaOHQwHEF+b1o2V/XtrqrArBQfOkMgu5Pl5dNsWcxfc3rxhkBw+9CTepwscyawgWzd1g+fGqJ2psXLo+WdUc6pNP5245GLJqFlDtg7qAfeRn1XL5kjnDqnwPieyCwZfCHTt1AoOIqfoUNi35ws5duw6OGiGy6EDlWXHVvNK5OhvO2580lM/wannZdE5KagNi6fL7r//J0cqlFdNq/b9dKzsjbL3x7qyaUrBvoGOGdkP3uNEdsLgCwH9s9CMKaNzDSKb1o2RPbu+98y3qQ9oSXrQPrD/Tdm+xZz3Erdt7uD5Ron25USZh+9X/3hIguciEJsnDpN9334lWddfq3aj9uWnzAfvl93q/tzwT/4/xy9ZMFVat4yH9ziRnTD4QqRf746nB5ANa6fJ7p2/ewZF9cFs4fjxyyRj3weep0K9B0N/bN4wWIXpW3A/TnJQfWPeusm/nxSN2tqvq2R88K6cuPACtUu1Xz8ZKYA7ZGB3eG8T2Q2DL0RaxEfKgrmTZNumznL0qPqsYKC0A/0N0PM4vsEnE89k49qpsm/PZ5KdXRzux+4y9tXwfKNHnz0YdrRuIYdeel7tWu3fTycuuMBTAHcrKIA7Z8Y4SUqIgvc2kd0w+EJo4riakpVVBg6UdnMw4zXZsrFfrgGyoPbsbOB57xDtw46OH7/U83Ts+tXmvTpg1IZlc2RXZCPJfOh+dSjqePz0XwHcYafb7tuzA7ynieyIwRcCkU3qS3zcY9K/fxHJzFSfBQyYdnT40KOyfUveD+4YoUsZHT1yF9yHnehv8ru2N4afMZQ2TR0te+vXk2M336QOSx2bn04VwJ0+sr9nCT50bxPZEYMvyJpFfimJCeWlZcsIj2XL1GcBg6ZdHT16qxrsm8ABuCD0qxz6hXr9OgXaj6WpY9ar4+j1SdFnC5etg3tKRq0acvzSS9RhquP000YVgP2qV4X3N5EdMfiCKKbZB5LUouzp0NNG6mKkaPC0Mf2Kgl4+DQ2+BaW/QeoX9+0w96cL7h488Irs2Br4S+HBtL1Dqhx87WV1yOq4/XSsSBGZd/+90vnTD+G9TmQnDL4giY76SNJSz80RelqrVhGyfr36PGAgtTv9jS3Qh15O0WuRHjrwPNyPFRw6+LRnEW507Fa1q3ljyXzsYXX46jP4ad/FJWTKU49Jy2+/hPc9kR0w+IIgJvodSU25NFfonZKerj4PGEydYP/eD+Gg6595np9RDx96DO4rHPTSbrt2NPIsFo6P2do2zRwve375QY7efqv6OOoz+WnLVaVl1MvPS9xv9px3J3dj8JksOqqWJCddCwPvlC5dImTnTvWZwMBqf2d5XspHg24gdmxtob5lPSfZ2cXAPoPs32Xc9LdQs77RhtuW4X1l/2e6AO7l6iOqz+inVbeUlQHvvAH7ApFVMfhMFNW0nrRIvAOGna/Zs9VnQoOsA+iX3XdtbwoH3EBtXDfR8wqELrkUzBDUbet97NlV37NPdCxO8F8B3MLqY6vP7ocTZ58tC+67W7rVqgH7BZHVMPhMEtn4V0mIfwCGHNK3b4QcPKg+Fxh0neDokVtl+5bgVgLXPzfqxbT37fnc8xNkIIt76zqGuuyTbku3adefMv1lRgHcAxdeINMef1ja1P0M9hEiq2DwmSQu9mkYcHlZulR9LjAIO4V+z2/Lxv5woA0W70K9usr57p2/ecLMm/7/9H/TP59u2TDAMT9fBkoXwN39+0+y68br1eVT19BP2668QsZWfk4SG3wH+wpRuDH4TBAb8yp8gjM/w4frn9TUZwOh4RR6hZeNayfBgZasZ8KYQZ4nNic/9ZjnCU7UD41ac9MNMvitKrDPEIUTgy9AUU2+lbS0ojDYjFi7Vn02EBhO4lnbEwyyZC3Ll8yQ9m2STt/bnWt/JHMfuE+OFS2iLqO6ln5afM9d0vOj6jn6DVE4MfgCVJB5PWTCBPXZQFg4SdaxawIuwkrBN2Job3iP961eVfXPwF5/OHTeuTLzkQel3Vefwn0QhRKDLwAxzd7z6ydObx07Rsj27erzgcBwkox978PBlqxhwZxJkpbcHN7nWkzDn2VElRdl47VXq8uprqmfdl5+mYyv9LQk1a8H90MUCgy+ACQm3A3DrKBmzlSfD4SFk+iqBWYsaE3BMbBvF3iP+0r54WuZ9OyTsrvkpeqyqmvrp/U3XCdD33hFmv35C9wPUTAx+PzUPPotSUsrBIOsoHr3Vt+IMtRnBIHhJHoNTjToUnjNmDpa4ps3gff5mXT8oqbMfuh+ySxeXF1adX39tPSu26V3jXfgPoiChcHnh8jGDaRF4q0wxPy1aJH6jCAsnES/FL5jWxwcfCl8enZrC+9zI3rXqOYJL9RfjTqiwnP2g/dLx89rwn0QmY3B54fYmFdgeAViyBD9c6D6nCAwnEQvO7ZhzRw4AFPoTRo3RCKbNIT3uVH650r9s+W6G65Tl1hdZz/tvvQSz8+oqT98DfdDZBYGX4H9JqkpF8PwCtTq1epzgrBwGs+al2AQptBa+c8s6dguBdzj/kn66RsZ//zTsrPUZeoyq2vtJ/0AjX6QJqbhT3A/RIFi8BVQ85g3YWiZYdw49TlBUDiNLjeEBmIKrVHD+8J7PFD6lYUZjzwoh847T11udc39pF+hYAFcCgYGXwF5V1M3W/v2EbJli/qsICyc5MSJC/leX5gtmjdZWqXGwXvcLD0+qu55eR31ZaM8BXAfuFc612YBXDIPg68AmkV+KampF8LQMsu0aeqzgrBwmr27v4YDMoXG4P7d4D0eDIOqviZryt6gLru69n5iAVwyE4OvAGJjXoZhZaaePVUn36c+LwgLJzl27Ho4IFPwzZo+VhLjIuE9HiwJv3znWbhaL2CN+rZR+0tcKLMersgCuBQQBl8BtEi8E4aV2RYsUJ8XhIXT8OfO8Ojdoz28v0NB9+EZjz7kqeGH+rhRevuBb78G90GUHwafQZFN6ktqyiUwqMw2aFCEHD2qPjMICyfR5YHQwEzBM3nCMGkW+Qe8x0Mp7buvZNmdt6nbQN0LAdALaaP2ifLC4DMoplkNGFLBsmKF+swgLJzkQMYbcHCm4Fi9fI507pAG7+9w6frJB7LtylLqdlD3hB8Onn8+bJcoLww+g+Jin4UBFSxjxqjPDMLCSbKySsMBmoJjzMj+8N4ONz1fN+rlF2RrmSvVbaHujQLS3x5Ru0RnwuAzyKwFqY1q2zZCNm1SnxsEhpNs3jAUDtJkriULpkqblgnw3g63Uyu/bLjuGnVLqPuigPTYgdolOhMGn0FJSdfCgAqmKVPU5wZh4STbt7SGAzWZa8jAHvC+Dre2dWrL+uuvVbeCuh8CoNtB7RMhDD6DUlNLwHAKpm7dImT3bvXZQWA4xa4djeBATeaZM3O8JCVEwfs6XBIbfCsL771b3QLqPjDBovLl4H6IEAafAVFN68JgCoV589RnB4HhFPv2fAYHazJP314d4X0dDtGNGsjE556Uo0WLqsuv7gGTHC9USPq+9zbcJ5EvBp8B0VE1YSiFwoABEZKZqT4/CA0nOJjxKhysyRxTJ42QmGZ/wvs6lJo3/MmUCu55WVruDrhvIl8MPgNimr2fK5BCadky9flBaDjBoYNPwwGbArd25Tzp2qklvKdDSS80baR/5yWrSBH4//vqX+1NeAxE3hh8BjSPrgoDKVRGjlSfH4SGE2QerggHbQrcuNED4f0cKp0//VDm3X+vZ6Fp1J+N0gtdj36pkuwvcRH8796W3XGrRP35KzweolMYfAbExlSBgRQqrVpFyIYN6hyA4LC7o0fuhIM2BeafRdOlXetEeD8Hm15IWi8orReWRv3YqDVlb/QscH2q3emPPQT/zpf3NkQIg8+AcAeflp6uzgEIDrvjS+zBMXxwL3gvB9PJF9Gfly1XlVaXVl1fP+mFrMe++JxnYWvv9tt/+YnsufQSuI23lbeWlZiGP+fYlsgbg8+A2OYvwTAKpS5dImTnTnUeQHjY2dGjt8CBm/w3b/ZESWkRDe/lYBnwzhuy6pay6pKq6+qnjAsvkGmPPyKt634O96FNefJRuK0v/UI82p5IY/AZ0DzmDRhGoTZ7tjoPIDzs7EjmvXDwJv/179MJ3sfB0K1WDVlw3z0BVVvQryLoNnRbaB/e2nz9mey8vCRsx5v+mZSli+hMGHwGxES/C4Mo1Pr2jZBDh9S5AAFiV4cPPQYHb/LP9MmjJDbmb3gfm6lN3c/Ut7OH5YD6lob6qlH6Z8kB1d6A+ziT9GeegG350q9PoO2JGHwGREd9CIMoHJYuVecCBIhdHTrwAhzAyT/du7SG97BZEhuYU1B281VlPAtT+/OtrNU3X8p2AxUd1t9wnSSo40VtkLsx+AxoFvklDKFwGD48QrKz1fkAIWJHGfurwQGcCm7C2EHw/jXL4KpVZM1NN6jLpq6dn/STnpOfeszz5Cfah1ETKj0N2/elwxVtT+7G4DNAF6FNSysOgygc1q5V5wOEiB3t2fUDHMSpYJYvmSkd2ibB+zdQPT6q7nmXDvVJo44VLSLzHrjXtMKxqd/XMfT0qF4pJumnerANci8Gn0HJyaVgCIXDhAnqfIAQsaOd22LhQE4FM2Job3jfBqLdV5/KzEcelEPnnasulbpeflp++63St3pVuI9A6J9c0f586b9D25N7MfgMSkq8BYZQOHTqFCHbt6tzAoLEbrZu6gEHcjJuwdxJkpbcHN63/kiqX0/GV3padl5+mbpE6jr5SX/b0g+YBOudOn2cRtb+1N8MU3/4GrZB7sTgMygh4X4YQuEyc6Y6JyBI7CQ7u5isXzMXDuZk3MB+XeA9W1CnCsLqh0JQ/zNqd8lLZdKzT0pKCMJGvzCPjsGXnhNE25M7MfgMio15DQZQuPTuHSEZGeq8gECxC77KELiZU0dLfGwTeM8WRO8a78jSu25Xl0VdGz9lFi8usx+8Xzp+URPuIxj0U5tGglo/BRroAzXkHAw+g/STnWlpRWAIhcuiReq8gECxC9biC1zPbm3h/WpUx89resLqiAot1OeM0qHZu0Y1uI9g0z+nomPyNemZJ+D25D4MvgJITroWBlC4DB0aIcePq3MDQsUOdmxNhIM5GTNp/BCJatIQ3qv50XNe+ufI3SXzX/syL+vUty3986j+mRTtJxT0u4Bryub/moWes9Qv3qM2yF0YfAWQEP8QDKBwWr1anRsQKlan5/c2rJkJB3TK38p/Zkmn9inwPs1LjEkFYXeWukzGP/+0JP30DdxPqOnwRcfpS6/1ibYnd2HwFUBMdDUYPuE0bpw6NyBYrO5AxutwQCdjRg3vC+/RvJwsCHurOv3qGvjp0HnnyYxHHvS86oD2ES76yVG9/Bk6Zm+6ukP7rz6BbZB7MPgKILLxL5JksZ8727ePkC1b1PkB4WJlO7c3gwM65W/R/MnSKjUO3qNI59ofel4eN6MgrH6ZHe3DCnQdPnTcvqY/9jDcntyDwVdAcbFPwQAKp+nT1fkB4WJVR4/cIRvXpsNBnfI3eEA3eG/6Mq8g7A0y2AbFXXXldV2BHX0Gb7qSe6fPP4ZtkDsw+Aooquk30jLtbBhA4dKzZ4Ts26fOEQgZK9q/tyYc0Cl/s6ePlcT4SHhvnnKyIOwL5hSErfycrRZ67l/tTfhZfM18uCLcntyBweeHhPiKMIDCacECdY5AyFjNsWPXc7WWAPTu0R7ek6fogrArTSkI+7C0yaMgrJUtLXcH/FzeDlxwvnT59EO4PTkfg88P0VG1JDXlEhhA4TJokK5mrs4TCBsr2bfnSzigU/4mTxwm0ZGN4D15uiBsIf8Lwp4oQEFYK+v73tue4rboM3qbU7EC3J6cj8Hnp/i4x2EAhdPKleo8gbCxiqNH7pTNG4bAQZ3ytnr5HOnSMS3XfXiqIKz+lob6jFH6W2JBC8Ja2aLy5eDn9Hb43HOke8334fbkbAw+P+mVXJKTr4QBFC5jxqjzBALHKvbsqg8HdcrfmJH9c9x/et7NjIKweh7Q34KwVtbrg2pytGhR+Jm9za9QHm5PzsbgC0Bc7HMwgMKlbdsI2bRJnSsQOuGWefhB2bRuPBzUKW9LFk6VNi0TTt93+glLIyuV5MWsgrBWpkMNfXZvR4sVlV4fvgu3J+di8AUgqsm3kpR0HQyhcJkyRZ0rEDzhtmtHIzioU/6GDurhud+sWBDWyrp//J5knnMOPA/e9M+iaHtyLgZfgGJjXoYBFC7dukXI7t3qfIHwCZdDB5+RDWtmwUGd8jZ35njpWb+epQvCWtncihXgufCWVbiw9Hn/bbg9ORODzwRWKlKrzZunzhcIoHDIPnGubNnYFw7qlLdNU0bJYhVU5hWE/Qnev07W9ZMP5OD558Pz4m1JuTvg9uRMDD4T6AddklrcDEMoHAYMiJDMTHXOQBCF0okTF8juHQ3hoE5ntmHZbNkd2Uj233u3Oo3qXPpJV17QFRjcXn181sMPwPPjLfuss6T/u2/C7cl5GHwmiY76UJKTS8MgCodly9Q5A2EUSvt214EDO53ZjtaJcuglY1XFz+R0QdjPQ1cQ1so6ffax7L/oIniuvC274zaJ+utX2AY5C4PPRM1j3pTU1AthEIXayJHqnIEwCpWM/dVYdqgAtvbrIhkfvCsnAnwfL5wFYa1s+mMPwfPla9Dbr8PtyVkYfCaLi31e0iywlmfr1hGyYYM6byCUgu3QwWdl8/phcICnnDZPGCb7vv1Ssq6/Vp06df78tN4CBWGtrP2Xn8ieSy6G587byltvlug/foZtkHMw+IIgIe4RGEahlp6uzhsIpmA6knmPbNvcGQ7y9J8Ni6bL7r9+kyP35f+uWV70gy/jK+mCsPXgvUj/0UVo0Tn0NeTNV+H25BwMvqD4TVok3gbDKJS6dFED40517kBABYN+mGXrpu5woKf/7EyJlUOVnlGnTJ03P+lXG/QrDlYrCGtlbb7+THZdVhKeT2+ry96oxpr6sA1yBgZfkEQ2+cHzzS/cP3vOnq3OHQgps2Uefki2b0mDAz2dtK1nBznw7luSbeCl6rxYvSCslaU/8wQ8p76Gv/YS3J6cgcEXZHrOL5wPvPTrp74dHFLnD4SVWQ5mvCJbNvaBgz0tkM1jBsm+OrUl66oy6nSpc+YnuxSEtbJW33wh268oBc+vt3U3XCcJv3wP2yD7Y/CFQPPoN8P6qsPSper8gcAKXCHZv/dj2bhuAhzw3W7jvHTZ0/BnOXr3nep0qfPlJzsWhLWyCZWehufZ16hXXoDbk/0x+EJEv+cXrpfchw+PkOxsdQ5hePnneFYp2bPrRzjg0wLZmdhMDj/9uDpV6nz56b+CsJ/Be4r8k/p9HdlSJv/q9HrFm6SfvoFtkL0x+EIosslPYVvebO1adQ5BgPnj+PGSsm1zBzjgu932Lq3l4FuvSXaRwupUqfPlB11M1gkFYa1sbOVn4bn3NfbF5+D2ZG8MvhCLbPyLxMZUkaSkG2FABcuECeocghAriKys0rJ/by3O5wFbhveV/Z/VlOOlLlenSp0vP3kKwr7jnIKwVpVUv55suuZqeA28bb6qjKS4fMk3J2LwhYl+6jOu+QuSnHQVDCqzdeoUIdu3q/MIAi0/J46XkIz976pveZ3goO9mm2aOlz2/fC9Hb79VnSp1vvzk1IKwVjb6ZWNLw41//mm4PdkXgy/MoprWlbjYpyUl+XIYWGaaOVOdRxBsZ5KdXUQOZrwq27ekwkHf7XY1byyZjz2sTpU6X346dPllMsXhBWGtKrHBd7L+hvxXzNEPF/H6OAuDzyIim9T/972/wjC0zNC7d4RkZKhzCULOV2ZmBdm2pS0c8N1ue4dUOfjay+o0qXPlp+xzissO1UbvOrXh/UChocs1oevjS1e5QNuTPTH4LEaXONLv/iW1KKtCsBAMsEAsWqTOJQg67djRspKx74N/v+HNzzXgu93WwT0lo1YNOX7pJep0qXPmp0OVnvas3tKre1t4D1Do6J+W19x0A7xO3vTScHy61jkYfBamQzA+7nFJSrrWtG+CQ4fqpzLV+fw37PQDK/rnzB3b4mX9mrlwwHe7TVNGy94f68mxm2/KcT8W1JH77vGsz7lh0TSZNH6oRDVtCK87hZZe3BtdL1/6J2m0PdkPg88m9KsQMdHVVRA+5lkHNDm5lArDojDcoLSzJSWlpOeb5ML5VWTXjr9k8/rhcKCnk3RB2F2RjSTzwfvh/WhU1nXXyr5vvvRUYtDtrvxntnRqnwKvM4VeTMOfZeWtZeG187ZHfdPn2qjOwOCzuagm30pUZB2JbvaBR2zMa57XJXRIev6/yNqeB2i8t+nRtU2uQZ5y2tG6RcAFYXVtvYwa1WRr3y452h49vF+O60HhN6jqa/Aa+tILCqDtyV4YfC7UvNlfMmv62ByDMZ1kVkFYHZq6mrpv+4vnT5FWaXHwulD4RP35iyy/I/9XUvaVuIiV7R2AwedSA3y+hbjd5om6IOxXAReE1T+L7o78w/MzKdrP4AHd4PWg8BtQ7U14TX3NfKQi3J7sg8HnUsmJzTzfPtDg7CYbFk+X3X//JkcqBFYQ9ljZGz0PwGyaMgruR5s9fZy0iI+E14OsYWm5O+D19Xbggguky6cfwu3JHhh8LjZyaG84QLuFpyDs84EVhD1xycWSUbOGbB3UA+7DW58e7eF1IOvo+15VOV6oELzW3uY8WAFuT/bA4HOxtq0TZdUZfpJzMrMKwh6s8pJsb29sVZvJE4dJdFQjeB3IWhaVLwevt7fD554r3Wq+D7cn62PwudzEsYPhQO1EZhWEzXz0IdkV01jWrzL2kv/q5XOlS8c0eP7Jenp9UE2OFi0Kr723efffC7cn62PwuVy3zq3gYO0kG+dNNqUg7FF1j+oFqTfNGAf3cyZjR/aH556sa36Fe+A94O1IsWLS88N34fZkbQw+l4uObCQzpo6GA7YTmFEQVpca2v/Zx57SQ2gfeVm6cKq0aZkAzz1ZV4+P35NMAz+FL7z3brg9WRuDj6Rfb+eVG9retY0cqKoLwhaB95IR2YULy8G3qniKy6J9GDF0UA94zsn65la8D94X3rLUPdLn/Xfg9mRdDD7yPGK/cG46HLjtxlMQ9vOacvyKwArCHn7qcdmZEAX3YdTcmeM9r42gc07W1/WTD+Tg+efB+8PbkrvvhNuTdTH4yGPY4J5w8LaLkwVhfwi4IOzRcnfKnt9/ko0m/EOgb6+O8FyTfcx6+AF4n3jLPuss6f/uW3B7siYGH3m0bhkvK5bOggO41ZlREDbrqtKy76vasmX0QLiPgpqaPsKzNBw612QfnT77WPZfdCG8Z7z9c+dtEvnXb7ANsh4GH5023qRBP1TMKgir3+nb1qM93Ic/1q6c53laFp1jsp/pjz0E7x1fA99+HW5P1sPgo9P0u2ZoILcaswrCHv63ICzaRyD0PyDQ+SV7av/lJ7L3kovhPeRtxW03S3SjBrANshYGH50W2aShTJs8Eg7mVrBp6mjZW9/cgrBoP4FYtni6tGvdAp5fsq+pTz4K7yVfQ958FW5P1sLgoxz69OwAB/Rw2rBsjuyKaiSZD+X/oEFesq675t+CsEPhfswwfEgveF7J3tp+XVt2XVYS3lfeVqt/lMX+Xh+2QdbB4KMcEmKbyPzZE+GgHg6mFIS9ABeENZs+b6lJMfC8kv2lP/MEvL98DX/tJbg9WQeDj3IZMjD/SgPBtrVf138Lwub/RF1eDr1YSXa0yl0QNhgG9OkMzyc5Q6tvvpDtV5SC95m3dTdeL/G/fg/bIGtg8FEuLVNiZdniGXBwDzZTC8I2/UM2/BOa6hPTp4ySuJjG8HySc0yo9BS833yNfKUy3J6sgcFHkF5YGQ3wwXKyIOz/TCoIWzfPgrDB0KNrG3geyVlSv68jW8qUhveetw3XXSMtfv4GtkHhx+AjqFP7FFlnsOxOoHamhrYgrNl0aaemjX/PdQ7JmcZWfhbeg77GvFgJbk/hx+CjM5oyaTgc6M3iKQhbvapkn2tGQdgUuI9gW7F0pnRomwzPHzlTcv16sumaq+C96G3z1WUk5ce6sA0KLwYfnVGv7u3gYB+okwVhPwt5QdhgGDmsDzx35GyjXzb2pPH455+B21N4MfjojPTDGrrCABrw/fFfQdi74PU16uhtt8jeBgUvCGs2XdFCPwiEzh05W2KD72S9gQewtpW+QtK++wq2QeHD4KM8DerfDQ76BXWyIKyx96DO5Hipy04WhFXfstA+Qm1gv67wnJE7jKjyIrxPfU189km4PYUPg4/ypF/IXrrQ/6W9rFIQ1mwzp42RhNim8JyRO8T99qOsuekGeM9626H+wda63uewDQoPBh/la/TwvnDwz8uWEf3+LQib/wu/eTn81GMBF4QNBj3/ic4VucvQN16B962vyeo+RttTeDD4KF8d2ibJmhVzYQD48hSE/fUHOXqHdQrCmi19/FCJavoHPFfkLjENf5KVt5SF97C33SUvlXZ1PoVtUOgx+MiQdAMLO+9q3kQyHw+wIGwZXRD2U9MKwppt1bLZ0ql9KjxH5E6Dq74G72Vf0x5/BG5PocfgI0P0yiQoCDRTCsIWLy4HqplbEDYYRo/oB88PuVezP39R41f+v3Dsu7iEdPyiJmyDQovBR4Y0b/aXzJo+NkcInCwI+0HgBWGfe1p2JjfP0bYVLZ4/RVqnxcPzQ+42oNob8N72NeORB+H2FFoMPjJswL9lfexQEDYYBg/oDs8Lkbb0rjvgfe4t48ILpHPtj+D2FDoMPjIsNa6pbGr0iy0Kwppt9oxx0iI+Ep4XIq3ve1XleKFC8J73NvvB++H2FDoMPjKk9wfVZGm5/P9Fm5cTF5zvKQi7rW9nGC5WpivTo/NC5G3RPfmvSnTovHOlW60acHsKDQYf5anDF7Vk9kP3S+Y5xeE1MSqUBWHNNmXicImOagTPD5G3XuofiMeKFoV9wNu8+++F21NoMPgISvnha89SS/r9I3QtjMqsWOHfgrCzYKhYnX5/sUvHlvAcESEL7rsH9gVvR4oXk54fVYfbU/Ax+CiHmD9+luFVXpKN114Dr4FRnoKwP9SVTZNDWxDWbGNHDYDniehMenz8nqFfSBbeezfcnoKPwUen6cn5ZQGuuHKyIOz7YSkIaza9RmnbVgnwXBHlZe4D98H+4S2rSBHpXeMduD0FF4OPPI9X645qZG4iL+EsCBsMQwf1hOeLKD9dP/lADp5/Huwn3hbffSfcnoKLwediLb/9yrN47t6LS8DzbdTJgrB/h7UgrNnmzpogyYnN4HkjMmKWgdd+Tpx9tvSr/hbcnoKHwedC+jyOeuUF2Xx1YBXQM66/TvY2+C7sBWGDoV/vjvDcERnV6bOPZf9FF8K+4+2fO2+XyL9/g21QcDD4XGZAtTdl5a03w/Nr1IELLpBpjz8sfX//SVYstefTmnmZlj5Smkf/Bc8fUUFMf/Qh2Id8DXzndbg9BQeDzyW61qrheczayMoSZ6J/ltFPonWr+f7pdsePsWYVBX+tWzVfunVulePcEfmrw5e1ZO8lF8P+5G3FbbdIdKMGsA0yH4PP4XTl52lPPCIZF+b/k0teVt1SVga880au9rt0TIMBYlfjxwzK9RmJAjH1iUdhn/I1+K0qcHsyH4PPoRJ++V7GvPicbCt9BTyXRm25qrSMfvl5ifvtB7ifqCYNZdrkkTBE7GbZ4hnSvk0L+DmJ/NX269qy67KSsH95W3XzTdL89/qwDTIXg8+BBlV9TVaXvRGeQ6P2lbhIpjz5qLT65ku4D296HUsUJHYzfEgv+PmIApX+9OOwn/ka9vrLcHsyF4PPQfSKEYvuKQfPnVH6pVq9jmCXTz+E+0ASYpvK/NkTYZjYxfw5kyQ1KQZ+PqJAtfrmC9l+RSnY57ytvfF6if8V/7pC5mHwOUC7Op/KjEcfNPTCbF70NfD3naIhA+29UsuAvp3h5yIyy4TnnoL9ztfIVyvD7ck8DD4ba/HTNzL++WdkR6nL4fkyatM1V8uIV1+U5g1/gvsxomVqrGeODIWK1c2YMkrimjeGn4vILKnf15GtZa6EfdDbhuuukRY/fwvbIHMw+Gwo6s9fZegbr8i6G66D58moPZdeIpOeecLTIdF+CmrsqP4wWKyuR9c28PMQmW3cC8/CvuhrzEuV4PZkDgafzeh6X4EWhNUlUeY8WEE6fl4T7sNfndqneN6DQ+FiVRPHDZbIxr/Dz0NktuT69WTTNVfBfult89VXSfKPdWEbFDgGn02cLAj7QMAFYfXySMFcEX7KpOEwYKxoxdKZ0rFdMvwcRMEy+qXnYd/0Ne6FZ+D2FDgGn8WZVRB2/fXXeh6VbtboF7gfs/Tq3g6GjBWNHNYHfgaiYEps8J2nP6J+6m1r6Ssl7buvYBsUGAafRXkKwr72kmy8LrCCsDsvv0wmVHpakurXg/sxW1xMY5k7czwMGitZOC9dWqbEws9AFGz6YTLUX31NfO4puD0FhsFnQWYUhD183rky85GK0v6rT+A+gmlQ/24wbKxkUP+u8NiJQkGvhLTmphtg3/Wmn9jWyw6iNsh/DD4LOVUQ9miABWF1ccueH1aH+wiF1OQYT/VyFDhWMGvaGEmIawqPnShUhr7+Cuy/viY//TjcnvzH4LMA/Tu+vrkDLQi7Vv0LUi90a4XaXqOH94OhYwV6HhIdM1Eo6fdm9eLvqC970/P7bevUhm2Qfxh8YaQ/jxkFYbdfWUrGVn7WM2mO9hMOHdomyZoV82DwhFP6hKHSrOkf8JiJQk3/QxX1aV9Tn3gEbk/+YfCFSX+TCsJOf+xhafP1Z3Af4aZDBoVPuKxaNls6d0iFx0oUDs3+/EWNffnP5+tfg/QrTagNKjgGX4h1rfVBUArCWpFeEQUFULiMHtEPHidROOk6l6if+9Lr8aLtqeAYfCGin8zSP1dkXBRoQdibZCAoCGtFkU0ael4SRyEUDlyPk6xq6V23w/7uTReT1g/Aoe2pYBh8QXayIGylwAvClsm7IKwV6eBb+c8sGEKhNmfmeHiMRFbQt3pVQ78CzX7ofrg9FQyDL4hCXRDWauJjm8AQCoexowbAYySyisX33AXHAG+HzjtPutWqAbcn4xh8QeApCFu+nMhZ+HMY4U9BWKtJS24OQygc+vbqCI+RyCp6f1BNjhUtAscDb/pdX7Q9GcfgM1G7OrXDXhDWSvQrDSiEwqFtq0R4jERWoh98Q2OCt8zixaXHR+FboMIJGHwmMK8g7FUnC8L+7n9BWCvp3qU1DKFQW7pomjRv9hc8RiIr0b8WGanAogMSbU/GMPgCEPXXrzLkzVdNKQibbmJBWKvo36czDKJQm5o+Ah4fkRXpnzLROOHtWJEi0rtGNbg95Y/B5ycrF4S1iuFDesEgCrVhg3vC4yOyoq6ffGBoukQ/DIO2p/wx+ApIr54wy6SCsH3eD15BWCsYN3ogDKJQ69a5FTw+IqvSYwwaN7zphSz6Va8Kt6e8MfgMSvmxrskFYRvA/TiJ/okRBVEorVs1X1JaRMPjI7KqTp99ZGixi3/uuh1uT3lj8OXjVEHYDQEXhC3pKQibHKKCsFZghYK082ZPhMdGZHUzHn0IjiW+9JJnaHs6MwZfHvq+93bgBWHPDV9B2HBbunAqDKNQGj9mEDw2Iqvr8GUt2XvJxXBc8abHTr3YNWqDMAYf4JSCsOEUHdVIVi+fC8MolPSTpej4iOxAr++LxhZfurwR2p4wBp+X0wVhDfwrKy9WKggbLi3iI2EQhVr7Nknw+IjsoO3XtWXXZSXhOONNF7TVhW1RG5Qbg0+J/V99kwvCfgv34yat0uJgEIXS8iUzJC6GFRnI3tLVP8bReONLPzSHtqfcXB985hSEPd/SBWHDoVP7VBhGoTR9yih4bER20uqbL2T7FfmvCqV/abJT9ZZwcm3w6ZdE51cwpyBsd4sXhA2HXt3bwTAKpRFDe8NjI7Kbic89BccgX3rJQ7Q95eS64HNjQdhwGNSvKwyjUNIV4NGxEdlN2vd1ZGuZK+FY5E2/J8yplvy5JvhOFYTdWjr/mycvnoKwLz0v8b/yJ4W8jBzWB4ZRKOmySOjYiOxo3AvPwjHJlx6f0Pb0H1cEnxkFYfefLgj7BdwH5TRx3GAYRqGycG66RDb+HR4bkR3pxS90BRc0PnnTf+OmhTL84ejgO1UQNvuss2B7RmQVKWz7grDhMGPKKBhIoTJp3BB4XER2pr/NoXHKl/52iLankxwZfG1NKgi74jZnFIQNh/lzJsFACpWB/brC4yKyMz1/p+fx0HjlTc8H6nlB1AY5LPjMLQhb2TEFYcNh2eIZMJBCpWO7FHhcRHann9xE45avCc89BbcnhwTf6YKwN14PtzPKqQVhQy02+m9PVQQUSKGw8p9ZkhDXFB4bkd3pd/X0O3toDPOm3/3jMwmY7YPPlIKwxU4VhP04V/tUcMktomEghcqsaWPgcRE5hV6lBY1lvvSqL2h7t7Nt8P1XEPYc+LdGuaEgbKi1bZUIAylURg/vC4+LyCn0upx6fU40pnnT63zq9T5RG25mu+DzFIR97kl1Qc0pCBvtgoKwoda1U0sYSKGiV41Bx0XkJHohfDS2+Zr6xKNwezezVfCNfqlSwAVhd3kKwj7F91yCqE/PDjCQQkUvkI2Oi8hJdA0+I+Omrjaja/uhNtzKVsEXCE9B2IcrSvsv3VcQNtSGDOwOAykUFs+fIs0i/4DHReQ0uvo6Gu986WruaHu3ckXwLfEUhH0X7pfMN2ZkfxhKoTB5wjB4TEROtfSu2+G4502vTdzpMz68d4qjg48FYcNDhw8KpVAYMqA7PCYip+pXvaqcKHQ2HAO96YcB0fZu5Mjgyyxe3FNYVr/fh/ZFwTVr+lgYSqHQuWMaPCYiJ1t8z11wLPSmV7LS5djQ9m7jqODT9fH0PF5+K7xQcC2aNxmGUrCtXj5HWiREwWMicrLeNarJsaJF4Ljobe4D98Ht3cYywbf5mjLwQhm18paykvbdV7BtCp2oJg09K6egYAq2OTPGwWMicoMF990Dx0ZvmecU9yzej7Z3E8sEn74g6ELlZ9uVpVgB3ULiY5vAUAqFsSP7w2MicoMeH71naBzVAYm2dxPLBN/RokXhRTqTg+ef73kBnfN41qKLv6JQCoW+vTrAYyJyC/1TJhovvR1TY61e6hFt7xaWCb69l14CL5IvPY837fFHOI9nUR3aJsFQCoU2rRLgMRG5RddaNeSQgXJsi+65C27vFpYJvjEvVoIXyJdeUFrXpEJtUPh179IahlKwLV04TWKa/QmPichNZj/0ABw7vR0vVEj6vlcVbu8Glgk+bWvpK+FF8jWnYgW4PYVf/z6dYTAF29RJI+DxELlN59ofeV5YR2Ont6V33QG3dwNLBV/rep/LbgOLT2cVKSwDqr0B26DwGj6kFwymYBs2uCc8HiI3mvHog3Ds9OXWcdRSwaeNqGKsuvDqsjdKi5/5k6fVjBs9EAZTsHXr3AoeD5Eb6bJtenFqNHZ6W377rZ7FrlEbTma54NNlgpYYLCw7odLTsA0Kn6npI2AwBdPalfM8xW/R8RC51dQnHoHjpq/BVV+D2zuZ5YJP0++jHLjwAniRvO0ueYnn92zUBoXH3JnjYTgF07xZE+CxELlZ2zq1DdUt1Yt/xDT8CbbhVJYMPm3Kk4/Ci+RrfoXycHsKj6ULp8JwCqbxYwbCYyFyu/SnH4fjpq+hb7wCt3cqywafXn5s47VXw4vkTb/X58av6lYUHdVIVi+fC8MpmPr36QSPh8jtWtX7QnZccTkcO72tuekGifvNPe9GWzb4NP2vEHSRfK274TpJ/rEubINCp0V8JAymYGvfpgU8HiL6n0x87ik4bvrSDxai7Z3I0sGn6+gtKl8OXiRf6c88Adug0GmdFg+DKZiWLZkhsTF/w+MhIv3rWR3ZWib/d6TXX3+tJDb4DrbhNJYOPk0vwbPv4hLwQnnTf6P/FrVBodGpfSoMp2CaPmUUPBYi+s+4F56F46av0S8/D7d3GssHn6a/zaGL5Et/O2S19fDp1b0dDKdgGjG0NzwWIvqPngradM1VcNz0tumaqyWpfj3YhpPYIvj0RdPzeOhC+XLb00lWMqhfVxhOwdSjaxt4LESU0+iXnodjpq+xlZ+F2zuJLYJP009u6ic40YXypp8EZUHa8Bg5rA8Mp2DSZZDQsRBRTok/fysbrr8WjpvetpQpLanf14FtOIVtgk/T7+yhC+VLvwOItqfgmjhuMAynYFkwd5JENv4dHgsR5Tby1cpwzPTl9FWxbBV8epUWvVoLulDe9KovevUX1AYFz4wpo2FABYsOWnQcRITF//qDrL3pBjhuett+RSlp9c0XsA0nsFXwafpfIuhC+dLrfep1P1EbFBwL5kyCARUsA/t1gcdBRGc27PWX4Zjpy8mviNku+PTv1LoyA7pQvtz0QqYVLFs8AwZUsHRslwyPg4jOrPnvP8mqW26CY6a3XZeVlDZffwbbsDvbBZ+ma0hlFSkCL5a3zVeVkdb1nPt13Upio/+Wdavmw4AKhpX/zJKE2CbwWIgob4PfqgLHTF9OfV7ClsGn6Srs6EL5mv7YQ3B7MpcuC4QCKlhmThsDj4OI8tes0S+y/PZb4Jjpbc8lF0v7Lz+BbdiZbYNPF1rcWeoyeLG8HTrvXOldoxpsg8zTtlUiDKhgGTW8LzwOIjJmwDtvwDHTlxO/PNg2+LSxlZ+DF8rXsjtuk+a/14dtkDm6dmoJAypY9Cox6DiIyKC//yf/3HU7HDO97b/oIun02ce4DZuydfDpR3NX3HozvFi+3LIGXbj07dkBBlSwtEqNg8dBRMb1q17V0MIgsx5+AG5vV7YOPq3ve1XlSPFi8GJ523blFZ6KxKgNCtyQgd1hQAXD4vlTpFnTP+BxEFHBLL7nLjhmejt4/vnS9ZMP4PZ2ZPvg02Y+XBFeLF+z1N+h7SlwY0b2hyEVDOkThsFjIKKC089AHDPwlLx+oBBtb0eOCL62X9eWbaWvgBfLm/5mqL8hojYoMJNVGKGQCobBA7rDYyAi/yy47x44Zno7fM450v1jZ6yI5Yjg00a9bGzl8ZW33uyZG0RtkP9mTR8LQyoYOndIg8dARP7p8VF1ySxeHI6Z3vR6yWh7u3FM8OnVCJbdeRu8WL7cUHYj1BbNmwxDymyrl8+RFvGR8BiIyH9zH7gPjpfejhYtKr0+eBdubyeOCT6t1wfVPO/toQvmbefll3neA0RtUMFFNWnoWUkFBZXZ5swYB4+BiALTrVYNNX6eB8dMb7rgN9reThwVfNr0xx6GF8uXkyZqwy0+tgkMqWDQD9GgYyCiwM1+6H44Xno7XriQ9H3vbbi9XTgu+HQpjc1Xl4EXzFtWkcKeNT9RG1QwuhgsCqlg6NOzAzwGIgqcLv2WceGFcMz0trTcHXB7u3Bc8Gm6KgO6WL50lYcWP38L2yDjOrRNgiEVDG1aJsBjICJzzHj0QThe5nBWhPSv9ibc3g4cGXx6AdYl5e7EF8yH0ysNh0L3Lm1gSJlt6cJpEhP1JzwGIjKHfv5h78Ul4Hjpbdkdt0rUX7/CNqzOkcGn9fj4PfWV/QJ4wbzpiu766z1qg4zp36czDCqzTZ00Au6fiMw19YlH4Hjpa1DV1+D2VufY4NN0LSl0sXw55d2UcBk+pBcMKrMNHdQT7p+IzKWXd9xd8lI4XnpbeWtZifnjZ9iGlTk6+NK+ryMbrrsGXjBvepHWwTb9l4sVjB89EAaV2bp2agX3T0Tmm/z043C89DX0jVfg9lbm6ODT9EVBF8vXuhuuk+Qf68I2KG9T00fAoDLT2pXzPMVu0f6JyHyt630hO0pdDsdLb2vK3ihx//sRtmFVjg++yL9/k4X33g0vmK/0Z56AbVDe5s4cD8PKTPNmTYD7JqLgmfjcU3Cs9DW8yotwe6tyfPBpupzGPgNPKem/6VqrBmyDzmzpwqkwrMykf05F+yai4En77ivZWvpKOF5607+YJfzyHWzDilwRfNok9W0OXTBfejke/S0RtUG5RUc1ktXL58KwMlP/3p3g/okouMa98CwcK32NevkFuL0VuSb4kuvXk3U3Xg8vmC87TtaGi14wGgWV2dq1aQH3T0TBpZ992HT1VXCs9Lbx2qsl6advYBtW45rg0/Q7J0bK7OsLqL/iozYop9Zp8TCozLRs8QyJjfkb7p+Igm/0S5XgWOlrbOXn4PZW46rg0+bfXx5eMF/6HUC0PeXUqX0qDCszTZ88Cu6biEJDL+244bpr4VjpbctVpSX1h69hG1biuuDr9NnHhl7MPHDhBdLjI2dUGw6mXt3bwbAy04ghveG+iSh0Rr5aGY6VvuywDKTrgk8bry4MumC+lpS7Q6IbNYBt0EmD+neFYWWmHl3bwH0TUejE//qDrL0p/+cktl1ZSlp++yVswypcGXyJDb6V1TffBC+aL13pAbVBJ40c1geGlZlSk5vDfRNRaA17/WU4TvrST9Gj7a3ClcGn6ZIax4oUgRfN2+arynhWMEBt0P9k4rjBMKzMsmDOJLWf33Ptl4hCr/nvP8mqW/L/0rDz8sukTd3PYBtW4Nrg0+Y8WAFeNF/TH3sIbk//kxlTRsPAMsvEsYPhfokoPAa/VQWOk76s/ICgq4Ov/ZefGFqL7tB550rvGtVgG26nv5GhwDLLwH5d4H6JKDyaNWogy2+/BY6V3vZceom0/+oT2Ea4uTr4NP3eCbpovpbdcZv6ml8ftuFm+h07FFhm6dguGe6XiMJn4DtvwHHS1/THHobbh5vrgy/utx9kxW03w4vma/TLz8M23CSqaV2P6KiakphQS7Zs6Cmb1w+XTevGwuAKxIqlsyQ+tgk8DiIKH72s4z933Q7HSW/7S1wkHT//GLYRTq4PPq3ve29LZvHi8MJ523blFZ4CjagNJ4lq8q00j35L4uMekxaJd0hy8pWSllZcWraMyKFnT3VeJKfjx0vKkczyciDjDdm7u55s35oiG9ZOg8GWn5nTxsDjI6Lw61e9qqGVsGY+XBFuH04Mvn/NfKQivGi+ZlnwIgYqsnEDT9AlJtwnKSklcwXcmQwapM6JT/BB2YXkyJFysn9vTdm+pSUMOWTU8L7weInIGhbfc5fq4qqP5+HABedLl08/hNuHC4PvX22/rm2o/MaR4sWkr/qXDmrDTiIb/yox0e9KQnxFSUk2HnbeRo9W5wQFXT6OHLlL9u2pLds2t4eBd4peFQYdOxFZQ+8a7xh6LWxOxQpw+3Bh8HnRZTXQRfO18tabPasYoDbsICb6bRV2l8MwK4jJk9X5AMFWEJmHH5Stm7rD4GuVGgePn4isY8F996iurPpzHg6fe450r/k+3D4cGHxemjf8Sf658zZ44XyNrfwsbMPKmkdXlRaJt8EQ88fs2epcgDArqOzsczxzgtu3tD4deovmT5aopn/Az0FE1tHjo+pyxMAzEvMrlIfbhwODz0evD96VQ+edBy+cN70yQYcvasE2rCam2XuSmHC3pKUVggHmryVL1LkAQeav48cvlYx976tvgF0lfcJQ+FmIyHrmPXCv6sKqH+fhaLFi0vPDd+H2ocbgA6Y9/jC8cL6s9ru1r+iojyUh4X4VeOfA4ArUmjXqPIAAC1TWsatl/NjXpVkkl4ojsoNutWoY+sKwsHw5uH2oMfiAVt98IZuvLgMvnLesIoVlQLU3YBvhFhvzsgq8wjCwzLJ1qzoPILjMMHJkhKSlnqu+rVpnXoCIzmz2Q/errqv6bx6yCheWPu+/DbcPJQbfGQyv8hK8cL5Wl73RU6QRtREOkU1+kIS4R1QwnZ0rqMy2d686ByC0AnXsWIR063ZyH6mp50lcrP3mU4ncpnPtjyTjwgtUF1b9OA9Lyt0Jtw8lBt8ZNPvzF1ly953wwvmySuHFZpGfe+byfAMqGFq31q8lqM8PgitQ27bl3l9C/IOeF+vR5yYia5jx6IOqC6t+nIfss86S/u++CbcPFQZfHrp//J76F8yF8OJ5233pJZ5/7aA2QiWmWQ1JanFTrsAIli5d1GcHoWUG/dAM2mdi4p0SHfUp/PxEFH76gb+9F5dQ3Vj15TzotY+j/voVthEKDL58THnqMXjhfIXzUd3mMW94lhVDYREsffqozw1Cywzp6XifWlLSdZ4X79F5IKLwm/bEI6obq76cj0Fvvw63DwUGXz5Sv68jG667Bl44b3rNusFVq8A2gkmHXsu04M/n+Ro6VH1uEFpmGDgQ7/OUtLSi6ptfeL9hExHWrs6nsrvkpaorq/6cB70QSPQfP8M2go3BZ8DQN16FF87Xuhuuk+Qf68I2gkGHXmrqhTAcgm3cOPWZQWgFKiMjQtq1w/v0lpxcik98ElnU5KcfV91Z9el8DHnzVbh9sDH4DFp4793wwvlKf+YJuL3Z9JxeqH/e9DZtmvq8ILgCtW4d3h+i5zT5rh+R9bSu97mhIt/6qfjY/4W+zimDz6Cun3xgaNJ2n/qbrrVqwDbMop/eDOWDLMi8eerzguAK1Jw5eH9nkphQXiKbsEAwkdVMfO5J1aVVv87H8NdegtsHE4OvACY9a+xCLipfzlOoEbURKP2eXqheWcjLsmXqs4LgCpSu+ID2lxddNxCdKyIKn7TvvjJU8UZPESX88j1sI1gYfAWQVL+erL3xenjxfA194xXYRqBOvpyOAyCU1q9XnxMEVyCOHz9Z3BbtLy9paUUktvmL8HwRUfiMe+EZ1bVV/87HqFdegNsHC4OvgAZVfU1OFCoEL563jdde7fkXD2rDX3GxldRAf1augT8ctm9XnxOEVyB27MD7MiI15WJPuSV03ogoPPTDfpuvvkp1b9XH87Dx2mukxU/fwDaCgcHnh3n3578SuTblyUfh9v7QC06npl4EB/1w0E9fqg9pKv3zKdqXUUktbvT8FIzOHxGFx5iXKqnurfp4Psa8+BzcPhgYfH7o9NnHht5TOXDhBdLjo/dgGwWlqyygwT4c9OsGWVnqM4LwCsSUKXh/BREXG9qfTIgob3otYyPvQm++qoyk/PA1bMNsDD4/jX/e2G/XS8rdIdGNGsA2jNL19IJVWsgfegFp9eFMN3gw3l9BJCdfJVGRdeB5JKLwGPlqZdXFVT/Phx5X0fZmY/D5KbHBd7Lq5pvgxfM1okpgD15Y4SlOb/37q88FgisQBw9GSMeOeH8FFR/3JDyPRBQe8b/+YOjBwG1XXiEtv/0StmEmBl8A9Arjx4oWgRfQm/4Kr1/oRG3kp3l0VfVtz9zK6YEaMUJ9LhBegdiwAe/LHykpl0p01CfwfBJReAx7/WXV1VV/z4d+bQxtbyYGX4BmP5h/8UVt+mMPwe3zEtn4F2mReBsc3MNp4kT1mUB4BWL+fLwvfyXEV4TnlIjCo/nv9Q39Srbz8sukTV3/vigYxeALUPsvP5EdV+S/NM+h886V3jWqwTbOJDamChzUw23GDPWZQHgFQq/9ifblL13Almt5ElnL4LeqqO6u+nw+Jj8V3EUpGHwm0I/hoovnS9eg0v/qQW0gKcmXw0E93BYuVJ8HhFcgevfG+wqE/raMzisRhYd+0G/FbbeoLq/6fR50jdN2XwWv9iaDzwRxv/1o6GJqo19+HrbhS9ecQ4O5FaxcqT4LCC9/7d6N9xMoXbmiWWTwJ8qJyLiB77yuur3q+/mY9vjDcHszMPhM0uf9tyXznOLwAnrTTy21rVMbtuFNz1GhwdwKNm1SnwUEmL9WrMD7MUNc88rw/BJReOh1jP+583bV9VX/z8O+EiWk4+c1YRuBYvCZaOYjFeEF9DXr4Qfg9qdENf1GUpJLwoHcCnbtUp8DBJi/pk/H+zFDi8Rb4TkmovDpV/0tT/FuND5602Mq2j5QDD4Ttfn6M0OrkR8pXkz6Vq8K29CaR78FB3GrOHRIfQ4QYP4aNgzvxyxRTb6F55mIwmfx3Xeq7q/GgDzo1a+6fPoh3D4QDD6T6VXG0QX0pcvu65c6URsJ8Q/AAdwK9Evm2dnqM4AA80dmZoR07oz3ZZbYmJfheSai8Old4x05ViT/96DnPHg/3D4QDD6TxTT8ydDv19rYys/CNpKTroYDuBXoskHq4E2zeTPej5kSE+6F55mIwmvhvXerYUCNBXk4fN650q2mua8mMfiCoNeH78rB88+DF9GbflGzwxe1cmzbLPIzy63U4m3QIHXsIMD8pV+NQPsxU3JyKc9iAN7nmYjCr+dH1eVI8fwfCtQVcdD2/mLwBYl+FBddQF9zKlbIsZ3V5/d0hXR14KaZMAHvx2x8rYHImoyUedPPRfT8sDrc3h8MviBp9c2Xsuma/AswZhUpLAPeeeP0dvFxj8OB2yomT1bHDQLMX/364f2YrXnMf+eYiKyjW60anpWt0PjoTf8sirb3B4MviIa/9hK8gL5Wl73RU7NKb5OYWA4O3FYxe7Y6ZhBg/ti7N0Jat8b7MVtcbGjKnRBRwRlZ81h/Sejz/jtw+4Ji8AVRsz9/MfTIrjah0tOebZKTroUDt1UsWaKOF4SYP1avxvsIhsSE+3JdHyKyhs61P5KMCy9Qw4IaG/KwRI2naPuCYvAFWfea70vGRRfCi+hNr02nL35aWnE4cFvFmjXqeEGI+WPmTLyPYEhKugFeHyKyhhmPPKiGBTU25CH77LOk37tvwe0LgsEXAnqlcXQRfc2vYO2fObWtW9WxghDzh67rh/YRDHrBb3RtiMgaOnxRU/ZdXEINDWp8yMM/d97mWfYMtWEUgy8EUr+vIxuuvxZeRG/6XzPjPsYDt1XoeTl1sAE7dixCunXD+wiG1NSL4LUhIuuY9vgjanhQY0Q+Br79OtzeKAZfiAx581V4AX1tviVCujbFg3e46QdRjhxRxwmCrKD0N0e0j2DRPyGj60JE1tGuzqeyu+SlaohQ40QeVtx2s6fEEWrDCAZfCBlZpUCb/QoevMOtSxd1fCDE/KEfkkH7CJq0syWysf8dhYhCw+jUkP4ygbY3gsEXQnqx1b2XXAwvoreMSyNk8Hdg8A6zPn3U8YEQ80d6Ot5HMKFrQkTW0rre57Kj1OVqmFBjRR5W33yTxBagsLc3Bl+ITXr2SXgRfS1/MEJapeEBPFyGDlXHBkLMHwMG4H0ES1paYS5bRmQTEw2Ok/pdabR9fhh8IZZUv56svel6eBF9TfgAD+LhMm6cOi4QYgWVkREh7drhfQRLWuq58HoQkfWkffeVbC19hRou1JiRh7U3Xi/xv34P28gLgy8M9BNJxwsVghfS29abIqTHX3ggD4dp09RxgSArqLVrcfvBlJpyMbwWRGRN459/Rg0XaszIx8hXKsPt88LgCxMjC7NqcyvjgTwc5s1TxwSCrKDmzMHtB1NKSkl4HYjImlJ+rCubry6jhgw1buRhw3XXnF7y0SgGX5h0/Pxj2XVZSXghvR0qESFD6+HBPNSWLVPHBIKsoHSFB9R+MCUl3gKvAxFZ15gXK6khQ40b+Zj07BNw+zNh8IWR0a/yq+6PkDZJeEAPpfXr1fGAICuI48cjpEcP3H4wJcRXhNeAiKxLf5PT3+jQuOjtaLGi0vJb46XHGHxhlNDgO1l1y03wQvpKr44H9FDasUMdCwizgtBtoLaDLS72eXgNiMi69KsNK28pq4YONX7kY+F9xssWMfjCrP+7b8nRokXhhfS2/foI6fUHHtRDRT+NqQ4mIP/8g9sOtpjot+H5JyLrifrrVxlR5UU5fG7+dfpO0cUAUFsIg88CjNSi0uZXwoN6KOjXD7Ky1HGAMCuIKVNw+8EW1aRgk99EFB4D33nD8C9h3vYz+Oyl/VefyPYr8l+pIPP8CBn+FR7Yg617d3UMIMgKavBg3H4wJSddA887EVmHfnfP6M+aiH4/GrWLMPgswujTS2vujZD2CXiAD6b+/dX+QZAVxMGDEdKhA24/mBLiH4TnnIjCL/Z/P8qMRx+SE2efrYYJNVb4IfussyT5x7qwfYTBZxFxv/0oy2+/BV5UX1PewQN8MOnaeWrnAdmwAbcdbM1j3oTnnIjCx595PEQHZu8a78B9nAmDz0L6vP+2ZJ5zDry43nZdHSF9fsODfLBMnKj2DcKsIPQL8KjtYPKs0dnkJ3i+iSg8/J3H83akWDFZUu4Oaft1bbiPvDD4LMZI+X1t0TN4oA+WGTPUfkGYFcTYsbjtYEpMuAeeZyIKvW61asiC++4J6GdNva1uQ7eF9mEEg89i2tT9TLaWuRJecG9Hz4mQUZ/jwT4YFi5U+wVhVhC9e+O2gyk2JrBKzUQUOP0+3tQnHpGMCy9QQ4EaD/ykvyXqb4toHwXB4LMgvegquui+1pWLkI7N8YBvtpUr1T5BmBm1axduN5hSki+XqCYFX7mdiMwR/+sPMualSrK1dP7/mM+L3n60ake3h/ZTUAw+C4pp+LP8c9ft8AbwNe0tPOibbdMmtT8QaEatWIHbDSYuU0YUPmbM42VceKHnm6L+xoj24S8Gn0X1/PBdOXRBcXgzeNtTOkL6NcADv5n0Nza1Q79Nn47bDRb9ba9Z5Gfw3BJR8FhlHi8vDD4Lm/b4I/Cm8LXkCTz4m+nQIbUvEGhG6ertqN1giYt9Bp5TIgoOM+fxBpgwj5cXBp+F6dXGN197Gbw5vGUViZAxn+IAMEPHjhGSna32BQLNiMzMCOncGbcdDHqllqim9eA5JSJzmTaPV8bceby8MPgsbvhrL8GbxNeGO1S4NMNBEKiePdU+QKAZpecHUbvBEtv8RXguichcnnm8m82ax/sC7iMYGHwWp1c3WFLe2I018zUcBIEaNEi1DwLNKP0qBGo3GJJa3MwX1omC7OQ83t2WnsfLC4PPBrrXfF8yShSDN4+3fZdHyMD6OBACoSumqx34bcIE3K7Z0tLO5vJkREGk5/Gm2WQeLy8MPpuY/PSj8Aby9c+jOBQCMXmyahsEmlF9++J2zZaUeAs8d0QUGDvO4+WFwWcTqT98LRtvyP9Bl+yzI2TcxzgY/DV7tmobBJoRe/dGSOvWuF0zJSVdJ9FRn8JzR0T+M2Ue76LQz+PlhcFnI0PefBXeVL423xIhXZvigPDHkiWqXRBqRqxahds0U0rKpRITXQ2eMyLyj93n8fLC4LMZfROhG8zX7FdwSPhjzRrVJgg1I2bOxG2aJS2tmMQ2fxmeKyIqOKfM4+WFwWczXT79UPZeUgLeaN4yLo2Qwd/hsCiorVtVmyDUjNB1/FCbZomPewKeJyIqGHPn8Z4P+zxeXhh8NjTxuSfhDedr+YMR0ioNB0ZB6Hk61WCBHT0aIV274jbNkJhwL19dIDKBE+fx8sLgs6Gkn76RtTfdAG8+XxM+wKFhlH4w5cgR1RYItvzob4qoTTPo9/WiIr+C54eIjPHM490b4DxeoZPzeF0tNo+XFwafTQ18+3U5XrgQvBG9bb0pQnr8hcPDiC5dVDsg1IzQD8WgNgN1stzQt/C8EFH+3DCPlxcGn43NfeA+eDP6mlsZB4gRffqoNkCoGTFpEm4zEIkJ5aVZ5JfwfBBR3tw0j5cXBp+Ndfy8puy6rCS8Mb0dKhEhQ+vhIMmPrqqgGvHLgAG4TX+kpRWR+LjHJLJJfXguiChvA9953VXzeHlh8NncuBeegTeor1X3R0ibJBwqeRk3Tm0PQi0/+/dHSLt2uM2CSk25WGKbV4afn4jypufxFrpwHi8vDD6bS/jle1l1S1l4s/pKr46DJS/TpqltQbDlZ+1a3F5BJSddLc2jq8LPTkRn5pnHe9yMebyytpzHywuDzwH6vfuWHC1aFN603rZfHyG9/sABcybz5qltQbDlZ84c3F5BJCXdwIdYiAqI83j5Y/A5xOyH7oc3r6/5lXDInMmyZWo7EGz5GTUKt2eEflWheYyz/oVJFApmzuO1svk8Xl4YfA7R7qtPZfsVpeCN7C3z/AgZ/hUOHGT9erUdCLa8HD8eIT164Pbyohea1suP8aV0ooLhPF7BMPgcRP+8gW5oX6vLF5X2CTh8fO3YobYB4ZaX7dtxW2eSnHylxMU+x581iQqI83j+YfA5SOz/fpTlt98Kb2xfE964RtLSisMg8paRof4ehFte/vkHt+UrNfVCiY99it/wiAoo/tfvOY8XAAafw/R5/x05fO458Cb3tu3KK6R93fckNuYVaZF4h6SlnpMrmPTrCFlZ6u9BuOVlypSc7XhLTS3hWWOzefRbfCePyA+cxwscg8+BZjz6ILzZfc16+IHT2zSL/EKFYBVJSLhfkpOukpZpZ0v37urvQLDlZ9Cg/4JOf6vUT2cmxD3ieS0hqmndHMdKRMaYM49XyDXzeHlh8DlQm7qfy5YypeGN7+1I8WLStzp+Ry6yyQ/Sod0Xsnvnb7J/34dy+OBTkplZQX0DLO2RnV3ME3InTlzg+d/Hjl3v+e87tj0nqSlPqBB9TaKjavJnTKIAcR7PfAw+hxr5amV48/taeevNnvkC1Ean9qmyfvWCApmWPhK2RUQF45nHe5HzeMHA4HOomD9+lqV33Q47gq+xlZ+FbfTq3g6GW16GD+kF2yIi4/Q83mrO4wUNg8/Ben5YXQ5ecD7sFN52Xn6ZdPiiVq7tB/XvCsMtL927tM7VDhEZw3m80GDwOZz+Fx/qHL7mVKyQa9tRw/rAcDuTdavmS0pSTK52iChvnMcLLQafw7X89kvZdM3VsJN4yypSOFeHmThuCAy4M5k/e2KO7Ykob//N410B+6VRp+bx4n7jPJ4RDD4XGPb6y7Cz+Fpd9kZp8fN/q6fMmDIaBtyZTBg7KMd+iejMBr7NebxwYfC5QNRfv8rie+6CHcfXhEpPnd5uwZxJMODOZEDfzjn2S0S5cR4v/Bh8LtGtZg3ZX+Ii2Im87b70Eulc+yPPNsuWzIABdyYd2ibl2i8RncR5POtg8LnI5Kcfhx3J1/wK5SU2+m/Pwyoo4JDlS2ZKXPPGcL9EbsZ5POth8LlIyg9fy/rrr4Wdypv+CWZMjWow4M5kxtTRcJ9EbmbqPN43nMczC4PPZQa/VUWyzzoLdjBvW269WTZPGgFDDhk5rA/cH5EbmTGPd/z0PN4HcB/kPwafC+nOhDqar331voAhh/Ts1hbui8hNOI9nDww+F+r86Yey59JLYIfzllWmtGzv2gYGna+WKbFwX0RucGoebxvn8WyBwedSE597CnY8Xwdff0XWr5wHw+6UhfPSJapJQ7gfIqfjPJ79MPhcqsVP38iam26AndDX7qZ/wMA7ZdL4IXAfRE6mXxEybR7vE87jhRKDz8X0CvBZhQvDDuntSIXysnnsYBh6ml7MGrVP5EQn5/EelgOcx7MtBp/LzX3gPtgpfe3/8hMYelqn9imwbSIn4TyeczD4XK7j5zVl5+UlYQf1dvzyy2R7h9yFaVctmy2JcU1h20ROYd483qOcx7MABh/JuBeehR3V16FXXpANS2fmCL5Z08fCNomcgPN4zsTgI0n45XtZeUtZ2Gl97f7z1xzBN3pEP9gmkZ21rst5PCdj8JFHv+pvydFiRWHn9Xb07jtliwq7U8HXu0d72B6RHXEezx0YfHTarIcegJ3Y1/5PPzodfK3T4mFbRHZjxjzefs7j2QKDj05r99Wnsv3KUrBDeztx8cWyo3ULWbJgikRHNoJtEdlFt5rvcx7PZRh8lMPolyrBju3r0AvPyjQuTE02Zuo8XjXO49kJg49yiP1ffdlm8CfPxZ9+CNsgsjLz5vFKcx7Pphh8lMvCP3+VExeXgJ3d255rr5Z2dWrDNoisiPN4pDH4KJep6SNk/ycfwk7va9bDD8A2iKzk1DxeNufxSGHwUS5zZ473vLJwtNydcADwdqR4MelXvSpshyjcOI9HCIOPclm6cJrnVQX9sjoaBHytvPVmz7wJaosoHOJ/4TwenRmDj3KIjmoka1bM9QTfhiUz5dDLL8ABwde4ys/C9ohCjfN4lB8GH+XQIj7q9Mvp2vb2qXLcwCLWOy+/TDp8UQu2SRQK/83jnQXvUSM4j+cODD7KQa/E4h182n4VaGiQ8DWnYgXYJlEwcR6PCorBRzl0AqWHNo8dJEfUv4LRYOEtq0hhLshLIWPWPN4WPY/3Mufx3ITBRzn06t4uV/Bpu5s2hIOGr9Vlb5QWP38L2yYyi2nzeE9yHs+NGHyUw6D+XWHwrV8xVw6+/jIcQHxNqPQUbJsoUJzHIzMw+CiHUcP64OBTtndpLVmlr4SDibfdl14inWt/BNsn8odZ83i67iTn8YjBRzlMHDcEht4p21SgoQHF1/wK5WH7RAWhiyRzHo/MxuCjHGZMGQ0D75TpXdvI+huug4OLN7001OC3qsB9EBnBeTwKFgYf5bBgziQYeKcM6NPZE2jZZ+U/x7JOBWTKj3XhfojO5PQ8noF77Ew4j0d5YfBRDsuWzICBd0r7tkmev5tfIf/XG7T0Z57ItQ8ihPN4FCoMPjotNvpvWbdqPgw8bfmSmRLXvLHnb/XDK3suvQQOPN72lbhIutWqkWtfRKdwHo9CjcFHp6W0iIaBd4qe//P++wnPPQUHIF+LypeTyL9/y7EtkXZyHu9GeN8YxXk8KigGH53WtnUiDLxTRg7tk+PvW/z8jawpa2zQGvb6Kzm2JXfjPB6FE4OPTuvaqSUMvFN6dmubaxu9RFlW4cJwYPK28dqrJe27r3JtT+7ShvN4ZAEMPjqtb68OMPBOSUuJhdvNrXgfHJx86Z+j0PbkfObP4/0I90NkBIOPThsysAcMPG3h3HSJbNIQbqfLEemyRGig8qb/ld/jo+qwDXIuzuOR1TD46LQxI/vD0NMmjRsCtzll3AvPwgHL19Jyd0h0owawDXIWs+bx9KsznMcjMzH46LTJE4bB0NP04tVom1Pif/1eVt5aFg5evka8+iJsg5yB83hkdQw+Om329LEw9LRO7VPgNt76Va8qR4oVg4OYty1XlZHW9T6HbZB9nZzHe47zeGR5DD46bdH8yTD0Vv4zWxLimsJtfM16+AE4mPma/thDcHuyJ87jkZ0w+MgjqklDFXCzYPDNmjYWboO0q/OpbLsy/3/xHz7vXOldoxpsg+yju2nzeOU5j0chw+Ajj/jYJjD0tNEj+sFtzmT0S8/DAc7Xsjtuldjf68M2yNpOz+NdEOA83q16Hu9NuA+iYGHwkUdacnMYelrvHu3hNmeiw0yHGhrofOmQRG2QNXEej5yAwUceHdomw9DTWqfFw23yon/GPHzuuXDQ86Z/FtU/j6I2yFo4j0dOweAjjx66wCwIvcXzp0izyEZwm/zoB1jQ4OdLPxCDtidr4DweOQ2Djzz69+kMg2/yxGHw743Qryxsuao0HAi9HSlezPMqBGqDwqdN3c84j0eOxOAjj+FDesHgGzKwO/x7o/TL6mgw9LXy1ps9L8GjNii0Ts/jGXg6Ny+cxyOrYvCRx/jRA2HwdemYBv/eKL08mV6mDA2MvvSyZ6gNCh2z5vGmcB6PLIzBRx5T00fkCr3VK+ZKUkIU/PuC0AtTG/m5TC90rRe8Rm1QcHEej9yEwUcec2eNzxV8c2aOh3/rD/0kHxosfc2tWAFuT8HBeTxyIwYfeSxdOC1X8I0dNQD+rT90EVpdjBYNmt6yihT2FLdFbZB5TJvHu4rzeGQ/DD6S6KhGsmbF3FzB17dXR/j3/hr2+itw8PS1puyN0uLnb2EbFLhBpszjXcR5PLItBh9Ji/ioXKGntW2VCP/eX5F//yaLypeDA6mvCZWegm2Q/ziPR3QSg488K7P4ht7SRdOkebO/4N8HomutGrKvxEVwUPW259JLpHPtj2AbVDCcxyPKicFH0qlDaq7g0095or81Q/ozT8CB1Zf+ZoG2J2M4j0eEMfhIenVvlyv4hg3uCf/WDMk/1pV1N1wHB1lv2WefLYPfqgLboLx55vHKBjiPp76Zcx6PnIjBRzKof9dcwdetcyv4t2bRgaaDDQ243nRApqigRG1QbpzHI8ofg49k1LA+OUJv3ar5ktIiGv6tmfTgigZeX/qnUbQ9/ee/ebzz4Tk0ivN45AYMPpKJ44bkCL55syfCvzObfnhl96WXwAHYm34YplutGrANt9PzeGNNmscbxXk8cgkGH8mMKaNzBN/4MYPg3wXDhEpPw4HYl34NIvKv32AbbsV5PCL/MPhIFsyZlCP4dIki9HfBoF9UNzp4D3v9ZdiG23jm8cpzHo/IXww+kmVLZuQIvvZtkuDfBYteokwvVYYGaG96yTO99Blqww04j0dkDgafy8VG/+15mOVU6C1XIRgX0xj+bTDNqVgBDtK+9GLXaHsn4zwekbkYfC6nn970/rY3Y8oo+HfBpssR6bJEaMD2plcf0WWOUBtOxHk8IvMx+FyubevEHME3Ymhv+HehMLbys3Dg9qUL2+oCt6gNpzg5j1cusHm8wpzHI0IYfC7XtVPLHMHXo2sb+HehEP/rD7Ly1pvhIO5rxKsvwjbszjOP9xjn8YiCicHncn17dcgRfGnJzeHfhUrf96rKkeLF4GDubctVZaR1vc9hG3bEeTyi0GHwudyQgT1Oh97CuekS2fh3+HehNOvhinBQ9zX9sYfg9nbDeTyi0GLwudyYkf1PB9+kcUPg34Ra2zq1ZVvp/L/5HD7vXOldoxpsww44j0cUHgw+l5s8Ydjp4BvYryv8m3DQZXDQQO9r2R23Suzv9WEbVmXmPF5/zuMRFRiDz+VmTx97Ovg6tkuBfxMOzX//SYXabXDA9zX6pedhG1bDeTwia2Dwudyi+ZM9obfyn1mSENcU/k249P6gmhw671w4+HvTQdKuzqewDasY9PZrJs7jfQn3QUTGMPhcLKpJQ0/g6eCbNW0M/Jtw0w+woBDwNevhB+D24cZ5PCLrYfC5WEJsk9M/c44e3hf+Tbi1rveFbL66DAwEb/oViH7Vq8I2wkHP403nPB6RJTH4XCwtpfnp4OvVvR38GysYUeVFGAq+9Mvv8b9+D9sIFc88XmWz5vFe4DweURAw+FysQ9vk08HXKi0O/o0VNGvUQJaUuxMGhK9xLzwL2wgFzuMR2QODz8X08mQ69BbPnyLNIv+Af2MVPT5+Tw5ceAEMC296oWu94DVqI1j0PJ4ulMt5PCJ7YPC5mC44q4NPv8uH/rvV6G9CKDR8za14H9zebJzHI7InBp+LDR/SyxN8QwZ0h//danQR2o3XXQPDw5suaquL26I2zJDwy3ecxyOyMQafi40fPdATfJ07psH/bkVD33gFhoivNWVvlBY/fwPbCATn8Yjsj8HnYlPTR8jq5XOkRUIU/O9WFPn3b5734lCg+Jrw3FOwDX9wHo/IORh8LjZ31gSZM2Mc/G9WpoNj38UlYLh423PpJdK59kewDaPMm8e7mfN4RBbB4HOxpQunydiR/eF/s7pJzzwBA8aX/oaFts8P5/GInIvB52J6fq9Pz/bwv1ld8o91Zd2N18Ow8ZZ99tky+K0qsI0zGVSV83hETsbgc6mE2Kae4At3xfVA6IA6oYINBY+3dTdcJykqKFEb3syZxyvs+ZbZhfN4RJbF4HOplqmxngdb0H+zEx0yKIB8pT/zBNxe4zwekbsw+FyqQ7tkmTF1NPxvdtLps49kd8lLYRB521fiIulWq0aObTmPR+RODD6X6tmtrecFdvTf7GZCpadhIPnSP2NG/vWbZxv9M6l+1w/9nVGcxyOyJwafSw3u3006d7DPi+t5Sfz5W1l9s7EQm/HIg5zHI3I5Bp9LjR7RT2Jj/ob/zY4GVHtTjhUpAoPK2/FCheD/bxTn8Yjsj8HnUkMH9YT/v53NqVgBhpUZDp5/vgx7/WWJ+utXuG8isg8Gn0vZ9f29vHT4spbsKHUZDC5/ZRUuLNMef0Ri/8cHV4icgsHnUp3ap8D/3+6MVms3Ytmdt3kqQqD9EJF9MfhcKjmxGfz/7S7+1x9kxW03wyAzatuVpbiQNJGDMfhcKrJJQ/j/O0HHz2vCQMsP5/GI3IHBR4607I7bYLghnMcjchcGHzlS269rG3p1gfN4RO7D4CPH0suRobDT9l5cgvN4RC7F4CNHG/lqZTlatOjpwDtWtIjMeqQi5/GIXIzBR64Q3aiBJDb4Fv43InIXBh8REbkKg4+IiFyFwUdERK7C4CMiIldh8BERkasw+IiIyEX+J/8HCzWnVb+aPOsAAAAASUVORK5CYII=\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":52343,"title":"ICFP2021 Hole-In-Wall: Solve Score=0, where number of Figure Vertices = Hole Vertices + 1","description":"The ICFP held its annual 3-day contest in July 2021 with Hole-In-Wall. Contest Specification.\r\nThe contest folds the figure in Red to fit within the hole shown in light grey \r\nThis Challenge is to solve ICFP problems 12, 15, 20, 25, 26, and 39 according to the Specification when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. ICFP problem 47 is of this form but with 10 hole vertices a brute force method may take 180 seconds so this will be a separate challenge.\r\nValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u003c= epsilon/1000000.  Lsqr is length squared.\r\nScore is sum of minimum square distances to the figure from each unique hole vertex. \r\nnpxy=Solve_nPeqnH1(hxy, pxy, mseg, epsilon)  \r\nThis challenge set all have optimal Scores of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one.\r\nThe function template includes routines to read ICFP problem files and to write ICFP solution files.\r\nThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use Register Team. Anyone can select Problems Page and then click problem numbers to see the puzzles and to download problem files.","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: 672px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 336px; transform-origin: 407px 336px; 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: 14px 8.05px; transform-origin: 14px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.icfpconference.org/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eICFP\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 146.65px 8.05px; transform-origin: 146.65px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e held its annual 3-day contest in July 2021 with \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eHole-In-Wall\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 29.95px 8.05px; transform-origin: 29.95px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Contest \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 8.05px; transform-origin: 1.95px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 201px; 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 100.5px; text-align: left; transform-origin: 384px 100.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: 230.267px 8.05px; transform-origin: 230.267px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe contest folds the figure in Red to fit within the hole shown in light grey \u003c/span\u003e\u003c/span\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: middle;width: 208px;height: 201px\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\" width=\"208\" height=\"201\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 147px; 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 73.5px; text-align: left; transform-origin: 384px 73.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: 263.717px 8.05px; transform-origin: 263.717px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to solve ICFP problems 12, 15, 20, 25, 26, and 39 according to the \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 66.1333px 8.05px; transform-origin: 66.1333px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. ICFP problem 47 is of this form but with 10 hole vertices a brute force method may take 180 seconds so this will be a separate challenge.\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: 384px 8.05px; transform-origin: 384px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/52308\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eScore\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250.1px 8.05px; transform-origin: 250.1px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e is sum of minimum square distances to the figure from each unique hole vertex. \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: 155.5px 8.05px; transform-origin: 155.5px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003enpxy=Solve_nPeqnH1(hxy, pxy, mseg, epsilon)\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: 3.88333px 8.05px; transform-origin: 3.88333px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e  \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: 383.017px 8.05px; transform-origin: 383.017px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis challenge set all have optimal Scores of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one.\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: 303.4px 8.05px; transform-origin: 303.4px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; 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 42px; text-align: left; transform-origin: 384px 42px; 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: 375.883px 8.05px; transform-origin: 375.883px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/register\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eRegister Team\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42.7833px 8.05px; transform-origin: 42.7833px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Anyone can select \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/problems\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblems Page\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 256.35px 8.05px; transform-origin: 256.35px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e and then click problem numbers to see the puzzles and to download problem files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function npxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon)\r\n%nH+1 equals nP and Score =0 optimally, nH is before repeating row 1\r\n%Create all nchoosek index set of np then try all permutations.\r\n%Check that all segments created have valid lengths\r\n%Create final point placement based upon segment constraints until sequence passes\r\n% npxy(pnckset(i),:)= hxy(1:end-1,:), width of pnckset is nP-1 so one node is TBD\r\n npxy=pxy;\r\n nseg=size(mseg,1);\r\n msegMM=calc_msegMM(pxy,mseg,epsilon,nseg); %Create Min and Max segment integer values\r\n \r\n hxy1=hxy(1:end-1,:); % speed up method\r\n np=size(npxy,1);\r\n vpn=zeros(np,1);\r\n % Note:  ***  Indicates line was changed from working program\r\n pnchk=nchoosek(1,1); % ***     Create nchoosek matrix of 1:np of np-1 points\r\n mperms=perms(1:np-1); % fast repetitve perms method, create a mapping array\r\n Lpnchk=size(pnchk,1);\r\n for ipnchk=1:Lpnchk % subset of figure vertices to place onto hole vertices\r\n  vpnchk=pnchk(ipnchk,:); % create a vector to use in perm set matrix\r\n  phset=vpnchk(mperms); % fast phset creation using perms matrix\r\n  nphset=size(phset,1);\r\n \r\n  for i=1:nphset %  This is the large loop over permutations\r\n   npxy=npxy*0; \r\n   vphset=phset(i,:); \r\n   npxy(vphset,:)=hxy1; % load hole vertices into figure vertex matrix, one row is [0 0] unset\r\n   vpn=0*vpn; \r\n   vpn(vphset)=1; % vpn is vector that indicates used figure vertices\r\n   fail=0;\r\n   for segptr=1:nseg\r\n    if prod(vpn([0 0])) % *** check if both figure vertices were set \r\n     L2seg=sum((npxy(mseg(segptr,1),:)-npxy(mseg(segptr,2),:)).^2);\r\n     if prod([0 0])\u003e0 % *** Verify L2seg is valid length squared\r\n      fail=1; % set flag to try next permutation\r\n      break; % break out of segment L2 checker\r\n     end\r\n    end\r\n   end\r\n   if fail,continue;end %length of subset placed vertices placed on hole vertices failed\r\n   \r\n   %Hole Points covered. Have 1 free point to place constrained by its segments\r\n   node=find(vpn==-1); % ***    Find unset node\r\n  \r\n   cptr=1; % Flag to enable first set of points for a segment containing unset vertex\r\n   for fseg=1:nseg\r\n    if prod(vpn([0 0])),continue;end % ***    Check if Both seg vertices set\r\n    MM=msegMM(fseg,:); % Create [Min Max] vector\r\n    Node2=mseg(fseg,:);\r\n    Node2(1)=[]; % ***  Reduce Node2 to a single value of the set vertex\r\n    \r\n    if cptr==1 % create an initial list of all in range and then inpolygon\r\n     Lmm=ceil(MM(2)^.5);\r\n     dmap=(0:Lmm).^2;\r\n     dmap=repmat(dmap,Lmm+1,1);\r\n     dmap=dmap+dmap'; % Create a 2D map of distance squared from [0,0]. dmap(1,1) is [0,0]\r\n     % This 2D map is of the Positive XY quadrant.  The goal will be to find  all valid [dx dy]\r\n     dmap(1,:)=0; % ***      Remove Points less than Min Seg length\r\n     dmap(1,:)=0; % ***      Remove Points greater than Max Seg length\r\n     [dx,dy]=find(dmap);\r\n     dx=dx-1; dy=dy-1; % remove 1,1 offset from grid\r\n     dxy=[dx dy;dx -dy;-dx dy;-dx -dy];  % Create all valid deltas by symmetry about [0,0]\r\n     mxy=dxy+npxy(Node2,:);  % Create matrix of all points in the valid region\r\n     % remove negatives from hole comparison as hole is all positive\r\n     mxy=mxy(1,:); % ***     Speed option remove all points with neg x values\r\n     mxy=mxy(1,:); % ***     Speed option remove all points with neg y values\r\n     in=inpolygon(mxy(:,1),mxy(:,2),hxy(:,1),hxy(:,2));  % Find all valid in-hole points\r\n     mxy=mxy(1,:); % ***   reduce to in-hole points\r\n     cptr=2; % set flag so next segment check only uses residual mxy points\r\n    else % test points from m for additional new fseg constraint and prune\r\n     Lmxy=size(mxy,1);\r\n     vmxy=ones(Lmxy,1); % Valid mxy vector\r\n     for ptrmxy=1:Lmxy\r\n      d2=sum(([0 0]).^2);  % *** Calc dist squared from mxy to Node2\r\n      if d2\u003cMM(1),vmxy(ptrmxy)=0;end % clear vmxy for too short\r\n      if d2\u003eMM(2),vmxy(ptrmxy)=0;end % clear vmxy for too long\r\n     end\r\n     mxy=mxy(vmxy\u003e0,:);\r\n     if isempty(mxy)    %If no points left in mxy then vertex could not reach from set nodes\r\n      fail=1;\r\n      break;\r\n     end\r\n    end % cptr==1\r\n   end % fseg 1:nseg\r\n   if fail,continue;end  % Try next permutation\r\n   \r\n   npxy(node,:)=mxy(1,:); % solution found\r\n   fprintf('Solution found\\n');\r\n   return;\r\n  end % i nhpset\r\n end %ipnchk Lpnchk\r\n \r\n fprintf('No solution found\\n');\r\nend %Solve_nPeqnH1\r\n\r\nfunction msegMM=calc_msegMM(pxy,mseg,epsilon,nseg)\r\n%determine Min and Max integer value of allowed length squared for each segment\r\n%abs(Lsqr(npxy,seg(i))/Lsqr(pxy,seg(i))-1)\u003c= epsilon/1000000.\r\n%mseg has indices of connected vertices [nseg,2].  The nseg may exceed number of vertices.\r\n msegMM=zeros(nseg,2);\r\n for i=1:nseg\r\n  Lseg=sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n  delta=floor(epsilon*Lseg/1000000);\r\n  msegMM(i,:)=[-delta delta]+Lseg;\r\n end\r\nend % calc_msegMM\r\n\r\n\r\n%These routines can be used to read ICFP problems, write ICFP text file, and visualize the data\r\n\r\n% function [epsilon,hxy,pxy,mseg]=read_problem(pid)\r\n%  fid=fopen([num2str(pid) '.problem'],'r');\r\n%   pstr=fgetl(fid);\r\n%  fclose(fid)\r\n%  \r\n%  Lpstr=length(pstr);\r\n%  holidx=findstr('\"hole\":[[',pstr); %starting location match\r\n%  epsidx=findstr('\"epsilon\":',pstr);\r\n%  figidx=findstr(',\"figure\"',pstr);\r\n%  edgidx=findstr('\"edges\":[[',pstr);\r\n%  veridx=findstr('\"vertices\":[[',pstr);\r\n%  epsilon=str2num(pstr(epsidx+10:figidx-1));\r\n%  \r\n%  hxy=reshape(str2num(pstr(holidx+8:epsidx-3)),2,[])';\r\n%  hxy=[hxy;hxy(1,:)]; %repeat row1 to close path\r\n%  \r\n%  pxy=reshape(str2num(pstr(veridx+12:Lpstr-3)),2,[])';\r\n%  \r\n%  mseg=reshape(str2num(pstr(edgidx+9:veridx-3)),2,[])'+1;\r\n% end % read_problem\r\n\r\n% function write_submission(npxy,pid)\r\n%  fname=['Solution_' num2str(pid) '_' datestr(now,'yyyymmdd_HHMMSS') '.txt'];\r\n%  fid=fopen(fname,'wt'); % t for notepad editing\r\n%  \r\n%  %Create ICFP submission\r\n%  fprintf('{\"vertices\": [');\r\n%  fprintf(fid,'{\"vertices\": [');\r\n%  for i=1:size(npxy,1)-1 \r\n%   fprintf('[%i,%i],',npxy(i,:));\r\n%   fprintf(fid,'[%i,%i],',npxy(i,:));\r\n%  end \r\n%  fprintf('[%i,%i]]}\\n',npxy(end,:));\r\n%  fprintf(fid,'[%i,%i]]}\\n',npxy(end,:));\r\n%  fclose(fid);\r\n% end\r\n\r\n\r\n% function hplot(vxy,qxy,mseg,Lmseg,id)\r\n% %Need check of segment crossing a hole segment but ignore endpoint\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1)%length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i),'FontSize',12);\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    if in(mseg(i,1))+in(mseg(i,2))\u003c2\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment to OOB pt\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-')\r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%    \r\n%   axis tight\r\n%   axis ij\r\n%   hold off  \r\n% end % hplot\r\n\r\n% function hplot3(vxy,qxy,mseg,Lmseg,id,segMM)\r\n%  segMNM=[segMM(:,1) segMM(:,1)+segMM(:,2) segMM(:,2)];\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1) %length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i));\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    d2seg=(qxy(mseg(i,1),1)-qxy(mseg(i,2),1))^2+(qxy(mseg(i,1),2)-qxy(mseg(i,2),2))^2;\r\n%    if d2seg\u003csegMNM(i,1)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-') % segment too short\r\n%    elseif d2seg\u003esegMNM(i,3)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment too long\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'g-') \r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%   \r\n%   axis tight\r\n%   axis ij\r\n%   hold off\r\n% end % hplot3","test_suite":"%%\r\ntic\r\n% ICFP Problem Id 12\r\nepsilon=0;\r\nhxy=[28 0;56 4;0 4;28 0];\r\npxy=[0 20;20 0;20 40;40 20];\r\nmseg=[1 2;1 3;2 4;3 4];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 15\r\nepsilon=1250;\r\nhxy=[15 0;35 20;20 44;0 24;15 0];\r\npxy=[0 20;20 0;20 40;40 20;49 45];\r\nmseg=[1 2;1 3;2 4;3 4;3 5;4 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 20\r\n% nh 5  np 6\r\nepsilon=4757;\r\nhxy=[20 0;62 39;41 56;20 40;0 20;20 0];\r\npxy=[20 12;0 32;46 1;26 21;67 17;46 0];\r\nmseg=[1 2;1 3;2 4;3 4;3 5;4 6;5 6];\r\n\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 25\r\n% nh 6  np 7\r\nepsilon=16310;\r\nhxy=[0 20;28 0;55 61;40 96;7 91;0 54;0 20];\r\npxy=[18 2;52 0;16 11;0 31;37 31;47 24;14 5];\r\nmseg=[1 2;1 4;1 5;2 3;2 5;3 6;4 5;5 7;6 7];\r\n\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 26\r\nepsilon=15671;\r\nhxy=[17 17;46 0;76 17;80 51;26 65;0 46;17 17];\r\npxy=[64 0;34 15;53 30;53 43;19 45;34 14;0 12];\r\nmseg=[1 2;1 3;2 4;2 5;3 5;3 7;4 5;4 6;5 6;5 7;6 7];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 39\r\nepsilon=20037;\r\nhxy=[5 7;39 0;59 33;56 76;45 110;6 111;0 73;0 39;5 7];\r\npxy=[4 8;6 42;23 34;37 19;35 23;16 0;5 42;38 56;0 35];\r\nmseg=[1 2;1 3;1 5;2 4;2 5;3 6;4 7;5 8;5 9;6 9;7 8;8 9];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 47  75% of hole edges not covered in solution. All hole vertices covered.\r\n% possible method force longest fig segment onto pair hole vertices then perms\r\n% brute force processing will take 180 seconds so not part of this cody challenge\r\nepsilon=41323;\r\nhxy=[6 14;36 19;40 17;69 0;79 21;41 36;36 33;16 44;7 34;0 28;6 14];\r\npxy=[0 11;1 85;8 56;11 0;14 45;14 59;14 88;30 37;30 56;56 85;67 64];\r\nmseg=[1 4;4 8;8 5;5 1;8 11;11 10;10 9;9 8;5 6;6 9;9 7;7 2;2 6;6 3;3 5];\r\ntoc","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":2,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2021-07-21T13:12:20.000Z","updated_at":"2021-07-21T19:14:23.000Z","published_at":"2021-07-21T19:14: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 \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.icfpconference.org/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eICFP\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e held its annual 3-day contest in July 2021 with \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHole-In-Wall\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Contest \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe contest folds the figure in Red to fit within the hole shown in light grey \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"201\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"208\\\"/\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\u003eThis Challenge is to solve ICFP problems 12, 15, 20, 25, 26, and 39 according to the \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. ICFP problem 47 is of this form but with 10 hole vertices a brute force method may take 180 seconds so this will be a separate challenge.\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\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/52308\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eScore\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is sum of minimum square distances to the figure from each unique hole vertex. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enpxy=Solve_nPeqnH1(hxy, pxy, mseg, epsilon)\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\u003eThis challenge set all have optimal Scores of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/register\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eRegister Team\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Anyone can select \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/problems\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblems Page\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and then click problem numbers to see the puzzles and to download problem files.\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,iVBORw0KGgoAAAANSUhEUgAAAaAAAAGRCAYAAAAjEGdRAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAADwuSURBVHhe7d15vFVj///xUCmNKKGQSEUyRVGqO4TMlZRonmhAiMTXnbHTPA9I1E0KlaEyJJQxyZhGp9OZOvPQmcfPd1/7WNpn9zl777X3Gq5rrfcfz8fv9/jeXfvsvfZa62Wdc11rVXv5xWcIAADAaggQAADYAgECAABbIEAAAGALBAgAAGyBAAEAgC0QIAAAsAUCBAAAtkCAAADAFggQAADYAgECAABbIEAAAGALBAgAAGyBAAEAgC0QIAAAsAUCBAAAtkCAAADAFggQAADYAgECAABbIEAgrelTJtG6fr3px84dac3A/uy/AQB1IUAgpbX9+1BJjepE1ar9K7duHXpt/Ej23wOAehAgkM76e3pR6QknVIqPpvDEE2nxo+PYcQCgFgQIpLJy5OAq46PJbtiA5k16hB0PAOpAgFxu1owX2P+7HUR8imrWZKPjL61xI0QIQHEIkMvt+OEL+mzje+z/ZqX3BvSlpDOasLGpCiIEoDYEyMXWrnmTDv39m9emj9fQtJf/y/47s+m58vGHCAGoCwFyqaWLZtGvO77+N0B2RSiS+GgQIQA1IUAu9fknayvFx44IVfza7XQ2KnodatGc3ho+kP05ACAnBMiFVv3vVYret5MNkGBFhML5m08wiBCAWhAgl5k3eyr9+N3nbHh8mRkhPVc+BbVq0d8tz2P/Nw4iBKAOBMhlPv7gHTY4nE0fGR8hPVc+Ij6f39LDO25b9y7sv+EgQgBqQIBc5I1lC2j3Hz+wsamKkRHSe+WjxUeDCAE4CwLkEtOjptDWLzewkQnGiAiFe+XjDxECcA4EyCXWvnt0zU84IolQpFc+/hAhAGdAgFzAu+bn58prfsIRToSMuvLxhwgBqA8BcoGq1vyEQ0+EjL7y8YcIAagNAXK4YGt+whFKhMy68vGHCAGoCwFysFDX/IQjUITMvvLxpydCMZ4I/Q8RApACAuRgG3Ss+QkHFyGrrnz8IUIA6kGAHCqcNT/h8I2Q1Vc+/hAhALUgQA4UyZqfcIgIrbu/ny1XPv4QIQB1IEAOFOmaH71SlsyhbM/JnDvJ+zMzPhpECEANCJDDGLXmJ1QiPkVtWrEnd39WxEeDCAHIDwFymM0GrvkJxhufC+WLjwYRApAbAuQgZqz5qYqsVz7+ECEAeSFADmHmmh9/sl/5+EOEAOSEADmE2Wt+NHqufIrr1KEvbr2Jfb+WegERApARAuQAbyxbaMmaHz1XPmX161HG0xNp40erKSrEe8eZKpwIjUCEAMyEAClOrPnZZsGaHz1XPlp8tLFqR2gQ/1oAEDEESHFWrPkJ58rH/zXkidDTiBCAJBAghVWs+dl6zMneSJFc+fiTKULfIEIAtkOAFGb2mh8jrnz8yRKhqYgQgO0QIEWZvebHyCsff4gQAAgIkILmzTF3zY8ZVz7+ECEAQIAUtOFD89b8mHnl4w8RAnA3BEgx3jU/f5qz5seKKx9/iBCAeyFACjFzzY+VVz7+ECEAd0KAFGLWmh8746NBhADcBwFShFlrfmSIjwYRAnAXBEgRZqz5kSk+mooIPctuAyshQgDmQ4AUYMaaHxnjo0GEANwBAZKcWPOz3eA1PzLHR4MIATgfAiQ5o9f8qBAfDSIE4GwIkMSMXvOjUnw0iBCAcyFAkjJ6zY+K8dEgQgDOhABJau27K9iTcThUjo8GEQJwHgRIQmLNz28GrflxQnw0ykboPEQIgIMAScioNT9Oio8GEQJwDgRIMhVrfn5hT756ODE+GkQIwBkQIIkYtebHyfHRSBWh/+iJ0LmIEMA/ECCJGLHmxw3x0SBCAGpDgCRhxJofN8VHI1eErmW3NQcRAkCApGDEmh83xkeDCAGoCQGSQKRrftwcHw0iBKAeBMhmSxdHtuYH8TkKEQJQCwJks82fhr/mB/E5FiIEoA4EyEbeNT/7w1vzg/hUDRECUAMCZJNI1vwgPsEhQgDyQ4BsEu6aH8QndN4IvYQIAcgKAbKBWPOzJ4w1P4iPfogQgLwQIIuFu+YH8QkfIgQgJwTIYuGs+UF8IocIAcgHAbJQOGt+EB/jqBqhg54IrUSEwIEQIAtt/nQde2KsCuJjPEQIQB4IkEXEmp+DOtb8ID7mQYQA5IAAWUDvmh/Ex3yIEID9ECAL6Fnzg/hYR5oIPY8IgTshQCbTs+YH8bGe0hEaiQiB2hAgE82Iei7kNT+Ij302fogIAdgBATJRqGt+EB/7IUIA1kOATBLqmh/ERx6IEIC1ECCThLLmB/GRjzwRmhxGhAazrwUgKwTIBKGs+UF85IUIAVgDATJYKGt+EB/5IUIA5kOADBZszQ/iow5ECMBcCJCB3ng98JofxEc9skQoyhOhbxEhcBgEyCDB1vwgPupChADMgQAZJNCaH8RHfYgQgPEQIAMsXTy7yjU/iI9zIEIAxkKADFDVmh/Ex3kQIQDjIEARqmrND+LjXIgQgDEQoAjM96752XzMCQrxcb4NiBBAxBCgCHBrfhAf90CEACKDAIWJW/OD+LiPiNBURAggLAhQGLxrfr6qvOYH8XEvRAggPAhQGPzX/IQbn7+jf6dNcftocVIMPZZ+mG7LyaSOBTl0YVE+NSspOsaVBbnUOT+HBmSn0bNpCbTicDT9cOivSu8F7KFshM5HhMA+CJBOr/it+dEbnz3/fcobj655R6hOWRl5/peIiTj1OZJBM1NiESQbIUIA+iBAOvmu+dETn/wG9WnW9Cg2IEaqV1ZKPXOz6KXUeNoWu7vSCRLMJyamIEIAoUGAdPBd86MnPpkNG9LDs2ezwTCTuMIampVKO2J2HXOiBPNIFaFuiBDICwEKke+aHxXi4+u84kKakJFEW3FFZBlECCA4BChE2pof1eLj69LCPO/fn37BFZEl1I1QC0QILIEAheBN75qfH5WOj69r8494JywciP6dPXGCcRAhgKohQEFoa36cEh9fg7LT6NtD+LWc2RAhAB4CFIRY8+PE+GjEjLl1CfvZEycYR64IdfZ8+Z5vPwSIEJgJAQpArPk5OPNFx8ZH074gl15JimFPnGAcRAigMgQogN+efdLx8dGcU1xEL6TGsydOMA4iBHAUAlSFrY+McU18NLXLy+ihjCT68+Cf7MkTjIEIAVRAgBgbhg2kvJbnsQehP6fEx9fYzGT2xAnGQYQAEKBjvDegL2Wf25w9+Pw5MT5CzfJyeg6/jjMdIgRuhwD5EPFJP7sZe9D5c2p8NOIGp0swMcF0FRH6P3Z/tBIiBHZAgP4h4pN85unswebP6fHRXF6QR2sxRdt0iBC4FQLkIeKTdEYT9iDz55b4aG7KzaJvsFjVdIgQuJHrA4T4BDcwO432Rf/BnjjBOIgQuI2rA4T4hC4qJY49aYKxECFwE9cGCPHR5+r8HPopBk9btQIiBG7hygAhPuGZnJbInjDBeIgQuIHrAoT4hK9tYT5tid3DnjDBeNJE6Dl9EYpGhCBErgoQ4hO58RlJ7MkSzKFyhFaMQoQgMNcECPExhrhp6fp4rA2yEiIETuWKACE+xup3JJ09UYJ5ECFwIscHCPExXpOSYtoct5c9UYJ5ECFwGkcHSE98chs0QHx0+G9aAnuSBHMhQuAkjg2QnvgU169Pk2bNYk+0wLsuL5s9QYL5ECFwCkcGSE98yurXo00vTmFPshDY17G4R5xd1I7QEPa1wH0cFyC98cl4eiLdnJvFnmAhsCn4NZytvBF6UYYIPYUIQVgcFaBw4rMzZhc1LSliT7AQWO8jGeyJEayDCIHKHBOgcOIjDuA3D0ezJ1cI7oKiAtqLu2TbDhECVTkiQOHGRxD3N/P8LxAm3JpHDogQqEj5AEUSH6HPkQz2xAqhmZt8qNL2BPsgQqAapQMUaXyEqwpy2RMrhGYC7g0nFVkiNM0Toe8QIQhC2QAZEZ990b97V/V7/hWESVxB+m9XsBciBKpQMkBGxEf44dBf7EkVQteuMJ/dtmAvRAhUoFyAjIqP8EncXvakCqE7v7iQ3bZgP0QIZKdUgHTFp17g+AhrE/azJ1UIXdOSYnbbghwQIZCZMgHSE5+SunWCxkd4K/Fv9qQKoTu5tITdtiAPRAhkpUSA9MSnuM5JIcVHWJ14gD2pgj7ctgW5IEIgI+kDpCc+RbVrU8Jj49gDkPMG7oIQsXplpey2Bfls+AARArlIHSA98SmoVYv2jR7KHnhVWZOAK6BInVaKvwGpRNkItUSEnEjaAOmNz877+9HB/b+wB11VPo7fx55UIXTNi4vYbQvyQoRAFlIGSG98tt51G23/fjN7sAXy7aHd7EkVQocAqUmqCHVFhNxKugDpjc/nt/SgjR+uZg+yYH6O2UW1y8vYEyuEpkcunoyqKkQI7CZVgMKJz5uvL6Q9f/7IHmChaFVUwJ5YITTDs1LY7QpqQITATtIEKJz4zJj2HG37aiN7YIXqhrxs9sQKoXkuNZ7drqAORAjsIkWAwomPGLfuvRXsAaXH0KxU9sQKoRFrqbjtCmpBhMAOtgco3Pi8sng2/bZzK3sw6TEtJY49sUJwDcpKaWvsbna7gnrUjdB5iJCibA1QuPERvvh0HXsQ6SVuSFqzvJw9wUJgXfKPsNsU1IUIgZVsC1Ak8Xnnrdd0r/kJpD0eSheWsZnJ7PYEtSFCYBVbAhRJfObPiQprzU8gA7LT2BMsBCZu5sptT1Dfx1JFqJNnh/PscSFAhNRieYAiiY8Q7pqfQF5JimFPsFC1NkUFtDNmF7s9wRkQITCbpQGKND6Rrvmpyl8H/6DLC/LYEy3wRmD9jysgQmAmywIUaXzEmp9vIlzzE8j4jCT2RAu8FYej2e0IziMi9DIiBCawJECRxkcwYs1PIOK+cNUxGy4kFxbls9sQnAsRAjOYHiAj4lOx5mcbe2AYaRAmI4RkZkosu/3A2RAhMJqpATIiPoJRa36CWZuwn5qVFLEnXajQMzeLDkT/zm4/cD5ECIxkWoCMio/Ra36CGZOZzJ54gejE8nJamhTDbjdwD0QIjGJKgIyKz/y5UfSTwWt+gvksbi+1xh2yWX2PpLPbDNwHEQIjGB4go+IjbPzI+DU/oXgi/TB7AnazU0tLsPAUKpEmQlMQIVUZGiAj4/Pm64tozy7j1/yE4rtDu3F7Hj/iruHctgJ3UzpCoxEhuxkWICPjY/aan1AsSD7Enojd6BTP1c8O3PUAqvDxB6s8xy0iBPoZEiAj4yOYveYnVA9iQgI19sRnrifG3PYB0CBCEI6IA2R0fKxa8xOKXz3/1d/nSAZ7YnaLyWmJ7LYB8KdqhP5GhGwTUYCMjo9g1ZqfUIlZceK5N55P4Trifm8xzDYBqIrKEXoTEbJc2AEyIz5Wr/kJ1f8So713f/Z8Gte4IyeTfor5i90eAIEgQhCqsAJkRnzsWPOjx6yUWO9UZM+ncryr83NoQ/w+djsAhAIRglDoDpAZ8RHsWvOjx0up8Y6/YamYdLAldg/7+QH0QIQgGF0BMis+dq750WuG50qolUN/HXdjbja9l3CA/dwA4UCEIJCQA2RWfGRY86OXeBZO5/wc9iSuqvuy02hr7G728wJEQu0IDWVfC4wRUoDMio+w7r2V7E4ru0/i9lKvHPWnaNctK6MJGUm0O/oP9nMCGEGeCE1ChCQSNEBmxkes+fldkjU/4fg5ZheNzkyh45kTuwpaFBfSy6lx7GcDMBoiBP4CBsjM+AiyrfkJl3hAm7hdjWdLKEM81XRTHGa6gbUQIfBVZYAq4nM6+2X4Cyc+FWt+fmV3UhV9EbeHxmUm09nFcj/QrkNBrnc2366D+JUb2AMRAg0bILPjI/uan0isS9hPg7NS6eTSUjYAdrmwqIAmpSfSD4ewuBTshwiBcEyA1t/Ti47Ur89ufH/hxEdQYc1PpMRMud5HMmxfNyQeMT7Wc2X2edxe9n0C2KUiQvw5wkp6I3SkQX1aOXwg+1qgT6UAre3fh8qPO47d6P7Kjj/e++99x4dCrPnZq8iaHyOIdTX9jqRTnbIyNhBmaV5cRA9nJOExCiA1WSIkbL+mg+fg8Rw9IRDnyWVjR7CvA6H7N0DTPf8VUFKjOrux/YUbHxXX/BhlX/TvNCc5lnrmZlH9MnN+PSeudkTssJgUVKJqhIpr1GBfA0L3b4DW9evNbmR/4cZHUHXNjxnWx++nJ9MPU4/cbO+dFfT+qk5E7LLCPG9wxCy8bw9hESmoS5YIif8Q/75L6L+OW9e/N/s6EJp/A/Rj547sBvZ3oFXLY14kFLNnvkj7d+9gdz6oIO7BtjrxAL2adNAbFX9vJf7tvbrBr9XAiZa/toA9d1gt6vnJlHHqKez5z9+udm3Z14DQ/Bug9wf0ZTcwR1ym+r5IKL74zBlrfgDAeNu+2kAzop5jzx1WEvHZ07YNe97jpDZpzL4OhKbSJITcunXYjczREyHvmp8DzlnzAwDG2fPnj/Tm6wvZc4eV5k16hHZedQV7vquKmIzw9tD72NeD4CoF6I0Hhnn/sMZtaE4oEXLymh8AiNyGD99hzx1W0nvl40tM4eZeE4KrFCDhreEDKTnE2+8I27p3qTTenxvW/ABAeLZ7/uN0/pyp7LnDKuFc+fhKbHYmzXpmIvvaENgxARJEhA6dew67sTlVRchta34AIHTi8fur3nqNPXdYJdL4aN6/92729SEwNkBCpBFy85ofAAhu86frKp0zrGZUfISfO7RnfwYEVmWAhEgihDU/AFCV337e6n0ci+/5xkp645N5ysns/12T3uhUWjjxIfZnQdUCBkgIJ0KvLFH7OT8AYK61765gzzdW0Bufv9pdRJt73sD+b7429Lqd/XlQtaABEvRGKPq+e+gQpl0DAMPONT/hxOeVhx+gOZMfC/qEgD8vwaJUvUIKkKA3QlnjRyNCAFCJnWt+wo2PNv6Ha69m/51GrKN8bfyoSj8TAgs5QAIiBACRsGvNT6TxEVYPvpf9t742h/F4GjfTFSDBG6EWiBAA6GPXmh8j4iOIxarB/gN8f+vw7pXpVroDJCBCAKCHWPMjbsnFnU/MZFR8NF9f340dpympXp1WjhzMjoVjhRUgoSJCzdkvgYMIAbiXHWt+jI6PsGLUECquGfh2Zduu68qOhWOFHSABEQKAYOxY82NGfDT72lzAvoYmtvnZ3sd8c2OhsogCJHw0YSzltr+M/SI4iBCAu1i95sfM+Aif3XoT+zq+1gzsx46FyiIO0Befraekt5dRQccr2S+CgwgBuIPVa37Mjo/w6kMPUE79euzrabZ30v/MNDeKKEDij4ox/4QEEQIAX1av+bEiPpo/LmvHvqYm+fTTaO6kCexYOCrsAHHP+UGEAECz4cPV7LnDDFbGR/iozx3s6/r6oO9d7Fg4KuwAVfWcH90RGjcKEQJwGCvX/FgdH2HBEw9TWuNG7OtrfrviUnYsHBVWgII95wcRAnAvK9f82BEfzY4g57jshg1o6SNj2LFQQXeAZk57PqTn/CStQoQA3MiqNT92xkd4776+7M/x9cntPdmxUEF3gPQ85ydp1euIEICLWLXmx+74CDOffYISzmrK/jzNnovasGOhgq4AhfOcH0RITfGHPqOEQ5sqiYv5mv23AJp1Fqz5kSE+mm+7dWZ/pqawVi1648Fh7FjQGSCx5ofb6YJBhOQUd/AbSkmaQ1kZoykv5yYqKmpF5WUnkedLCKistCEVFrajnCO9KDNtAiUlLqPY6O3szwD3sGLNj0zxEd4adj+VH388+7M1X/bozo4FHQHyXfMTDkRIDsmJS+lI1gBvbDwb2jDl5SdSQUF7b8wS495nfzY4lxVrfmSLjya65Xnsz9ccPO9cdhyEGKAFzJqfcCBC9khOfI2yM4dTUWFbNh7GO54K8q7xXh0djnuXfU/gLGav+ZE1PsKWm65n34OvVUPvY8e6XUgBqmrNTzgQIeskJy6m3CO3e65OajCRsEZpSRNP/AZ7QrSGfY+gPrPX/MgcH+H1MSOooHZt9r1ovuvaiR3rdkED9ObywGt+woEImSspYQUdye7v/VuNZwNKobioBWVljKGE2A3sewY1mb3mR/b4aHZffCH7fjSJzc6kWc9MZMe6WcAAedf8fB18zU84worQfkQoEPG3F/GrtpKSpmwEZFBUeDFlpE2kuJiv2M8AajFzzY8q8RE23XkL+558rb33bnasmwUMkJ41P+FAhAwSvdP795aysnrsSV9GJcVnUcrh+fznASWYueZHpfgIix8dS5knN2Tfm2Znh/bsWDerMkBzZ71M+3fvYHc8I4UXoV/Y13IjcdUj/s7j2TjKETPnsjJGUtzBb9nPBnJ7b/Vy9twRKdXio/k1yHPR0hudQgsfH8+OdasqAzRvzlT6cvOH7I5nNG+ErkaE9EpOfIXy8zqzJ3eV5GT3poRYa/Y1MIZ3zc8049f8qBofYX2/Xux79LWh123sWLcK+Cs4REheaclTqaiwDXtCV1F+XjdKSljOflaQi1lrflSOjzBn8qOUdMbp7HvV7LqkLTvWrQIGSLA+QlexXxzHrRHKSHucSktOY0/kKhMTFFKTZrCfGeSx0YQ1P6rHR/Nj56vZ96vJrVuHXvOct7ixbhQ0QAIiJI/srEHsydspxN+FECF5mbHmxynxEVYPupd9z7429+zBjnWjkAIkIEL2y8p4gD1pO01p6amUlvwiuw3APmas+XFSfISo5yfToXPPYd+75kCrluxYNwo5QAIiZJ/01KepvKw2e8J2ouKiCyg5cQm7LcAeRq/5cVp8NFuv78a+f01J9eq0csQgdqzb6AqQgAhZLzVpNpUUN2NP1E5WkH81JeJeclL4baexa36cGh9hxaghVFyjBvs5NNu6d2HHuo3uAAmIkHXEbXUKCy5hT9BukJtzK8XHbGG3DVhn3XvGPefHyfHR7GtzAftZNHHnnEXTp0xix7pJWAESECHzJcR+THm53dkTs5uIiRfc9lGJWDAsJldkpY/1PntJPLqiqPBCKik58xiFBZd5rv46Uk723d7bFok7RogHBHKva4VtX200bM2PG+IjfH7rjezn8bVmYD92rJuEHSABETKXOFF5Pgx4iL+BcdtIViI4Ih75uf8x7BZJIk7irhdpKc9bFiQj1/y4JT7Cqw+Nppx6ddnPpdneqQM71k0iCpAgdYTGqhuhtOSX2JOQWxUXN6fD8e+w20oWSfErvXf8LizwnGSZz2CksrK6nqvjGzxhfsbUO4wbtebHTfHR/HHpxexn06Q0Oc2zXSawY90i4gAJiJCxxL3R8vOuZU88bnYkayC7vex2OH6V91dm3Hu2gniMunjKbXzMF+z7C1fFmp8o9pjXw43xET7ucwf7+Xx92PcudqxbGBIgAREyTnrqZPZE43alpY0oOfFVdpvZISlxGeUc6U3l5XJMjy8pPsf7SHQj7qtn1Joft8ZHWPDEw5TWuBH7OTW/XXEpO9YtDAuQYGmE3tEboZFKREj8br+w4HL2BAPVPCf8u9jtZqXD8aspO3OQJ4iN2fdoNzG5ISPt0YiuiL4wYM2Pm+Oj2RHkTv/ZDRvQ0kceZMe6gaEBEhChyGSmP8yeVKBCeXktSkmazW47s4m/tWRljKXi4hbse5NNQf6VlJ7yLMVG/8B+nqoYseYH8anw/oC+7Of19entN7Nj3cDwAAnWRmi5YyKUGLeOiopasScTOEr88T02+md2G5ql4tEXndj3Izu9j7uIdM0P4nPUzGefoISzmrKfW7PnotbsWDcwJUACIqSf+P295w1CCFKS5rDb0AxpyS9TUWFr9n2oItTHXXwT4ZofxOdY33brzH52TWGtE+mNB4axY53OtAAJiFDo4mK+Vv4kZ6XcnFvY7Wi0jLTHpP1bj17BHncR6ZofxIf39rD7qfy449htoPmqR3d2rNOZGiABEQpNanIUe9IAXmnpKabeJy4u5ivKzhzi+VnHH/OzVSYWs2akTmI/cyRrfhCfwKLPb8FuB83B886ll1/gxzqZ6QESEKHgxOwuzxsCHcRML25bRkrcxUDccYD7mU4gnrmUlTHSu95M+8yRrPlBfILbctN17LbwtWrIAHask1kSIAERqlrswe+9JwXPmwEdxD3TuO0ZifhDn1Jezo3sz3Oa7Mzh3s8cyZofxCc0y8cMp4Latdltovm+yzXsWCezLECC9BHaZ0+EUpNmsScICKystAElHNrIbtNwxEbvoCNZ97I/y4nKy2t4riKfCHvND+Kjz+62F7LbRXO46Rk0+5nH2bFOZWmABEToWNmZw9gTBARn5OO7M9PHsT/DyVJTTqM339D/cDTER79Nd9zCbhtfa/v3Ycc6leUBEiyP0DVyR8jO+4ipTkwU4LapXukp/6Wysvrsz3Cy776rRgsXnknTpw1kj1UO4hOexY+OpayTG7LbSCO2KzfWqWwJkCB/hHayr2W02OjtROUnsCcHCM6IvwOJ5+0UF5/Lvr6TRUdXo+XLq9HSpdVowfyWNG1q8FvCID6R+bX9Zex20mScegotenw8O9aJbAuQgAh53lfCCvbkAKER04oP/R3+Fevh+Lc9EWvPvraT5eVVo40bK+KjmTf3Mpr6UtV/g0B8Irf+nl7stvK1oddt7FgnsjVAgtsjhOf+RC6Suz+Lp45yr+l0O3dWjo9m9qwb+eMU8THEnKcepeQzmrDbTLOrXVt2rBPZHiDBzRHKyniQPUFA6JIPL2K3bTDiV29lZXXY13SyxMRqtGoVH6CFC5tR1NRxlY9PxMdQP3buyG43TV6dOrRs3Eh2rNNIESDB+gh1YL98jpkRcvKCR6uIR1Rz2zaY3Jye7Os5WVlZNdqyhY+PZs6s/xw9LhEfw60e1J/ddr4297yBHes00gRIcGOExJ2dPT8AIiDWsnDbNpDU5KnsazndX3/x0fG1aGEjmj51JOJjkqjnnqLY5uew21BzoNX57FinkSpAgtsilJ/XmT1RQOgy08ez27YqcQe/82z3ruxrOVl6ejVat46Pjr9Xn7sS8THR1uu7sdtRU1r9BPrfCP3rs1QjXYAEN0WosMBzkDMnCwhdVuYIdttWJT31GfZ1nE6s+eFi42/l9Gq069qaniGecSFAfPRbMWoIFdeowW5PzTfdu7BjnUTKAAluiVCBC6cAG008R4nbtqzonVRSfBb7Ok7mu+YnEBGfv7p4xjD7PQfxCd/+1hew21QTd85ZNP2/k9ixTiFtgASpIzTGmAjhCihyeq6A0lKeY1/DycSan02b+OD4Qnys9fktN7Lb1de79/djxzqF1AESnB4h/A0ocnr+BuTGmW9VrfnxhfhY79WHRlNOvbrs9tX85DkfcWOdQvoACU6OEGbBRS7UWXDiAXbiQXbcazhVoDU/GsTHPn9eejG7jTUpTU6jeU8+wo51AiUCJDg1QlgHFLlQ1wFlpE1kxztVKGt+EB97fdzbc/wz29nXh3ffyY51AmUCJFgaodXWRAh3QohccuISdtv6y8vtwY53qmBrfhAf+y2Y+BClNT6V3d6a3y+/hB3rBEoFSHBahHAvuMglxH7MbltfcTFfU0lJU3a8E2VkBF7zg/jI4+eO7dltrsluUJ+WPhL8TuUqUi5AgtwRGqErQrgbdmRCvRu2uF8cN96pAq350Ruf/e1r0KuPDGGPRYjc+wP6stvd16e33cyOVZ2SARKcEiE8DygyoT4PKDNtAjveiQKt+dEbnwNXVqPVU6rR9Kjh7HEIkZv5f09QQjPP1Tmz/TV7L2zNjlWdsgESrI3QG6ZFCE9EDV925lB2m/pzy2SPQGt+wo2PGDtrZk/2GARjfNetM/sdaApPPJHeeGAoO1ZlSgdIcEKEsjOHsScTCC41aSa7Tf25ZcFvVWt+IomPMHf2NezxB8Z4e9j9VH7ccex3ofmqx9G7lDuF8gESVI9QatIs9mQCgZWWnkwJhz5ht6mv2OgdVFrShH0NJ6lqzU+k8RHmz2vDHntgnOjzW7DfhybmvOY09YWn2bGqckSABJUjFHvweyovP5E9qUDVQv37T3zMF+x4JxFrfr78snI0BCPiIyxa1Ig97sA4X954Hfud+HpnyAB2rKocEyBB+gjtrTpCOUfuYk8sUDU9d0DgxjsJt+bHqPgIixfXY485MM7yMcOpoHYt9rvRfN/FWb8KdVSABFUjlJocxZ5YgFdacponLOvYbenP6VPduTU/RsZHWLKkFnu8gbF2t23Dfj+aw03PoNlPP86OVZHjAiSoGCGxULKoqDV7goFjiVlt/tuwKsmJS9nXcAr/NT9Gx0dYsuR4mvriU+zxBsb55I6e7Hfka13/PuxYFTkyQIKKERLPtfH8AwhBUuKyY7ZfVcS/5V7DCfzX/JgRHw13nIGxlkwYQ1knN2S/K414Ui03VkWODZBgeYQ6RRYh8SuloqJW7IkGjsrLubnSdgsm5fBC9nVU57/mx8z4CFNfeoI9zsBYv7a/jP2+NBmnnkKLHhvHjlWNowMkyB+hnyu9Rmb6w+zJBiqUldXxBGVepW0WTFLC6+xrqc53zY/Z8VmypAZ7fIHxPrinF/ud+dp4163sWNU4PkCC7BGK9YlQ/KHPqLDgcvaEA9UoJ7tPpe0disPxb7OvpTLfNT9mx0dYsvgk9tgC48196lFKPr0J+91pdrW7iB2rGlcESLA+Qh3ZHYeT7Reh9NTJ7EnH7cTMt6SE0P/2o0k4tIl9PVX5rvmxIj7C4sUN2eMKzPFj58Dnj7w6J9GysSPZsSpxTYAEVSIUd/Bbys+7lj35uFl21qBjtnMo4mM2O2qhr7bmx6r4CAsWNGePKTDHmkH92e/Q1xc338COVYmrAiSoEiE8J6iy4uJz6XD8O8ds41AVF53Pvq5qtDU/VsZHmDf3MvZ4AnNMe+4pim1+Nvtdag5ccD47ViWuC5CgSoTycm5iT0JulJ769DHbVo/8vG7s66pGrPmxOj7C7FnOuxGm7LZe15X9PjWlJ5xA/xsxiB2rClcGSFAhQgmxGygv9zr2ROQm4f7qzdeRrAHsa6tErPl5Z4718RFmTO/LHkdgnhUjB1NJjers96r5pnsXdqwqXBsgQYUIidvIFBZcyp6Q3CA351aKj9nCblM90lOmsK+vivz8arTlbXviI+6CMH2q+n/wVtH+1i3Z71YTf/ZZNOO/T7JjVeDqAAkqREg8rqGk+Cz2xORkBflXe28kym1LvcTrlJd7/muS+Tkq+ONze+IjLFzYjD12wHyf33Ij+/36evf+e9ixKnB9gASpI/RgRYTE1OzyspPYk5MTFRddQMmJS9htGK7CgkvYnyW7pF+r0f7rPf9/Zv/gGBkfYe7cK9njBsz36vjRlFu3Lvs9a3665ip2rAoQoH+oECG33CuutPRUSkt+kd12kcjJvpv9eTIrS6hGCbd7/v/MfsExOj7CzBm92GMGrPHnpRez37UmtUljmv/kI+xY2SFAPiyN0JrwIiT+IO/5PziWWK+TmjSD3WaREq/L/UxpHa5GGfd4/l9mf+CYEZ/FixtQ1NQx7PEC1vi49+3s9+3rw7vvZMfKDgHyo0KEMtIe81wlNOZPWgorKrzYtPgIcQe/8fyMi9ifLR1PfAqHeP5fZj/gmBEfAet/7Ldg4kOU3uhU9nvX/H75JexY2SFADBUilJb8sudk6pznB4l1OkkJy9ltZKTszGHsz5eKJz402oP5/jlmxUfAr9/k8HOH9ux3rznSoD698vAD7FiZIUBVUCFCyYmveE7cnfiTmEJysntTQqw12zox7n32PUhDovgsXlzXcyw8fcyxAdZ7f8Dd7Pfv69PbbmLHygwBCkDuCA33RkicUMXTQT3/R+WIv/dkZYz03vuO2yZmkXYygkTxEWbPupE9LsB6M/9vIiU2O5PdDzR7L2zFjpUZAhSEChE6FL2TMtMmUFlZPf7EJiGxrinl8Hx2O5hNPB+otKQJ+75sI1l8FixoQVNfepQ9JsAe33XtxO4LmqITa9Kbo4eyY2WFAIXA2gi9GV6EPGPF1VB25nAqKWnKn+QkICYaZKRNpLiYr4757FbKzhzCvj9bSBYfYdaMO9hjAezz9tD7qfy449h9QvP1DWrdsw8BCpEqEfKOT1hBR7L7U1lpQ/6EZ4PiohaUlTHGe387389ql8Nx78pxh2wJ4zN/Xhua+uJT7HEA9jp4fgt2v9DEtGhOU19Q5+92CJAO0kdoz9EICcmJi71/Hyovr8Gf/CwgftWVnTnYc8JfU+m9ySAzfRz7ni0jYXzEo7dx41F5fXnjdey+4eudwQPYsTJCgHRSLUJCcuJr3l/NFRW25U+EhjueCvKv8f5dSlxp+L8fWYgnpdp2o1cJ4yNg3Y/clnuO8YJatdh9RPPDtdewY2WEAIVBxQhpkhOXeh9NUFTUij8xhknMaCsoaO+9XZD4WxT3s2WUmhzFfh5TSRqfJUtqUtTUsew+D/LY07YNu59oDp95Bs1++jF2rGwQoDBZHqEgz4j3FSxCGnFngJSkOd5oiIffiSiFcsNT8belwsJ2lHOkl/cqJylxGcVGb2d/hgosXZwqbXxq0awZt7L7Osjlkzt6svuKr3X9e7NjZYMARcAJEapK/KHPvL+i8hUX8zX7b1UnPlfukTv4YBhJ0vgIc2Z3Y/dxkM+SCWMoq2EDdp/R/HLV5exY2SBAEXJyhNxE/NqwwMy7Skgcn7lz29PUFyex+zfI6bcrLmX3G03GKSfTosfGsWNlggAZQP4I7WBfCyoTfx8z+m9jXhLHZ/681hT1svwnKqjsg3vuYvcdXxvvkv9XqgiQQRAhZxDPISotPYUPSTgkjs/CBc1oetQQdn8Guc19agIln96E3Yc0f7W7iB0rEwTIQIiQM6SnPk1UfgIfFD0kjo+YdDA9aji7H4MatgeZHZtf5yRaNnYkO1YWCJDBrI/Q1ezOx0GEQpeWMoWKi87jwxIKieOzYP55NGPafez+C+pYM7A/uy/5+uLmG9ixskCATIAIOUPK4UVUkN+BD0wgEsdn3txLaNrU0ex+C2qZ9txTFNv8bHaf0vx9wfnsWFkgQCZBhJxB3EIoN+dWPjQcSeOzZMkJNHd2J5r6khoLFCE0267ryu5XmrITTqC3hg9kx8oAATIRIuQM8TFbvPezE7cY8my8qkkan8WLG9DsWeo9rAyCWzlyMJVUr87uX5pv/nMtO1YGCJDJECHnSEt5vuo7jEsan0ULT6PpUWo9Iwb02d+6JbuPaeLPbkYznn2SHWs3BMgCUkfoAURIj8S4dZSVOYJKiptJHZ+FC86i2TNvxq/cXGDzLT3Y/czXe/fdw461GwJkEUTIWZISVtKRrP5UFt9AqviIK57Zs7pT1Mvj2f0QnOe18aMot24ddn/T/HT1VexYuyFAFrI0Qu8iQmaL/+ELyh94Lbs9OWbGZ/Hiht5JBtOmjmL3PXC2Py9py+5zmtTTGtP8Jx9mx9oJAbIYIuQMIj45997NbkeOWfFZvOhkmjO7C0W99Ai7v4E7bOh9O7vf+fqoj3yPWUeAbIAIqc3u+IirHfHguOlRg9n9C9xn4cSHKL3Rqez+p/n9snbsWDshQDaRO0LDEKEq6I3P3svOpzee7Ezz57Xx/n1m6ZLj2ahURdwyZ+HCM7zBmTXjDvxtB6r0c4f27D6oOVK/Hr3y8APsWLsgQDZChNSiNz4HPScE7oCfNvVBmj5tIM2Y3s8bFX/iNjni6ga/VgM93g9h3/zsNrnWgyFANkOE1KA3PoldrpHuvzbB2Wb930RKbHYmuz9q9rVpxY61CwIkAURIbnrjk37Df+itp7D+Bqz3XddO7D6pKapZk94cLc/CZARIEtZGaAUiFCK98cm99SbaOOMF9jsGMNvbQ+9j90tfX3v+A4kbawcESCLSR2i3uyKkNz55nvh8v2wh+90CWOXg+eey+6fmUIvmFPX8ZHas1RAgySBCcggnPnvXvkWvLpnDfq8AVvnyxu7sPurrncH3smOthgBJCBGyVzjxSfx8Pa1/byX7fQJYafmDw6mwVi12X9X8cO3V7FirIUCSsjxCnh2S21E5To5QuPH55uuNNHPa8+x3CWC1PRe1YfdXTdKZp9OcyfZPlEGAJIYIWSvc+OzdtZ1WLF/EfocAdvjk9p7sPutrXb/e7FgrIUCSQ4SsEW58xNiNH61mvzsAuyyZMIayGzZg913NL1dezo61EgKkAETIXJHE5yfP2AVzo9jvDcBOv11xKbv/ajJPOZkWPzqOHWsVBEgRiJA5IolPzIFfafXby9jvC8BuH/S9i92HfW2881Z2rFUQIIXIH6Gf2NeSVSTxEb74bD37PQHIYO6kCZRy+mnsvqz56+IL2bFWQYAUgwgZI9L4/L5zG9b8gPS2d+rA7s+a/JNq0+tjR7BjrYAAKQgRikyk8RGw5gdUsGZgP3af9rXlpuvZsVZAgBRlfYSuYXdejswRMiI+3jU/07HmB+Q3bcokijvnbHbf1vzd8jx2rBUQIIUhQvoYER+s+QHVbLuuK7t/a8qOP57eGj6QHWs2BEhxUkdotDwRMiI+wqaP1rDfA4CsVo4cTCXVq7P7uebb/1zLjjUbAuQAiFBgRsUHa35AVQdatWT3dU382c1oxrNPsGPNhAA5BCLEMyo+WPMDKtvcswe7v/t6776+7FgzIUAOYmmE3pM/QkbFR8CaH1DZa+NHUW7dOux+r9lx9ZXsWDMhQA6DCFUwMj6//4I1P6C+XZe0Zfd9TeppjWj+Ew+zY82CADmQ2yNkZHyE9e9jzQ+ob0Ov29j939dHfe5gx5oFAXIot0bI6PhgzQ84xcLHx1N6o1PY40Dzx2Xt2LFmQYAczG0RMjo+WPMDTrOzQ3v2WNDk1K9Hrz70ADvWDAiQw8kdoaGGRcjo+AhY8wNOszaEY+Qzz7HBjTUDAuQCTo+QGfHBmh9wolnPTKTEpmeyx4VmX5tW7FgzIEAu4dQImREfrPkBJ/u+ayf22NAU16xJK0YNYccaDQFyEWsjtFJ/hP7SFyEz4iNswZofcLBVQ+9jjw9fX1/fjR1rNATIZZwSIbPigzU/4AYHzzuXPU40h849h6Ken8yONRIC5EKWR6iLsREyKz4C1vyAG3zZozt7rPhaPfhedqyRECCXUjVCZsbn2683Yc0PuMIbDw6jwlonsseM5odrr2bHGgkBcjHVImRmfLDmB9xmz0Wt2eNGk3TG6TRn8mPsWKMgQC6nSoTMjI+ANT/gNp/cfjN77Pha368XO9YoCBBIH6GErZ+YGp+KNT/T2G0D4FRLHxlD2Q0bsMeQ5pcrL2fHGgUBAi+ZI1R0YeBfFfjSGx+s+QE3++2KS9njSJN5SkNa/OhYdqwRECD4l8wRCoXe+AhY8wNu9kHfu9hjydemO29hxxoBAYJKVI2QNz6emHA/pypY8wNuN2/SBEppchp7TGl2X3whO9YICBAcw8oIickFxUEWxQVT2rgRZT7xMCW9vYzidnzN/hwO1vwAPEPbO3VgjytN/km16fUxI9ixkUKAgKVahHyVndyQCjp1pCNDBlD6809Tkic0sX98X+lnYs0PQIU1A/uxx5GvLTddz46NFAIEVbL013GeSBR0CXyTxEiVNDuT8rt3oYwh99HW0UNp2diRNH3KJPazA7iFOAbizjmLPWY00S3PY8dGCgGCgFS+EgpVSpPGtKdtG9rWvSut7d+HXnnYugdyAchgm+c/zLhjQ1N2/PH01rD72bGRQIAgKKsjVFa/HnsQWKmkenVKOqMJ/XnpxfTFzdfTuwP70aLHxrHbB0B1K0cMotLqJ7DHgubbbp3ZsZFAgCAklv46btUyohMCHwx2KahVixLOako7r7qCPr+lB701fCDNmfwou80AVHKgVUt2n9eI/X7ms0+wY8OFAEHIrIxQ4qfrqLx2LfZAkFH+SSd5b3G//ZoO9MkdPenN0UMNP1gBzLS5Zw923/b13oC+7NhwIUCgi5UREkSIsh8YTpmPjPHejqfw0nZS/IouVFknN6T9nv+y/LHz1bT+nl6Y+ADSem3cKMqrU4fdjzU7Ol7Jjg0XAgS6WR0hf7G7d1DipvcpddEsypz4EOXcfRcVXnk5lTY6lT1oZFNYqxYlNjuT/rykLW27rqt3NfryB4d5n9fPbW8Aq+zy7JPcPqtJa9yIFjzxMDs2HAgQhMXuCHHifvuWDq9fRame95b10AOUe0dPKmrXlkrqBv6vOlnket5nXPOzvffn+vLG7rTWc8X32vhRNG3KU+x3AGC0Db1uY/dNXx/3uYMdGw4ECMImY4T87f1rO62ZO41WjhxMG3rfTt917UR7LmpDyaef5p3pxh1gshF3LD54/rn0c4f2tPmWHrRmYH9aMmEM+50ARGLh4+Mp49RT2P1Q88dl7dix4UCAICKyR2jTx1U/52fhxIfo7aH3eScNbO/Ukfa3bknpivwaTxDvVfx9SdxKRXwG8VnEZ+I+K0CoxAxPbn/T5NSrR68+NJodqxcCBBGTNUI7xHN+5ul/zo+4uhBXGeJqQ1x1iKuPYM9NkYW4qhNXd+IqT1ztbeh1u/fqb+5TE9jPCuBv7b192H3L1+e33siO1QsBAkPIFiGjn/Mj/g4j/h4j/i7z5Y3Xef9OE9v8bO/fbbgDVDb8xIfhNOv/MPEBKpv1zON0uOkZ7H6k2dfmAnasXggQGEamCFn1nB8xc02cyMUJXZzYxQlenOjFCZ87cGUjAipCWjHx4Tp6HxMfwOP7IPdlLK5Zg1aMGsKO1QMBAkPJEKE/fvnG9uf8iF95eSc+9Lrt34kPKQpNfMjyTnxogYkPLrVqyH3sfuFr6/Xd2LF6IEBgOLsjJPNzfsQkgVVi4sPtYuJDB+8kAuUmPrQWEx86YuKDw8UEuTHwoXPPoajnIrtSRoDAFHZFSNXn/FRMfOh3dOKD5+BXa+JDE+8dxcXV3se9MfHBCb7q0Z39vn2tHtSfHRsqBAhMY3WExJqfFcsXs+9FRZUnPnT3/p1GLFRVZeKDuHFrxcSHiysmPtyDiQ8qeeOBYVR44onsd6v5sXNHdmyoECAwlZURCrTmx0nExIc3Hhym8MSHuvzEhwh/nQPG23tRa/Y71IhHlsx5Kvy7wSNAYDorIhTumh8nmTvJORMfxKMuMPHBfp/efjP7XfkSN9nlxoYCAQJLmBkho9f8OI24vYrvxAfx3BdVJj6UH3ccJj7YaOkjD1J2g/rsd6P5tf1l7NhQIEBgGbMiZNWaH6dZqk186KngxIcaVU18wMMBjfb75Zew34FGPHJkyaNj2bHBIEBgKaMj5F3zs9TeNT9OMm3KpKMTH3r8M/HhHAUnPlx6MW31mfgwExMfwvZh3zvZbe1r0x23sGODQYDAckZGaP37/2N/BhjLf+KDeG5MYlMx8SHwLClZHDPxYYCY+DAaEx9CMG/SBEppchq7XTW7217Ijg0GAQJbGBEhVdf8OIk4OTlq4sMgTHzgiEfNc9tPU1C7Ni0fM5wdGwgCBLaJJEL7HLbmx2n4iQ+BnzMjC9+JDz/+O/Hhflrg4okP797fj91WvrbcdB07NhAECGwVboTcsubHaZY+cnTiw05FJz7s9k586OyqiQ/Tp0yiuHPOYreLJtpzJcmNDQQBAtvpjRDW/DiLOLm9Ns5/4sNZ6kx8qO0/8aGXIyc+bOvehf38GnHl+Paw+9mxVUGAQAp6IoQ1P+5QaeKD5+Sn3MSHehUTH8Q6GW3iw6sKT3z434hBVHrCCexn1XzbrTM7tioIEEgjlAht+RxrftzOd+LD996JD629s7RKVZv40FFMfLhRqYkPB1qdz34mTcJZTT1Xfk+wYzkIEEglUISw5gcCOTrx4eajEx9OVW3iwwVHJz4Mk2/iw+aeN7Dv39f7A/qyYzkIEEinqghhzQ+EQ9xO5ujEhyuUn/iwYpR9Ex+WjRtJeXVOYt+r5ueOV7JjOQgQSMk/QljzA0Y6OvGhj/e5N9rEhzylJj40tWXiw652bdn3pElr3CjkKzcECKQ1PWqKd8abuNnokoUz2X8DYKRZzzzufQ4OJj5UTfztjfvZvsSVGjfWHwIEUhMRwqw3sJt34sOIQRUTH7ooOPHh5IbedTraxAfxJNNwJz4senw8ZQT525q4MuPG+kOAAADCpE18EM/NEberERMfgp2cZSEmPqQ1/mfiQ2d9Ex92XnUF+5qaHM+VmLjy4sb6QoAAAAzGTnxooMrEhxpHJz504yc+rO3fhx3rS1xp+W4TDgIEAGCBKic+1FFn4kPCPxMfxI1nM09uyP47jbiy4raDLwQIAMBm4tEQ4qpiW/eu3ofsiZlk3EldJcWeKylx5cR9Xg0CBAAgIXHFtGzsSPrw7jvpx85X0/5WLb2TCbiTvazETELus2kQIAAAhYip4m+OHuqdNCAmPhw69xzKPynw4lC7iBvKBpoCjgABADjAnMmPemfkiQfriVlq4r5sRTVrsmGw0pqB/dn3KyBAAAAOdezEh0ssn/ggnjbLvTcBAQIAcCGrJj78dM1V7M8XECAAAPASd3wQz/2puOPDNbT33zs+BH4OUFXEYtfXxo9if5aAAAEAQEDi9jurhgzwuePD+SHd8eGXKy9nX0+DAAEAQFh8Jz7EtGhOBbVreyc+iMddiBu6cmN8IUAAAGALBAgAAGyBAAEAgC0QIAAAsAUCBAAAtkCAAADAFggQAADY4Bn6fwCfL4FiKF3aAAAAAElFTkSuQmCC\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":52355,"title":"ICFP2021 Hole-In-Wall: Solve Problem 47,   Score=0, Figure Vertices 11,  Hole Vertices 10","description":"The ICFP held its annual 3-day contest in July 2021 with Hole-In-Wall. Contest Specification.\r\nThe contest folds the figure in Red to fit within the hole shown in light grey. A final solution is shown to aid in programming. \r\nThis Challenge is to solve ICFP problems 47 according to the Specification when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. Brute force of  problem 47 may take 180 seconds due to the 10 hole vertices.\r\nValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u003c= epsilon/1000000.  Lsqr is length squared.\r\nScore is sum of minimum square distances to the figure from each unique hole vertex. \r\nnpxy=Solve_ICFP047(hxy, pxy, mseg, epsilon)  \r\nThis challenge requires a Score of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one. One method would be to reduce the nchoosek to force the longest figure segment to fit across a pair of hole vertices.  This problem with its solution shown shows that a recursive point to available hole vertices could be a more general solution.\r\nThe function template includes routines to read ICFP problem files and to write ICFP solution files.\r\nThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use Register Team. Anyone can select Problems Page and then click problem numbers to see the puzzles and to download problem files.","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: 775px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 387.5px; transform-origin: 407px 387.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 14px 8.05px; transform-origin: 14px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.icfpconference.org/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eICFP\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 146.65px 8.05px; transform-origin: 146.65px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e held its annual 3-day contest in July 2021 with \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eHole-In-Wall\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 29.95px 8.05px; transform-origin: 29.95px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Contest \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 8.05px; transform-origin: 1.95px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 283px; 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 141.5px; text-align: left; transform-origin: 384px 141.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: 379.9px 8.05px; transform-origin: 379.9px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe contest folds the figure in Red to fit within the hole shown in light grey. A final solution is shown to aid in programming. \u003c/span\u003e\u003c/span\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: top;width: 541px;height: 262px\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\" width=\"541\" height=\"262\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 126px; 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 63px; text-align: left; transform-origin: 384px 63px; 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: 191.767px 8.05px; transform-origin: 191.767px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to solve ICFP problems 47 according to the \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.367px 8.05px; transform-origin: 138.367px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. Brute force of  problem 47 may take 180 seconds due to the 10 hole vertices.\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: 384px 8.05px; transform-origin: 384px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/52308\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eScore\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250.1px 8.05px; transform-origin: 250.1px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e is sum of minimum square distances to the figure from each unique hole vertex. \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: 152.783px 8.05px; transform-origin: 152.783px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003enpxy=Solve_ICFP047(hxy, pxy, mseg, epsilon)\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: 3.88333px 8.05px; transform-origin: 3.88333px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; 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 42px; text-align: left; transform-origin: 384px 42px; 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: 384px 8.05px; transform-origin: 384px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis challenge requires a Score of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one. One method would be to reduce the nchoosek to force the longest figure segment to fit across a pair of hole vertices.  This problem with its solution shown shows that a recursive point to available hole vertices could be a more general solution.\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: 303.4px 8.05px; transform-origin: 303.4px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; 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 42px; text-align: left; transform-origin: 384px 42px; 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: 375.883px 8.05px; transform-origin: 375.883px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/register\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eRegister Team\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42.7833px 8.05px; transform-origin: 42.7833px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Anyone can select \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/problems\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblems Page\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 256.35px 8.05px; transform-origin: 256.35px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e and then click problem numbers to see the puzzles and to download problem files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function npxy=Solve_ICFP047(hxy,pxy,mseg,epsilon)\r\n%Problem 47 shows potential for recursion but a brute force with reduction can quickly solve\r\n% nH equals nP-1 and Score=0 optimally, nH is before repeating row 1\r\n% Since Score=0 then all hole vertices are covered. \r\n% Know that only 1 figure vertex not on a hole vertex\r\n% Assume that the longest segment spans two hole vertices not necessarily sequential hole nodes\r\n% Identify longest segment and associated hole vertices\r\n% Try all permutations of nchoosek(1:nP,nP-1) after reduced by Long segment nodes and hole nodes \r\n% Verify segments where both nodes are in nck set are correct length\r\n% For unselected vertex find all segments containing and create valid pt sets\r\n% for each segment constraint.  Find point common to all constraint sets\r\n\r\n npxy=pxy;\r\n nseg=size(mseg,1);\r\n msegMM=calc_msegMM(pxy,mseg,epsilon,nseg); %Create Min and Max segment integer values\r\n %hplot(hxy,pxy,mseg,nseg,1);\r\n %hplot3(hxy,npxy,mseg,nseg,3,msegMM);\r\n %hplot4(hxy,npxy,mseg,nseg,4,msegMM);\r\n \r\n hxy1=hxy(1:end-1,:);\r\n np=size(npxy,1); %\r\n vpn=zeros(np,1);\r\n pnchk=nchoosek(1:np,np-1);\r\n \r\n % Note:  ***  Indicates line was changed from working program\r\n ptrLseg=find(msegMM(:,2)==0,1,'first'); % ***  Find max L segment\r\n nodesL=mseg(ptrLseg,:);  % figure nodes of longest figure segment\r\n nodesLMM=msegMM(ptrLseg,:); % Min and Max of selected long figure segment\r\n found=0;\r\n nh=size(hxy,1);\r\n for hi=1:nh-2  % search all hole vertices hi to hj that matches long figure segment\r\n  for hj=hi+1:nh-1\r\n   if prod([0 0])\u003c=0 % ***   Find pair of valid hole vertices\r\n    found=1;\r\n    break;\r\n   end\r\n  end %hj nh\r\n  if found,break;end\r\n end %hi nh\r\n % hi,hj Hole indices that are nodes that fit longest segment\r\n % that will need to be either of nodesL\r\n \r\n % remove nchoosek vectors that omit the long segment of nodesL\r\n pnchkval=sum([0 0],2)\u003e1; % ***\r\n pnchk=pnchk(pnchkval,:);\r\n Lpnchk=size(pnchk,1); % Length of final nchoosek matrix\r\n \r\n mperms=perms(1:np-1); % fast repetitve perms method, create a mapping array\r\n for ipnchk=1:Lpnchk %subset of figure vertices to place onto hole vertices\r\n  vpnchk=pnchk(ipnchk,:);\r\n  phset=vpnchk(mperms); \r\n  % remove matrix rows that lack nodesL in hi,hj columns\r\n  % Massive reduction in phset matrix \r\n  permvalid=phset(:,hi)==0 | phset(:,hi)==0; % ***   match nodesL\r\n  phset=phset(permvalid,:);\r\n  permvalid=phset(:,hj)==0 | phset(:,hj)==0; % ***   match nodesL\r\n  phset=phset(permvalid,:); % Final reduced permutation set that must have nodesL in cols hi,hj\r\n  \r\n  nphset=size(phset,1); % greatly reduced from 10! for each nchoosek vector\r\n \r\n  for i=1:nphset\r\n   npxy=npxy*0;\r\n   vphset=phset(i,:); \r\n   npxy(vphset,:)=hxy1; % load hole vertices into figure vertex matrix, one row is [0 0] unset\r\n   vpn=0*vpn;\r\n   vpn(vphset)=1; % vpn is vector that indicates used figure vertices\r\n   fail=0;\r\n   for segptr=1:nseg\r\n    if prod(vpn(mseg(segptr,:)))\r\n     L2seg=sum((npxy(mseg(segptr,1),:)-npxy(mseg(segptr,2),:)).^2);\r\n     if prod([0 0])\u003e0  % *** Verify L2seg is valid length squared\r\n      fail=1;\r\n      break;\r\n     end\r\n    end\r\n   end\r\n   if fail,continue;end %length of subset placed vertices placed on hole ver failed\r\n   %Hole Points covered. Have 1 free point to place constrained by its segments\r\n   node=find(vpn==0); % Free node to place\r\n  \r\n   cptr=1;\r\n   for fseg=1:nseg\r\n    if prod(vpn(mseg(fseg,:))),continue;end % Both seg vertices placed\r\n    MM=msegMM(fseg,:);  % Create [Min Max] vector\r\n    Node2=mseg(fseg,:);\r\n    Node2(Node2==node)=[]; % Reduce Node2 to a single value of the set vertex\r\n    \r\n    if cptr==1 % create an initial list of all in range and then inpolygon\r\n     Lmm=ceil(MM(2)^.5);\r\n     dmap=(0:Lmm).^2;\r\n     dmap=repmat(dmap,Lmm+1,1);\r\n     dmap=dmap+dmap'; % Create a 2D map of distance squared from [0,0]. dmap(1,1) is [0,0]\r\n     % This 2D map is of the Positive XY quadrant.  The goal will be to find  all valid [dx dy]\r\n     dmap(dmap\u003cMM(1))=0; % Remove Points less than Min Seg length\r\n     dmap(1,:)=0; % ***      Remove Points greater than Max Seg length\r\n     [dx,dy]=find(dmap);\r\n     dx=dx-1; dy=dy-1; % remove 1,1 offset from grid\r\n     dxy=[dx dy;dx -dy;-dx dy;-dx -dy];% Create all valid deltas by symmetry about [0,0]\r\n     mxy=dxy+npxy(Node2,:);% Create matrix of all points in the valid region\r\n     % remove negatives from hole comparison as hole is all positive\r\n     mxy=mxy(mxy(:,1)\u003e=0,:); %         Speed option remove all points with neg x values\r\n     mxy=mxy(1,:);           % ***     Speed option remove all points with neg y values\r\n     in=inpolygon(mxy(:,1),mxy(:,2),hxy(:,1),hxy(:,2));\r\n     mxy=mxy(in,:); %    reduce to in-hole points\r\n     cptr=2;\r\n    else % test points from m for additional new fseg constraint and prune\r\n     Lmxy=size(mxy,1);\r\n     vmxy=ones(Lmxy,1); % Valid mxy vector\r\n     for ptrmxy=1:Lmxy\r\n      d2=sum((mxy(ptrmxy,:)-npxy(Node2,:)).^2); % Calc dist squared from mxy to Node2\r\n      if d2\u003cMM(1),vmxy(ptrmxy)=0;end %   clear vmxy for too short\r\n      if d2\u003eMM(2),vmxy(ptrmxy)=0;end %   clear vmxy for too long\r\n     end\r\n     mxy=mxy(vmxy\u003e0,:);\r\n     if isempty(mxy) %If no points left in mxy then vertex could not reach from set nodes\r\n      fail=1;\r\n      break;\r\n     end\r\n    end % cptr==1\r\n   end % fseg 1:nseg\r\n   if fail,continue;end\r\n   \r\n   npxy(node,:)=mxy(1,:); % solution found  are all valid??? Possible seg fail\r\n   \r\n   fprintf('Solution found\\n');\r\n   %hplot4(hxy,npxy,mseg,nseg,4,msegMM);\r\n   return;\r\n       \r\n  end % nphset\r\n end % ipnchk\r\n \r\n fprintf('No solution found\\n');\r\nend %Solve_ICFP047\r\n\r\nfunction msegMM=calc_msegMM(pxy,mseg,epsilon,nseg)\r\n%determine Min and Max integer value of allowed length squared for each segment\r\n%abs(Lsqr(npxy,seg(i))/Lsqr(pxy,seg(i))-1)\u003c= epsilon/1000000.\r\n%mseg has indices of connected vertices [nseg,2].  The nseg may exceed number of vertices.\r\n msegMM=zeros(nseg,2);\r\n for i=1:nseg\r\n  Lseg=sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n  delta=floor(epsilon*Lseg/1000000);\r\n  msegMM(i,:)=[-delta delta]+Lseg;\r\n end\r\nend % calc_msegMM\r\n\r\n\r\n%These routines can be used to read ICFP problems, write ICFP text file, and visualize the data\r\n\r\n% function [epsilon,hxy,pxy,mseg]=read_problem(pid)\r\n%  fid=fopen([num2str(pid) '.problem'],'r');\r\n%   pstr=fgetl(fid);\r\n%  fclose(fid)\r\n%  \r\n%  Lpstr=length(pstr);\r\n%  holidx=findstr('\"hole\":[[',pstr); %starting location match\r\n%  epsidx=findstr('\"epsilon\":',pstr);\r\n%  figidx=findstr(',\"figure\"',pstr);\r\n%  edgidx=findstr('\"edges\":[[',pstr);\r\n%  veridx=findstr('\"vertices\":[[',pstr);\r\n%  epsilon=str2num(pstr(epsidx+10:figidx-1));\r\n%  \r\n%  hxy=reshape(str2num(pstr(holidx+8:epsidx-3)),2,[])';\r\n%  hxy=[hxy;hxy(1,:)]; %repeat row1 to close path\r\n%  \r\n%  pxy=reshape(str2num(pstr(veridx+12:Lpstr-3)),2,[])';\r\n%  \r\n%  mseg=reshape(str2num(pstr(edgidx+9:veridx-3)),2,[])'+1;\r\n% end % read_problem\r\n\r\n% function write_submission(npxy,pid)\r\n%  fname=['Solution_' num2str(pid) '_' datestr(now,'yyyymmdd_HHMMSS') '.txt'];\r\n%  fid=fopen(fname,'wt'); % t for notepad editing\r\n%  \r\n%  %Create ICFP submission\r\n%  fprintf('{\"vertices\": [');\r\n%  fprintf(fid,'{\"vertices\": [');\r\n%  for i=1:size(npxy,1)-1 \r\n%   fprintf('[%i,%i],',npxy(i,:));\r\n%   fprintf(fid,'[%i,%i],',npxy(i,:));\r\n%  end \r\n%  fprintf('[%i,%i]]}\\n',npxy(end,:));\r\n%  fprintf(fid,'[%i,%i]]}\\n',npxy(end,:));\r\n%  fclose(fid);\r\n% end\r\n\r\n\r\n% function hplot(vxy,qxy,mseg,Lmseg,id)\r\n% %Need check of segment crossing a hole segment but ignore endpoint\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1)%length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i),'FontSize',12);\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    if in(mseg(i,1))+in(mseg(i,2))\u003c2\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment to OOB pt\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-')\r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%    \r\n%   axis tight\r\n%   axis ij\r\n%   hold off  \r\n% end % hplot\r\n\r\n% function hplot3(vxy,qxy,mseg,Lmseg,id,segMM)\r\n%  segMNM=[segMM(:,1) segMM(:,1)+segMM(:,2) segMM(:,2)];\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1) %length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i));\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    d2seg=(qxy(mseg(i,1),1)-qxy(mseg(i,2),1))^2+(qxy(mseg(i,1),2)-qxy(mseg(i,2),2))^2;\r\n%    if d2seg\u003csegMNM(i,1)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-') % segment too short\r\n%    elseif d2seg\u003esegMNM(i,3)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment too long\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'g-') \r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%   \r\n%   axis tight\r\n%   axis ij\r\n%   hold off\r\n% end % hplot3\r\n\r\n\r\n","test_suite":"%%\r\n% ICFP Problem  47  \r\n% 75% of hole edges not covered in solution. All hole vertices covered.\r\n% possible method force longest fig segment onto pair hole vertices then perms\r\n% brute force processing will take 180 seconds so not part of this cody challenge\r\ntic\r\n% ICFP Problem Id 47\r\n% nh 10  np 11\r\nepsilon=41323;\r\nhxy=[6 14;36 19;40 17;69 0;79 21;41 36;36 33;16 44;7 34;0 28;6 14];\r\npxy=[0 11;1 85;8 56;11 0;14 45;14 59;14 88;30 37;30 56;56 85;67 64];\r\nmseg=[1 4;4 8;8 5;5 1;8 11;11 10;10 9;9 8;5 6;6 9;9 7;7 2;2 6;6 3;3 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_ICFP047(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\ntoc\r\nassert(isequal(valid,1))\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2021-07-21T17:55:33.000Z","updated_at":"2021-07-22T01:54:06.000Z","published_at":"2021-07-22T01:54:06.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.icfpconference.org/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eICFP\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e held its annual 3-day contest in July 2021 with \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHole-In-Wall\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Contest \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe contest folds the figure in Red to fit within the hole shown in light grey. A final solution is shown to aid in programming. \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"262\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"541\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"top\\\"/\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\u003eThis Challenge is to solve ICFP problems 47 according to the \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. Brute force of  problem 47 may take 180 seconds due to the 10 hole vertices.\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\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/52308\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eScore\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is sum of minimum square distances to the figure from each unique hole vertex. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enpxy=Solve_ICFP047(hxy, pxy, mseg, epsilon)\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\u003eThis challenge requires a Score of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one. One method would be to reduce the nchoosek to force the longest figure segment to fit across a pair of hole vertices.  This problem with its solution shown shows that a recursive point to available hole vertices could be a more general solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/register\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eRegister Team\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Anyone can select \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/problems\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblems Page\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and then click problem numbers to see the puzzles and to download problem files.\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":1101,"title":"USC Fall 2012 ACM : Chemical Analysis","description":"This Challenge is to solve Question D, Chemical Analysis, of the \u003chttp://contest.usc.edu/index.php/Fall12/Home USC ACM Fall 2012 Contest\u003e.\r\n\r\nGiven an array M of Element Spectral signatures(m elements by n Spectra) and a Sample spectra of width n, determine the minimum number of elements that could generate the Sample's spectra.\r\n\r\n\r\nInput: [ A, Sample ]\r\n\r\nOutput: min_elements; \r\n\r\nThe minimum number Components to create the Sample Spectra. If no combination exists then output 0.\r\n\r\nThe full \u003chttp://contest.usc.edu/index.php/Fall12/Home?action=download\u0026upname=analysis.in.txt USC data file\u003e\r\n\r\nInput: [1 1 0 0;0 1 1 1;0 1 1 0;0 1 0 1], [1 1 0 1]\r\n\r\nOutput: 2 as [1 1 0 0] and [0 1 0 1] can create [1 1 0 1]\r\n\r\n\r\n\r\nThe Winning C solution is in the Test Suite to assist - not likely.\r\n\r\n","description_html":"\u003cp\u003eThis Challenge is to solve Question D, Chemical Analysis, of the \u003ca href=\"http://contest.usc.edu/index.php/Fall12/Home\"\u003eUSC ACM Fall 2012 Contest\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eGiven an array M of Element Spectral signatures(m elements by n Spectra) and a Sample spectra of width n, determine the minimum number of elements that could generate the Sample's spectra.\u003c/p\u003e\u003cp\u003eInput: [ A, Sample ]\u003c/p\u003e\u003cp\u003eOutput: min_elements;\u003c/p\u003e\u003cp\u003eThe minimum number Components to create the Sample Spectra. If no combination exists then output 0.\u003c/p\u003e\u003cp\u003eThe full \u003ca href=\"http://contest.usc.edu/index.php/Fall12/Home?action=download\u0026amp;upname=analysis.in.txt\"\u003eUSC data file\u003c/a\u003e\u003c/p\u003e\u003cp\u003eInput: [1 1 0 0;0 1 1 1;0 1 1 0;0 1 0 1], [1 1 0 1]\u003c/p\u003e\u003cp\u003eOutput: 2 as [1 1 0 0] and [0 1 0 1] can create [1 1 0 1]\u003c/p\u003e\u003cp\u003eThe Winning C solution is in the Test Suite to assist - not likely.\u003c/p\u003e","function_template":"function min_elements=Chem_analysis(A,Sample) \r\n min_elements=0;\r\nend","test_suite":"%%\r\ntic\r\nurlwrite('http://contest.usc.edu/index.php/Fall12/Home?action=download\u0026upname=analysis.in.txt','analysis_in.txt')\r\ntoc\r\n%%\r\n fid=fopen('analysis_in.txt','r');\r\n min_elements_expected=[2 0 1 2 0 3 4];\r\n\r\n qty=fscanf(fid,'%i',1);\r\n for q=1:qty\r\n  n = fscanf(fid,'%i %i\\n',2)'; % cols / rows\r\n   \r\n  A=zeros(n)'; % Format is colmns, rows\r\n  for i=1:n(2)\r\n   strv = fgetl(fid);\r\n   A(i,:) = strv - '0';\r\n  end\r\n   strv=fgetl(fid);\r\n   Sample=strv - '0';\r\n    \r\n  min_elements=Chem_analysis(A,Sample);\r\n    \r\n  assert(isequal(min_elements,min_elements_expected(q)));\r\n end % for q\r\n \r\n fclose(fid);\r\n\r\n\r\n% The C Winning Solution\r\n% #include \u003ciostream\u003e\r\n% #include \u003cfstream\u003e\r\n% #include \u003cstring\u003e\r\n% using namespace std;\r\n% int testcases;\r\n% int n, m;\r\n% int now;\r\n% int best;\r\n% string goal;\r\n% string s[1000];\r\n% void search(int i, string status)\r\n% {\r\n% \tif (i == n)\r\n% \t{\r\n% \t\tif (status == goal)\r\n% \t\t{\r\n% \t\t if ((best \u003c 0) || (now \u003c best)) best = now;\r\n% \t\t}\r\n% \t\treturn;\r\n% \t}\r\n% \tsearch(i + 1, status);\r\n% \tstring tmp = status;\r\n% \tfor (int j = 0; j \u003c m; j ++)\r\n% \t{\r\n% \t\tif (s[i][j] == '1') tmp[j] = '1';\r\n% \t}\r\n% \tnow ++;\r\n% \tsearch(i + 1, tmp);\r\n% \tnow --;\r\n% }\r\n% int main()\r\n% {\r\n% \tifstream inf(\"analysis.in\");\r\n% \tinf \u003e\u003e testcases;\r\n% \tfor (int testcase = 1; testcase \u003c= testcases; testcase ++)\r\n% \t{\r\n% \t\tcout \u003c\u003c \"Data Set \" \u003c\u003c testcase \u003c\u003c \":\" \u003c\u003c endl;\r\n% \t\tinf \u003e\u003e m \u003e\u003e n;\r\n% \t\tfor (int i = 0; i \u003c n; i ++)\r\n% \t\t\tinf \u003e\u003e s[i];\r\n% \t\tinf \u003e\u003e goal;\r\n% \t\tbest = -1;\r\n% \t\tstring ini = \"\";\r\n% \t\tfor (int i = 0; i \u003c m; i ++)\r\n% \t\t\tini = ini + \"0\";\r\n% \t\tnow = 0;\r\n% \t\tsearch(0, ini);\r\n%  if (best \u003c 0) cout \u003c\u003c \"Impossible\" \u003c\u003c endl; else cout \u003c\u003c best \u003c\u003c endl;\r\n% \t\tcout \u003c\u003c endl;\r\n% \t}\r\n% \tinf.close();\r\n% \treturn 0;\r\n% }\r\n% \r\n%\r\n%\r\n\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":10,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-12-06T20:21:50.000Z","updated_at":"2012-12-06T20:32:33.000Z","published_at":"2012-12-06T20:32:33.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to solve Question D, Chemical Analysis, of the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://contest.usc.edu/index.php/Fall12/Home\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eUSC ACM Fall 2012 Contest\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven an array M of Element Spectral signatures(m elements by n Spectra) and a Sample spectra of width n, determine the minimum number of elements that could generate the Sample's spectra.\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: [ A, Sample ]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOutput: min_elements;\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe minimum number Components to create the Sample Spectra. If no combination exists then output 0.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe full\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://contest.usc.edu/index.php/Fall12/Home?action=download\u0026amp;upname=analysis.in.txt\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eUSC data file\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInput: [1 1 0 0;0 1 1 1;0 1 1 0;0 1 0 1], [1 1 0 1]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOutput: 2 as [1 1 0 0] and [0 1 0 1] can create [1 1 0 1]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Winning C solution is in the Test Suite to assist - not likely.\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":1130,"title":"Challenging perms function!","description":"This problem is highly related with \u003chttp://www.mathworks.com/matlabcentral/cody/problems/1127-decrypt-a-secret-message Problem 1127\u003e.\r\n\r\nIn oder to encrypt the word 'go' using phone keyboard, we need to do these;\r\n\r\n- first find the digits that includes the letters in word. For example letter 'g' takes place on key 4. Letter 'o' is on key 6. So first number is 46.\r\n\r\n- create all string permutations using the letters on keys (4 and 6). There are 'ghi' letters on key 4 and 'mno' letters on key 6. All two letter permutation list is {'gm';'gn';'go';'hm';'hn';'ho';'im';'in';'io'}. In this list third one is 'go'. So second number must be 3.\r\n\r\nIf input is 'go'; output must be [46 3].\r\n\r\nWhat about 'hydroglycerin'? it is 1679616 th word on the permutation list constructed using keys 4937645923746.\r\n\r\nIf input is 'hydroglycerin'; output must be [4937645923746 1679616].\r\n\r\nGiven a string, return the keys on phone-keyboard and the order of this string in permutation list!","description_html":"\u003cp\u003eThis problem is highly related with \u003ca href=\"http://www.mathworks.com/matlabcentral/cody/problems/1127-decrypt-a-secret-message\"\u003eProblem 1127\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eIn oder to encrypt the word 'go' using phone keyboard, we need to do these;\u003c/p\u003e\u003cp\u003e- first find the digits that includes the letters in word. For example letter 'g' takes place on key 4. Letter 'o' is on key 6. So first number is 46.\u003c/p\u003e\u003cp\u003e- create all string permutations using the letters on keys (4 and 6). There are 'ghi' letters on key 4 and 'mno' letters on key 6. All two letter permutation list is {'gm';'gn';'go';'hm';'hn';'ho';'im';'in';'io'}. In this list third one is 'go'. So second number must be 3.\u003c/p\u003e\u003cp\u003eIf input is 'go'; output must be [46 3].\u003c/p\u003e\u003cp\u003eWhat about 'hydroglycerin'? it is 1679616 th word on the permutation list constructed using keys 4937645923746.\u003c/p\u003e\u003cp\u003eIf input is 'hydroglycerin'; output must be [4937645923746 1679616].\u003c/p\u003e\u003cp\u003eGiven a string, return the keys on phone-keyboard and the order of this string in permutation list!\u003c/p\u003e","function_template":"function y = encryptt(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nx = 'm';\r\ny_correct = [6 1];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n%%\r\nx = 'go';\r\ny_correct = [46 3];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n%%\r\nx = 'cody';\r\ny_correct = [2639 99];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n%%\r\nx = 'hydroglycerin';\r\ny_correct = [4937645923746 2616254];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n%%\r\nx = 'antidisestablishmentarianism';\r\ny_correct = [2684347378225474636827426476 13474859120710];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n\r\n%% \r\nx = 'there must be an efficient technique';\r\ny_correct = [84373 56 6878 22 23 5 26 2 333424368 13108 832464783 5378];\r\nassert(isequal(encryptt(x),y_correct))","published":true,"deleted":false,"likes_count":0,"comments_count":11,"created_by":8703,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":10,"test_suite_updated_at":"2012-12-21T12:16:02.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-12-21T07:23:02.000Z","updated_at":"2012-12-21T12:16:03.000Z","published_at":"2012-12-21T12:16:02.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is highly related with\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/1127-decrypt-a-secret-message\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 1127\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIn oder to encrypt the word 'go' using phone keyboard, we need to do these;\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e- first find the digits that includes the letters in word. For example letter 'g' takes place on key 4. Letter 'o' is on key 6. So first number is 46.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e- create all string permutations using the letters on keys (4 and 6). There are 'ghi' letters on key 4 and 'mno' letters on key 6. All two letter permutation list is {'gm';'gn';'go';'hm';'hn';'ho';'im';'in';'io'}. In this list third one is 'go'. So second number must be 3.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf input is 'go'; output must be [46 3].\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWhat about 'hydroglycerin'? it is 1679616 th word on the permutation list constructed using keys 4937645923746.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf input is 'hydroglycerin'; output must be [4937645923746 1679616].\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\u003eGiven a string, return the keys on phone-keyboard and the order of this string in permutation list!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":1506,"title":"Maximum Intra-Vector Swaps","description":"This Challenge, based upon a contest in which Rokicki came in 2nd, is to find sequences containing 1:N that require maximum iterations prior to the value 1 appearing in the first position.\r\n\r\nThe processing rule is that positions 1 thru Vector(1) are swapped. Processing stops when Vector(1) is 1.\r\n\r\n*Example Sequences:* \r\n\r\n  [3 1 2], [2 1 3], [1 2 3] Score 2\r\n  [3 1 4 5 2][4 1 3 5 2][5 3 1 4 2][2 4 1 3 5][4 2 1 3 5][3 1 2 4 5][2 1 3 4 5][1 2 3 4 5]\r\n\r\n\r\n*Input:* n  (Integer from 1 to 31) (16 Actual Cases 2:11 13 17 19 23 29 31) \r\n\r\n*Output:* Vector of values 1:n\r\n\r\nExample:\r\n\r\nInput: 5  Output: [3 1 4 5 2]  \r\n\r\nScore: 7  \r\n\r\nA minimum cumulative score of 531 for the 17 cases is required to Pass.\r\n\r\nFinal Score = 2531 - sum(scores)\r\n\r\n*Hints:*\r\n\r\nUsage of perms for 10 or higher may cause Cody Memory/Time issues. Random subsets are suggested for n\u003e9.\r\n\r\nRequest: If Code is implemented external then please post as a block comment.\r\n\r\nFaster Code Block than fliplr:\r\n\r\n  function count=process_seq(seq)\r\n   count=0;\r\n   while seq(1)\u003e1\r\n    count=count+1;\r\n    seq(1:seq(1))=seq(seq(1):-1:1);\r\n   end\r\n  end","description_html":"\u003cp\u003eThis Challenge, based upon a contest in which Rokicki came in 2nd, is to find sequences containing 1:N that require maximum iterations prior to the value 1 appearing in the first position.\u003c/p\u003e\u003cp\u003eThe processing rule is that positions 1 thru Vector(1) are swapped. Processing stops when Vector(1) is 1.\u003c/p\u003e\u003cp\u003e\u003cb\u003eExample Sequences:\u003c/b\u003e\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e[3 1 2], [2 1 3], [1 2 3] Score 2\r\n[3 1 4 5 2][4 1 3 5 2][5 3 1 4 2][2 4 1 3 5][4 2 1 3 5][3 1 2 4 5][2 1 3 4 5][1 2 3 4 5]\r\n\u003c/pre\u003e\u003cp\u003e\u003cb\u003eInput:\u003c/b\u003e n  (Integer from 1 to 31) (16 Actual Cases 2:11 13 17 19 23 29 31)\u003c/p\u003e\u003cp\u003e\u003cb\u003eOutput:\u003c/b\u003e Vector of values 1:n\u003c/p\u003e\u003cp\u003eExample:\u003c/p\u003e\u003cp\u003eInput: 5  Output: [3 1 4 5 2]\u003c/p\u003e\u003cp\u003eScore: 7\u003c/p\u003e\u003cp\u003eA minimum cumulative score of 531 for the 17 cases is required to Pass.\u003c/p\u003e\u003cp\u003eFinal Score = 2531 - sum(scores)\u003c/p\u003e\u003cp\u003e\u003cb\u003eHints:\u003c/b\u003e\u003c/p\u003e\u003cp\u003eUsage of perms for 10 or higher may cause Cody Memory/Time issues. Random subsets are suggested for n\u003e9.\u003c/p\u003e\u003cp\u003eRequest: If Code is implemented external then please post as a block comment.\u003c/p\u003e\u003cp\u003eFaster Code Block than fliplr:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003efunction count=process_seq(seq)\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nend\r\n\u003c/pre\u003e","function_template":"function max_seq=find_max_swap_seq(n)\r\n max_seq=1:n;\r\n count=process_seq(max_seq);\r\nend\r\n\r\n% Suggested function for sequence performance evaluation\r\nfunction count=process_seq(seq)\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nend","test_suite":"tic\r\nfeval(@assignin,'caller','score',2000);\r\n%%\r\n% 2 1\r\nglobal cseq\r\ncseq{1}=1; % Gift answer\r\nmax_seq=find_max_swap_seq(2);\r\nassert(isequal(1:2,unique(max_seq)))\r\ncseq{2}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 3 2\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(3);\r\nassert(isequal(1:3,unique(max_seq)))\r\ncseq{3}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 4 4\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(4);\r\nassert(isequal(1:4,unique(max_seq)))\r\ncseq{4}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 5 7\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(5);\r\nassert(isequal(1:5,unique(max_seq)))\r\ncseq{5}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 6 10\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(6);\r\nassert(isequal(1:6,unique(max_seq)))\r\ncseq{6}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 7 16\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(7);\r\nassert(isequal(1:7,unique(max_seq)))\r\ncseq{7}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 8 22\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(8);\r\nassert(isequal(1:8,unique(max_seq)))\r\ncseq{8}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n% 9 30\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(9);\r\nassert(isequal(1:9,unique(max_seq)))\r\ncseq{9}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%10 38\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(10);\r\nassert(isequal(1:10,unique(max_seq)))\r\ncseq{10}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%11 51\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(11);\r\nassert(isequal(1:11,unique(max_seq)))\r\ncseq{11}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%13 80 case 12\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(13);\r\nassert(isequal(1:13,unique(max_seq)))\r\ncseq{12}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%17 159 case 13\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(17);\r\nassert(isequal(1:17,unique(max_seq)))\r\ncseq{13}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%19 221 case 14\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(19);\r\nassert(isequal(1:19,unique(max_seq)))\r\ncseq{14}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%23 382 case 15\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(23);\r\nassert(isequal(1:23,unique(max_seq)))\r\ncseq{15}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%29 689 case 16\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(29);\r\nassert(isequal(1:29,unique(max_seq)))\r\ncseq{16}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\n%%\r\n%31 819 case 17\r\nglobal cseq\r\nmax_seq=find_max_swap_seq(31);\r\nassert(isequal(1:31,unique(max_seq)))\r\ncseq{17}=max_seq;\r\n seq=max_seq;\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\nfprintf('count %i\\n',count)\r\nfprintf('%i ',max_seq)\r\nfprintf('\\n')\r\ntoc\r\n%%\r\nglobal cseq\r\ntotal=0;\r\nfor i=2:17\r\n seq=cseq{i};\r\n count=0;\r\n while seq(1)\u003e1\r\n  count=count+1;\r\n  seq(1:seq(1))=seq(seq(1):-1:1);\r\n end\r\n total=total+count;\r\nend\r\n\r\n% 2531 is optimal sum\r\ntotal=sum([0 1 2 4 7 10 16 22 30 38 51 80 159 221 382 689 819])-total;\r\nassert(total\u003c2001); % Minimum performance requirement\r\n\r\ntoc\r\nfeval(@assignin,'caller','score',min(2000,total));\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":1,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":8,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2013-05-13T01:28:12.000Z","updated_at":"2026-04-01T14:34:03.000Z","published_at":"2013-05-13T04:01: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\u003eThis Challenge, based upon a contest in which Rokicki came in 2nd, is to find sequences containing 1:N that require maximum iterations prior to the value 1 appearing in the first 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\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe processing rule is that positions 1 thru Vector(1) are swapped. Processing stops when Vector(1) is 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:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eExample Sequences:\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[[3 1 2], [2 1 3], [1 2 3] Score 2\\n[3 1 4 5 2][4 1 3 5 2][5 3 1 4 2][2 4 1 3 5][4 2 1 3 5][3 1 2 4 5][2 1 3 4 5][1 2 3 4 5]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eInput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e n (Integer from 1 to 31) (16 Actual Cases 2:11 13 17 19 23 29 31)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eOutput:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e Vector of values 1:n\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExample:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInput: 5 Output: [3 1 4 5 2]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eScore: 7\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 minimum cumulative score of 531 for the 17 cases is required to Pass.\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\u003eFinal Score = 2531 - sum(scores)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHints:\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\u003eUsage of perms for 10 or higher may cause Cody Memory/Time issues. Random subsets are suggested for n\u0026gt;9.\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\u003eRequest: If Code is implemented external then please post as a block comment.\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\u003eFaster Code Block than fliplr:\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[function count=process_seq(seq)\\n count=0;\\n while seq(1)\u003e1\\n  count=count+1;\\n  seq(1:seq(1))=seq(seq(1):-1:1);\\n end\\nend]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":52338,"title":"ICFP2021 Hole-In-Wall: Solve Score=0, where number Hole Vertices = Figure Vertices","description":"The ICFP held its annual 3-day contest in July 2021 with Hole-In-Wall. Contest Specification.\r\nThe contest folds the figure in Red to fit within the hole shown in light grey \r\nThis Challenge is to solve ICFP problems 11, 13, 16, 17, 18, and 23 according to the Specification when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths.\r\nValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u003c= epsilon/1000000.  Lsqr is length squared.\r\nScore is sum of minimum square distances to the figure from each unique hole vertex. \r\nnpxy=Solve_nPeqnH(hxy, pxy, mseg, epsilon)  \r\nThis challenge set all have optimal Scores of zero. The npxy vertices set must be a permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH.\r\nThe function template includes routines to read ICFP problem files and to write ICFP solution files.\r\nThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use Register Team. Anyone can select Problems Page and then click problem numbers to see the puzzles and to download problem files.","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: 745px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 372.5px; transform-origin: 407px 372.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 14px 7.91667px; transform-origin: 14px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.icfpconference.org/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eICFP\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 146.65px 7.91667px; transform-origin: 146.65px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e held its annual 3-day contest in July 2021 with \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eHole-In-Wall\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 29.95px 7.91667px; transform-origin: 29.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Contest \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 7.91667px; transform-origin: 1.95px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 295px; 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 147.5px; text-align: left; transform-origin: 384px 147.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: 230.267px 7.91667px; transform-origin: 230.267px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe contest folds the figure in Red to fit within the hole shown in light grey \u003c/span\u003e\u003c/span\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: middle;width: 223px;height: 295px\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\" width=\"223\" height=\"295\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 126px; 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 63px; text-align: left; transform-origin: 384px 63px; 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: 263.2px 7.91667px; transform-origin: 263.2px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to solve ICFP problems 11, 13, 16, 17, 18, and 23 according to the \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 66.1333px 7.91667px; transform-origin: 66.1333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths.\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: 384px 7.91667px; transform-origin: 384px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/52308\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eScore\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250.1px 7.91667px; transform-origin: 250.1px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e is sum of minimum square distances to the figure from each unique hole vertex. \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 151.6px 7.91667px; transform-origin: 151.6px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003enpxy=Solve_nPeqnH(hxy, pxy, mseg, epsilon)\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: 3.88333px 7.91667px; transform-origin: 3.88333px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e  \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: 367.567px 7.91667px; transform-origin: 367.567px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis challenge set all have optimal Scores of zero. The npxy vertices set must be a permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH.\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: 303.4px 7.91667px; transform-origin: 303.4px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; 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 42px; text-align: left; transform-origin: 384px 42px; 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: 375.883px 7.91667px; transform-origin: 375.883px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/register\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eRegister Team\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42.7833px 7.91667px; transform-origin: 42.7833px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Anyone can select \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/problems\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblems Page\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 256.35px 7.91667px; transform-origin: 256.35px 7.91667px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e and then click problem numbers to see the puzzles and to download problem files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function npxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon)\r\n% hxy hole vertices in order of connection. Last row repeats first for use in inpolygon\r\n% pxy figure original vertices used for initial segment length calculations\r\n% mseg is paired list of connected vertices\r\n% epsilon is allowed stretchiness of segment. hxy,pxy,npxy are all integer\r\n% Output: npxy is figure final vertices\r\n nseg=size(mseg,1);\r\n %hplot(hxy,pxy,mseg,nseg,1);\r\n \r\n npxy=hxy(1:end-1,:);\r\n msegMM=calc_msegMM(pxy,mseg,epsilon,nseg)\r\n %hplot3(hxy,npxy,mseg,nseg,3,segMM);\r\n \r\nend % Solve_nPeqnH(hxy,pxy,mseg,epsilon)\r\n\r\nfunction msegMM=calc_msegMM(pxy,mseg,epsilon,nseg)\r\n%determine Min and Max integer value of allowed length squared for each segment\r\n%abs(Lsqr(npxy,seg(i))/Lsqr(pxy,seg(i))-1)\u003c= epsilon/1000000.\r\n%mseg has indices of connected vertices [nseg,2].  The nseg may exceed number of vertices.\r\n msegMM=zeros(nseg,2);\r\n for i=1:nseg\r\n  Lseg=sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n  delta=floor(epsilon*Lseg/1000000);\r\n  msegMM(i,:)=[-delta delta]+Lseg;\r\n end\r\nend % calc_msegMM\r\n\r\n\r\n%These routines can be used to read ICFP problems, write ICFP text file, and visualize the data\r\n\r\n% function [epsilon,hxy,pxy,mseg]=read_problem(pid)\r\n%  fid=fopen([num2str(pid) '.problem'],'r');\r\n%   pstr=fgetl(fid);\r\n%  fclose(fid)\r\n%  \r\n%  Lpstr=length(pstr);\r\n%  holidx=findstr('\"hole\":[[',pstr); %starting location match\r\n%  epsidx=findstr('\"epsilon\":',pstr);\r\n%  figidx=findstr(',\"figure\"',pstr);\r\n%  edgidx=findstr('\"edges\":[[',pstr);\r\n%  veridx=findstr('\"vertices\":[[',pstr);\r\n%  epsilon=str2num(pstr(epsidx+10:figidx-1));\r\n%  \r\n%  hxy=reshape(str2num(pstr(holidx+8:epsidx-3)),2,[])';\r\n%  hxy=[hxy;hxy(1,:)]; %repeat row1 to close path\r\n%  \r\n%  pxy=reshape(str2num(pstr(veridx+12:Lpstr-3)),2,[])';\r\n%  \r\n%  mseg=reshape(str2num(pstr(edgidx+9:veridx-3)),2,[])'+1;\r\n% end % read_problem\r\n\r\n% function write_submission(npxy,pid)\r\n%  fname=['Solution_' num2str(pid) '_' datestr(now,'yyyymmdd_HHMMSS') '.txt'];\r\n%  fid=fopen(fname,'wt'); % t for notepad editing\r\n%  \r\n%  %Create ICFP submission\r\n%  fprintf('{\"vertices\": [');\r\n%  fprintf(fid,'{\"vertices\": [');\r\n%  for i=1:size(npxy,1)-1 \r\n%   fprintf('[%i,%i],',npxy(i,:));\r\n%   fprintf(fid,'[%i,%i],',npxy(i,:));\r\n%  end \r\n%  fprintf('[%i,%i]]}\\n',npxy(end,:));\r\n%  fprintf(fid,'[%i,%i]]}\\n',npxy(end,:));\r\n%  fclose(fid);\r\n% end\r\n\r\n\r\n% function hplot(vxy,qxy,mseg,Lmseg,id)\r\n% %Need check of segment crossing a hole segment but ignore endpoint\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1)%length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i),'FontSize',12);\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    if in(mseg(i,1))+in(mseg(i,2))\u003c2\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment to OOB pt\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-')\r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%    \r\n%   axis tight\r\n%   axis ij\r\n%   hold off  \r\n% end % hplot\r\n\r\n% function hplot3(vxy,qxy,mseg,Lmseg,id,segMM)\r\n%  segMNM=[segMM(:,1) segMM(:,1)+segMM(:,2) segMM(:,2)];\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1) %length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i));\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    d2seg=(qxy(mseg(i,1),1)-qxy(mseg(i,2),1))^2+(qxy(mseg(i,1),2)-qxy(mseg(i,2),2))^2;\r\n%    if d2seg\u003csegMNM(i,1)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-') % segment too short\r\n%    elseif d2seg\u003esegMNM(i,3)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment too long\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'g-') \r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%   \r\n%   axis tight\r\n%   axis ij\r\n%   hold off\r\n% end % hplot3","test_suite":"%%\r\n% ICFP Problem Id 11\r\nepsilon=0;\r\nhxy=[10 0;10 10;0 10;10 0];\r\npxy=[0 0;10 0;10 10];\r\nmseg=[1 2;2 3;3 1];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 13\r\nepsilon=2494;\r\nhxy=[20 0;40 20;20 40;0 20;20 0];\r\npxy=[15 21;34 0;0 45;19 24];\r\nmseg=[1 2;1 3;2 4;3 4];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 16\r\nepsilon=8897;\r\nhxy=[0 7;22 0;36 19;22 38;0 31;0 7];\r\npxy=[8 6;26 22;21 25;19 0;0 14];\r\nmseg=[1 2;1 3;2 4;3 5;4 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 17\r\nepsilon=11966;\r\nhxy=[0 31;18 0;48 18;30 48;0 65;0 31];\r\npxy=[27 36;0 57;28 0;32 70;29 35];\r\nmseg=[1 2;1 3;1 4;2 4;3 5;4 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 18\r\nepsilon=6731;\r\nhxy=[34 0;17 30;10 62;13 30;0 0;34 0];\r\npxy=[0 0;0 34;17 62;30 17;45 46];\r\nmseg=[1 2;1 4;2 3;2 4;3 5;4 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 22\r\nepsilon=30202;\r\nhxy=[30 0;64 1;94 18;64 35;29 35;0 18;30 0];\r\npxy=[29 67;32 34;0 47;32 34;26 0;0 22];\r\nmseg=[1 2;1 3;2 3;2 5;3 4;4 5;4 6;5 6];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 23\r\nepsilon=8317;\r\nhxy=[0 0;30 17;60 41;41 72;10 69;0 34;0 0];\r\npxy=[0 0;0 34;10 69;30 17;39 80;54 47];\r\nmseg=[1 2;1 4;2 3;2 4;3 5;4 6;5 6];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(sortrows(hxy),sortrows([npxy;hxy(1,:)])); %only hole vertices allowed\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":2,"test_suite_updated_at":"2021-07-20T23:17:27.000Z","rescore_all_solutions":true,"group_id":1,"created_at":"2021-07-20T13:12:58.000Z","updated_at":"2021-07-20T23:17:27.000Z","published_at":"2021-07-20T14:53:37.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.icfpconference.org/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eICFP\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e held its annual 3-day contest in July 2021 with \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHole-In-Wall\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Contest \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe contest folds the figure in Red to fit within the hole shown in light grey \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"295\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"223\\\"/\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\u003eThis Challenge is to solve ICFP problems 11, 13, 16, 17, 18, and 23 according to the \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths.\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\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/52308\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eScore\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is sum of minimum square distances to the figure from each unique hole vertex. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enpxy=Solve_nPeqnH(hxy, pxy, mseg, epsilon)\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\u003eThis challenge set all have optimal Scores of zero. The npxy vertices set must be a permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/register\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eRegister Team\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Anyone can select \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/problems\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblems Page\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and then click problem numbers to see the puzzles and to download problem files.\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":52343,"title":"ICFP2021 Hole-In-Wall: Solve Score=0, where number of Figure Vertices = Hole Vertices + 1","description":"The ICFP held its annual 3-day contest in July 2021 with Hole-In-Wall. Contest Specification.\r\nThe contest folds the figure in Red to fit within the hole shown in light grey \r\nThis Challenge is to solve ICFP problems 12, 15, 20, 25, 26, and 39 according to the Specification when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. ICFP problem 47 is of this form but with 10 hole vertices a brute force method may take 180 seconds so this will be a separate challenge.\r\nValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u003c= epsilon/1000000.  Lsqr is length squared.\r\nScore is sum of minimum square distances to the figure from each unique hole vertex. \r\nnpxy=Solve_nPeqnH1(hxy, pxy, mseg, epsilon)  \r\nThis challenge set all have optimal Scores of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one.\r\nThe function template includes routines to read ICFP problem files and to write ICFP solution files.\r\nThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use Register Team. Anyone can select Problems Page and then click problem numbers to see the puzzles and to download problem files.","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: 672px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 336px; transform-origin: 407px 336px; 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: 14px 8.05px; transform-origin: 14px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.icfpconference.org/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eICFP\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 146.65px 8.05px; transform-origin: 146.65px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e held its annual 3-day contest in July 2021 with \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eHole-In-Wall\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 29.95px 8.05px; transform-origin: 29.95px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Contest \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 8.05px; transform-origin: 1.95px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 201px; 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 100.5px; text-align: left; transform-origin: 384px 100.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: 230.267px 8.05px; transform-origin: 230.267px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe contest folds the figure in Red to fit within the hole shown in light grey \u003c/span\u003e\u003c/span\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: middle;width: 208px;height: 201px\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\" width=\"208\" height=\"201\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 147px; 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 73.5px; text-align: left; transform-origin: 384px 73.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: 263.717px 8.05px; transform-origin: 263.717px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to solve ICFP problems 12, 15, 20, 25, 26, and 39 according to the \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 66.1333px 8.05px; transform-origin: 66.1333px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. ICFP problem 47 is of this form but with 10 hole vertices a brute force method may take 180 seconds so this will be a separate challenge.\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: 384px 8.05px; transform-origin: 384px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/52308\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eScore\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250.1px 8.05px; transform-origin: 250.1px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e is sum of minimum square distances to the figure from each unique hole vertex. \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: 155.5px 8.05px; transform-origin: 155.5px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003enpxy=Solve_nPeqnH1(hxy, pxy, mseg, epsilon)\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: 3.88333px 8.05px; transform-origin: 3.88333px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e  \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: 383.017px 8.05px; transform-origin: 383.017px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis challenge set all have optimal Scores of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one.\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: 303.4px 8.05px; transform-origin: 303.4px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; 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 42px; text-align: left; transform-origin: 384px 42px; 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: 375.883px 8.05px; transform-origin: 375.883px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/register\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eRegister Team\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42.7833px 8.05px; transform-origin: 42.7833px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Anyone can select \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/problems\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblems Page\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 256.35px 8.05px; transform-origin: 256.35px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e and then click problem numbers to see the puzzles and to download problem files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function npxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon)\r\n%nH+1 equals nP and Score =0 optimally, nH is before repeating row 1\r\n%Create all nchoosek index set of np then try all permutations.\r\n%Check that all segments created have valid lengths\r\n%Create final point placement based upon segment constraints until sequence passes\r\n% npxy(pnckset(i),:)= hxy(1:end-1,:), width of pnckset is nP-1 so one node is TBD\r\n npxy=pxy;\r\n nseg=size(mseg,1);\r\n msegMM=calc_msegMM(pxy,mseg,epsilon,nseg); %Create Min and Max segment integer values\r\n \r\n hxy1=hxy(1:end-1,:); % speed up method\r\n np=size(npxy,1);\r\n vpn=zeros(np,1);\r\n % Note:  ***  Indicates line was changed from working program\r\n pnchk=nchoosek(1,1); % ***     Create nchoosek matrix of 1:np of np-1 points\r\n mperms=perms(1:np-1); % fast repetitve perms method, create a mapping array\r\n Lpnchk=size(pnchk,1);\r\n for ipnchk=1:Lpnchk % subset of figure vertices to place onto hole vertices\r\n  vpnchk=pnchk(ipnchk,:); % create a vector to use in perm set matrix\r\n  phset=vpnchk(mperms); % fast phset creation using perms matrix\r\n  nphset=size(phset,1);\r\n \r\n  for i=1:nphset %  This is the large loop over permutations\r\n   npxy=npxy*0; \r\n   vphset=phset(i,:); \r\n   npxy(vphset,:)=hxy1; % load hole vertices into figure vertex matrix, one row is [0 0] unset\r\n   vpn=0*vpn; \r\n   vpn(vphset)=1; % vpn is vector that indicates used figure vertices\r\n   fail=0;\r\n   for segptr=1:nseg\r\n    if prod(vpn([0 0])) % *** check if both figure vertices were set \r\n     L2seg=sum((npxy(mseg(segptr,1),:)-npxy(mseg(segptr,2),:)).^2);\r\n     if prod([0 0])\u003e0 % *** Verify L2seg is valid length squared\r\n      fail=1; % set flag to try next permutation\r\n      break; % break out of segment L2 checker\r\n     end\r\n    end\r\n   end\r\n   if fail,continue;end %length of subset placed vertices placed on hole vertices failed\r\n   \r\n   %Hole Points covered. Have 1 free point to place constrained by its segments\r\n   node=find(vpn==-1); % ***    Find unset node\r\n  \r\n   cptr=1; % Flag to enable first set of points for a segment containing unset vertex\r\n   for fseg=1:nseg\r\n    if prod(vpn([0 0])),continue;end % ***    Check if Both seg vertices set\r\n    MM=msegMM(fseg,:); % Create [Min Max] vector\r\n    Node2=mseg(fseg,:);\r\n    Node2(1)=[]; % ***  Reduce Node2 to a single value of the set vertex\r\n    \r\n    if cptr==1 % create an initial list of all in range and then inpolygon\r\n     Lmm=ceil(MM(2)^.5);\r\n     dmap=(0:Lmm).^2;\r\n     dmap=repmat(dmap,Lmm+1,1);\r\n     dmap=dmap+dmap'; % Create a 2D map of distance squared from [0,0]. dmap(1,1) is [0,0]\r\n     % This 2D map is of the Positive XY quadrant.  The goal will be to find  all valid [dx dy]\r\n     dmap(1,:)=0; % ***      Remove Points less than Min Seg length\r\n     dmap(1,:)=0; % ***      Remove Points greater than Max Seg length\r\n     [dx,dy]=find(dmap);\r\n     dx=dx-1; dy=dy-1; % remove 1,1 offset from grid\r\n     dxy=[dx dy;dx -dy;-dx dy;-dx -dy];  % Create all valid deltas by symmetry about [0,0]\r\n     mxy=dxy+npxy(Node2,:);  % Create matrix of all points in the valid region\r\n     % remove negatives from hole comparison as hole is all positive\r\n     mxy=mxy(1,:); % ***     Speed option remove all points with neg x values\r\n     mxy=mxy(1,:); % ***     Speed option remove all points with neg y values\r\n     in=inpolygon(mxy(:,1),mxy(:,2),hxy(:,1),hxy(:,2));  % Find all valid in-hole points\r\n     mxy=mxy(1,:); % ***   reduce to in-hole points\r\n     cptr=2; % set flag so next segment check only uses residual mxy points\r\n    else % test points from m for additional new fseg constraint and prune\r\n     Lmxy=size(mxy,1);\r\n     vmxy=ones(Lmxy,1); % Valid mxy vector\r\n     for ptrmxy=1:Lmxy\r\n      d2=sum(([0 0]).^2);  % *** Calc dist squared from mxy to Node2\r\n      if d2\u003cMM(1),vmxy(ptrmxy)=0;end % clear vmxy for too short\r\n      if d2\u003eMM(2),vmxy(ptrmxy)=0;end % clear vmxy for too long\r\n     end\r\n     mxy=mxy(vmxy\u003e0,:);\r\n     if isempty(mxy)    %If no points left in mxy then vertex could not reach from set nodes\r\n      fail=1;\r\n      break;\r\n     end\r\n    end % cptr==1\r\n   end % fseg 1:nseg\r\n   if fail,continue;end  % Try next permutation\r\n   \r\n   npxy(node,:)=mxy(1,:); % solution found\r\n   fprintf('Solution found\\n');\r\n   return;\r\n  end % i nhpset\r\n end %ipnchk Lpnchk\r\n \r\n fprintf('No solution found\\n');\r\nend %Solve_nPeqnH1\r\n\r\nfunction msegMM=calc_msegMM(pxy,mseg,epsilon,nseg)\r\n%determine Min and Max integer value of allowed length squared for each segment\r\n%abs(Lsqr(npxy,seg(i))/Lsqr(pxy,seg(i))-1)\u003c= epsilon/1000000.\r\n%mseg has indices of connected vertices [nseg,2].  The nseg may exceed number of vertices.\r\n msegMM=zeros(nseg,2);\r\n for i=1:nseg\r\n  Lseg=sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n  delta=floor(epsilon*Lseg/1000000);\r\n  msegMM(i,:)=[-delta delta]+Lseg;\r\n end\r\nend % calc_msegMM\r\n\r\n\r\n%These routines can be used to read ICFP problems, write ICFP text file, and visualize the data\r\n\r\n% function [epsilon,hxy,pxy,mseg]=read_problem(pid)\r\n%  fid=fopen([num2str(pid) '.problem'],'r');\r\n%   pstr=fgetl(fid);\r\n%  fclose(fid)\r\n%  \r\n%  Lpstr=length(pstr);\r\n%  holidx=findstr('\"hole\":[[',pstr); %starting location match\r\n%  epsidx=findstr('\"epsilon\":',pstr);\r\n%  figidx=findstr(',\"figure\"',pstr);\r\n%  edgidx=findstr('\"edges\":[[',pstr);\r\n%  veridx=findstr('\"vertices\":[[',pstr);\r\n%  epsilon=str2num(pstr(epsidx+10:figidx-1));\r\n%  \r\n%  hxy=reshape(str2num(pstr(holidx+8:epsidx-3)),2,[])';\r\n%  hxy=[hxy;hxy(1,:)]; %repeat row1 to close path\r\n%  \r\n%  pxy=reshape(str2num(pstr(veridx+12:Lpstr-3)),2,[])';\r\n%  \r\n%  mseg=reshape(str2num(pstr(edgidx+9:veridx-3)),2,[])'+1;\r\n% end % read_problem\r\n\r\n% function write_submission(npxy,pid)\r\n%  fname=['Solution_' num2str(pid) '_' datestr(now,'yyyymmdd_HHMMSS') '.txt'];\r\n%  fid=fopen(fname,'wt'); % t for notepad editing\r\n%  \r\n%  %Create ICFP submission\r\n%  fprintf('{\"vertices\": [');\r\n%  fprintf(fid,'{\"vertices\": [');\r\n%  for i=1:size(npxy,1)-1 \r\n%   fprintf('[%i,%i],',npxy(i,:));\r\n%   fprintf(fid,'[%i,%i],',npxy(i,:));\r\n%  end \r\n%  fprintf('[%i,%i]]}\\n',npxy(end,:));\r\n%  fprintf(fid,'[%i,%i]]}\\n',npxy(end,:));\r\n%  fclose(fid);\r\n% end\r\n\r\n\r\n% function hplot(vxy,qxy,mseg,Lmseg,id)\r\n% %Need check of segment crossing a hole segment but ignore endpoint\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1)%length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i),'FontSize',12);\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    if in(mseg(i,1))+in(mseg(i,2))\u003c2\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment to OOB pt\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-')\r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%    \r\n%   axis tight\r\n%   axis ij\r\n%   hold off  \r\n% end % hplot\r\n\r\n% function hplot3(vxy,qxy,mseg,Lmseg,id,segMM)\r\n%  segMNM=[segMM(:,1) segMM(:,1)+segMM(:,2) segMM(:,2)];\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1) %length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i));\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    d2seg=(qxy(mseg(i,1),1)-qxy(mseg(i,2),1))^2+(qxy(mseg(i,1),2)-qxy(mseg(i,2),2))^2;\r\n%    if d2seg\u003csegMNM(i,1)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-') % segment too short\r\n%    elseif d2seg\u003esegMNM(i,3)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment too long\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'g-') \r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%   \r\n%   axis tight\r\n%   axis ij\r\n%   hold off\r\n% end % hplot3","test_suite":"%%\r\ntic\r\n% ICFP Problem Id 12\r\nepsilon=0;\r\nhxy=[28 0;56 4;0 4;28 0];\r\npxy=[0 20;20 0;20 40;40 20];\r\nmseg=[1 2;1 3;2 4;3 4];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 15\r\nepsilon=1250;\r\nhxy=[15 0;35 20;20 44;0 24;15 0];\r\npxy=[0 20;20 0;20 40;40 20;49 45];\r\nmseg=[1 2;1 3;2 4;3 4;3 5;4 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 20\r\n% nh 5  np 6\r\nepsilon=4757;\r\nhxy=[20 0;62 39;41 56;20 40;0 20;20 0];\r\npxy=[20 12;0 32;46 1;26 21;67 17;46 0];\r\nmseg=[1 2;1 3;2 4;3 4;3 5;4 6;5 6];\r\n\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 25\r\n% nh 6  np 7\r\nepsilon=16310;\r\nhxy=[0 20;28 0;55 61;40 96;7 91;0 54;0 20];\r\npxy=[18 2;52 0;16 11;0 31;37 31;47 24;14 5];\r\nmseg=[1 2;1 4;1 5;2 3;2 5;3 6;4 5;5 7;6 7];\r\n\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 26\r\nepsilon=15671;\r\nhxy=[17 17;46 0;76 17;80 51;26 65;0 46;17 17];\r\npxy=[64 0;34 15;53 30;53 43;19 45;34 14;0 12];\r\nmseg=[1 2;1 3;2 4;2 5;3 5;3 7;4 5;4 6;5 6;5 7;6 7];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 39\r\nepsilon=20037;\r\nhxy=[5 7;39 0;59 33;56 76;45 110;6 111;0 73;0 39;5 7];\r\npxy=[4 8;6 42;23 34;37 19;35 23;16 0;5 42;38 56;0 35];\r\nmseg=[1 2;1 3;1 5;2 4;2 5;3 6;4 7;5 8;5 9;6 9;7 8;8 9];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_nPeqnH1(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\nassert(isequal(valid,1))\r\n%%\r\n% ICFP Problem Id 47  75% of hole edges not covered in solution. All hole vertices covered.\r\n% possible method force longest fig segment onto pair hole vertices then perms\r\n% brute force processing will take 180 seconds so not part of this cody challenge\r\nepsilon=41323;\r\nhxy=[6 14;36 19;40 17;69 0;79 21;41 36;36 33;16 44;7 34;0 28;6 14];\r\npxy=[0 11;1 85;8 56;11 0;14 45;14 59;14 88;30 37;30 56;56 85;67 64];\r\nmseg=[1 4;4 8;8 5;5 1;8 11;11 10;10 9;9 8;5 6;6 9;9 7;7 2;2 6;6 3;3 5];\r\ntoc","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":2,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2021-07-21T13:12:20.000Z","updated_at":"2021-07-21T19:14:23.000Z","published_at":"2021-07-21T19:14: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 \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.icfpconference.org/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eICFP\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e held its annual 3-day contest in July 2021 with \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHole-In-Wall\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Contest \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe contest folds the figure in Red to fit within the hole shown in light grey \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"201\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"208\\\"/\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\u003eThis Challenge is to solve ICFP problems 12, 15, 20, 25, 26, and 39 according to the \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. ICFP problem 47 is of this form but with 10 hole vertices a brute force method may take 180 seconds so this will be a separate challenge.\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\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/52308\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eScore\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is sum of minimum square distances to the figure from each unique hole vertex. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enpxy=Solve_nPeqnH1(hxy, pxy, mseg, epsilon)\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\u003eThis challenge set all have optimal Scores of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/register\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eRegister Team\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Anyone can select \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/problems\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblems Page\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and then click problem numbers to see the puzzles and to download problem files.\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":52355,"title":"ICFP2021 Hole-In-Wall: Solve Problem 47,   Score=0, Figure Vertices 11,  Hole Vertices 10","description":"The ICFP held its annual 3-day contest in July 2021 with Hole-In-Wall. Contest Specification.\r\nThe contest folds the figure in Red to fit within the hole shown in light grey. A final solution is shown to aid in programming. \r\nThis Challenge is to solve ICFP problems 47 according to the Specification when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. Brute force of  problem 47 may take 180 seconds due to the 10 hole vertices.\r\nValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u003c= epsilon/1000000.  Lsqr is length squared.\r\nScore is sum of minimum square distances to the figure from each unique hole vertex. \r\nnpxy=Solve_ICFP047(hxy, pxy, mseg, epsilon)  \r\nThis challenge requires a Score of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one. One method would be to reduce the nchoosek to force the longest figure segment to fit across a pair of hole vertices.  This problem with its solution shown shows that a recursive point to available hole vertices could be a more general solution.\r\nThe function template includes routines to read ICFP problem files and to write ICFP solution files.\r\nThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use Register Team. Anyone can select Problems Page and then click problem numbers to see the puzzles and to download problem files.","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: 775px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 387.5px; transform-origin: 407px 387.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 14px 8.05px; transform-origin: 14px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://www.icfpconference.org/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eICFP\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 146.65px 8.05px; transform-origin: 146.65px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e held its annual 3-day contest in July 2021 with \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eHole-In-Wall\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 29.95px 8.05px; transform-origin: 29.95px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Contest \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 1.95px 8.05px; transform-origin: 1.95px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 283px; 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 141.5px; text-align: left; transform-origin: 384px 141.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: 379.9px 8.05px; transform-origin: 379.9px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe contest folds the figure in Red to fit within the hole shown in light grey. A final solution is shown to aid in programming. \u003c/span\u003e\u003c/span\u003e\u003cimg class=\"imageNode\" style=\"vertical-align: top;width: 541px;height: 262px\" src=\"data:image/png;base64,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\" data-image-state=\"image-loaded\" width=\"541\" height=\"262\"\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 126px; 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 63px; text-align: left; transform-origin: 384px 63px; 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: 191.767px 8.05px; transform-origin: 191.767px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis Challenge is to solve ICFP problems 47 according to the \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://icfpcontest2021.github.io/spec-v4.1.pdf\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eSpecification\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 138.367px 8.05px; transform-origin: 138.367px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. Brute force of  problem 47 may take 180 seconds due to the 10 hole vertices.\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: 384px 8.05px; transform-origin: 384px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/52308\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eScore\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 250.1px 8.05px; transform-origin: 250.1px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e is sum of minimum square distances to the figure from each unique hole vertex. \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: 152.783px 8.05px; transform-origin: 152.783px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003enpxy=Solve_ICFP047(hxy, pxy, mseg, epsilon)\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: 3.88333px 8.05px; transform-origin: 3.88333px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; 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 42px; text-align: left; transform-origin: 384px 42px; 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: 384px 8.05px; transform-origin: 384px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThis challenge requires a Score of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one. One method would be to reduce the nchoosek to force the longest figure segment to fit across a pair of hole vertices.  This problem with its solution shown shows that a recursive point to available hole vertices could be a more general solution.\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: 303.4px 8.05px; transform-origin: 303.4px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; 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 42px; text-align: left; transform-origin: 384px 42px; 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: 375.883px 8.05px; transform-origin: 375.883px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/register\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eRegister Team\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 42.7833px 8.05px; transform-origin: 42.7833px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e. Anyone can select \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://poses.live/problems\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblems Page\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 256.35px 8.05px; transform-origin: 256.35px 8.05px; unicode-bidi: normal; \"\u003e\u003cspan style=\"\"\u003e and then click problem numbers to see the puzzles and to download problem files.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function npxy=Solve_ICFP047(hxy,pxy,mseg,epsilon)\r\n%Problem 47 shows potential for recursion but a brute force with reduction can quickly solve\r\n% nH equals nP-1 and Score=0 optimally, nH is before repeating row 1\r\n% Since Score=0 then all hole vertices are covered. \r\n% Know that only 1 figure vertex not on a hole vertex\r\n% Assume that the longest segment spans two hole vertices not necessarily sequential hole nodes\r\n% Identify longest segment and associated hole vertices\r\n% Try all permutations of nchoosek(1:nP,nP-1) after reduced by Long segment nodes and hole nodes \r\n% Verify segments where both nodes are in nck set are correct length\r\n% For unselected vertex find all segments containing and create valid pt sets\r\n% for each segment constraint.  Find point common to all constraint sets\r\n\r\n npxy=pxy;\r\n nseg=size(mseg,1);\r\n msegMM=calc_msegMM(pxy,mseg,epsilon,nseg); %Create Min and Max segment integer values\r\n %hplot(hxy,pxy,mseg,nseg,1);\r\n %hplot3(hxy,npxy,mseg,nseg,3,msegMM);\r\n %hplot4(hxy,npxy,mseg,nseg,4,msegMM);\r\n \r\n hxy1=hxy(1:end-1,:);\r\n np=size(npxy,1); %\r\n vpn=zeros(np,1);\r\n pnchk=nchoosek(1:np,np-1);\r\n \r\n % Note:  ***  Indicates line was changed from working program\r\n ptrLseg=find(msegMM(:,2)==0,1,'first'); % ***  Find max L segment\r\n nodesL=mseg(ptrLseg,:);  % figure nodes of longest figure segment\r\n nodesLMM=msegMM(ptrLseg,:); % Min and Max of selected long figure segment\r\n found=0;\r\n nh=size(hxy,1);\r\n for hi=1:nh-2  % search all hole vertices hi to hj that matches long figure segment\r\n  for hj=hi+1:nh-1\r\n   if prod([0 0])\u003c=0 % ***   Find pair of valid hole vertices\r\n    found=1;\r\n    break;\r\n   end\r\n  end %hj nh\r\n  if found,break;end\r\n end %hi nh\r\n % hi,hj Hole indices that are nodes that fit longest segment\r\n % that will need to be either of nodesL\r\n \r\n % remove nchoosek vectors that omit the long segment of nodesL\r\n pnchkval=sum([0 0],2)\u003e1; % ***\r\n pnchk=pnchk(pnchkval,:);\r\n Lpnchk=size(pnchk,1); % Length of final nchoosek matrix\r\n \r\n mperms=perms(1:np-1); % fast repetitve perms method, create a mapping array\r\n for ipnchk=1:Lpnchk %subset of figure vertices to place onto hole vertices\r\n  vpnchk=pnchk(ipnchk,:);\r\n  phset=vpnchk(mperms); \r\n  % remove matrix rows that lack nodesL in hi,hj columns\r\n  % Massive reduction in phset matrix \r\n  permvalid=phset(:,hi)==0 | phset(:,hi)==0; % ***   match nodesL\r\n  phset=phset(permvalid,:);\r\n  permvalid=phset(:,hj)==0 | phset(:,hj)==0; % ***   match nodesL\r\n  phset=phset(permvalid,:); % Final reduced permutation set that must have nodesL in cols hi,hj\r\n  \r\n  nphset=size(phset,1); % greatly reduced from 10! for each nchoosek vector\r\n \r\n  for i=1:nphset\r\n   npxy=npxy*0;\r\n   vphset=phset(i,:); \r\n   npxy(vphset,:)=hxy1; % load hole vertices into figure vertex matrix, one row is [0 0] unset\r\n   vpn=0*vpn;\r\n   vpn(vphset)=1; % vpn is vector that indicates used figure vertices\r\n   fail=0;\r\n   for segptr=1:nseg\r\n    if prod(vpn(mseg(segptr,:)))\r\n     L2seg=sum((npxy(mseg(segptr,1),:)-npxy(mseg(segptr,2),:)).^2);\r\n     if prod([0 0])\u003e0  % *** Verify L2seg is valid length squared\r\n      fail=1;\r\n      break;\r\n     end\r\n    end\r\n   end\r\n   if fail,continue;end %length of subset placed vertices placed on hole ver failed\r\n   %Hole Points covered. Have 1 free point to place constrained by its segments\r\n   node=find(vpn==0); % Free node to place\r\n  \r\n   cptr=1;\r\n   for fseg=1:nseg\r\n    if prod(vpn(mseg(fseg,:))),continue;end % Both seg vertices placed\r\n    MM=msegMM(fseg,:);  % Create [Min Max] vector\r\n    Node2=mseg(fseg,:);\r\n    Node2(Node2==node)=[]; % Reduce Node2 to a single value of the set vertex\r\n    \r\n    if cptr==1 % create an initial list of all in range and then inpolygon\r\n     Lmm=ceil(MM(2)^.5);\r\n     dmap=(0:Lmm).^2;\r\n     dmap=repmat(dmap,Lmm+1,1);\r\n     dmap=dmap+dmap'; % Create a 2D map of distance squared from [0,0]. dmap(1,1) is [0,0]\r\n     % This 2D map is of the Positive XY quadrant.  The goal will be to find  all valid [dx dy]\r\n     dmap(dmap\u003cMM(1))=0; % Remove Points less than Min Seg length\r\n     dmap(1,:)=0; % ***      Remove Points greater than Max Seg length\r\n     [dx,dy]=find(dmap);\r\n     dx=dx-1; dy=dy-1; % remove 1,1 offset from grid\r\n     dxy=[dx dy;dx -dy;-dx dy;-dx -dy];% Create all valid deltas by symmetry about [0,0]\r\n     mxy=dxy+npxy(Node2,:);% Create matrix of all points in the valid region\r\n     % remove negatives from hole comparison as hole is all positive\r\n     mxy=mxy(mxy(:,1)\u003e=0,:); %         Speed option remove all points with neg x values\r\n     mxy=mxy(1,:);           % ***     Speed option remove all points with neg y values\r\n     in=inpolygon(mxy(:,1),mxy(:,2),hxy(:,1),hxy(:,2));\r\n     mxy=mxy(in,:); %    reduce to in-hole points\r\n     cptr=2;\r\n    else % test points from m for additional new fseg constraint and prune\r\n     Lmxy=size(mxy,1);\r\n     vmxy=ones(Lmxy,1); % Valid mxy vector\r\n     for ptrmxy=1:Lmxy\r\n      d2=sum((mxy(ptrmxy,:)-npxy(Node2,:)).^2); % Calc dist squared from mxy to Node2\r\n      if d2\u003cMM(1),vmxy(ptrmxy)=0;end %   clear vmxy for too short\r\n      if d2\u003eMM(2),vmxy(ptrmxy)=0;end %   clear vmxy for too long\r\n     end\r\n     mxy=mxy(vmxy\u003e0,:);\r\n     if isempty(mxy) %If no points left in mxy then vertex could not reach from set nodes\r\n      fail=1;\r\n      break;\r\n     end\r\n    end % cptr==1\r\n   end % fseg 1:nseg\r\n   if fail,continue;end\r\n   \r\n   npxy(node,:)=mxy(1,:); % solution found  are all valid??? Possible seg fail\r\n   \r\n   fprintf('Solution found\\n');\r\n   %hplot4(hxy,npxy,mseg,nseg,4,msegMM);\r\n   return;\r\n       \r\n  end % nphset\r\n end % ipnchk\r\n \r\n fprintf('No solution found\\n');\r\nend %Solve_ICFP047\r\n\r\nfunction msegMM=calc_msegMM(pxy,mseg,epsilon,nseg)\r\n%determine Min and Max integer value of allowed length squared for each segment\r\n%abs(Lsqr(npxy,seg(i))/Lsqr(pxy,seg(i))-1)\u003c= epsilon/1000000.\r\n%mseg has indices of connected vertices [nseg,2].  The nseg may exceed number of vertices.\r\n msegMM=zeros(nseg,2);\r\n for i=1:nseg\r\n  Lseg=sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n  delta=floor(epsilon*Lseg/1000000);\r\n  msegMM(i,:)=[-delta delta]+Lseg;\r\n end\r\nend % calc_msegMM\r\n\r\n\r\n%These routines can be used to read ICFP problems, write ICFP text file, and visualize the data\r\n\r\n% function [epsilon,hxy,pxy,mseg]=read_problem(pid)\r\n%  fid=fopen([num2str(pid) '.problem'],'r');\r\n%   pstr=fgetl(fid);\r\n%  fclose(fid)\r\n%  \r\n%  Lpstr=length(pstr);\r\n%  holidx=findstr('\"hole\":[[',pstr); %starting location match\r\n%  epsidx=findstr('\"epsilon\":',pstr);\r\n%  figidx=findstr(',\"figure\"',pstr);\r\n%  edgidx=findstr('\"edges\":[[',pstr);\r\n%  veridx=findstr('\"vertices\":[[',pstr);\r\n%  epsilon=str2num(pstr(epsidx+10:figidx-1));\r\n%  \r\n%  hxy=reshape(str2num(pstr(holidx+8:epsidx-3)),2,[])';\r\n%  hxy=[hxy;hxy(1,:)]; %repeat row1 to close path\r\n%  \r\n%  pxy=reshape(str2num(pstr(veridx+12:Lpstr-3)),2,[])';\r\n%  \r\n%  mseg=reshape(str2num(pstr(edgidx+9:veridx-3)),2,[])'+1;\r\n% end % read_problem\r\n\r\n% function write_submission(npxy,pid)\r\n%  fname=['Solution_' num2str(pid) '_' datestr(now,'yyyymmdd_HHMMSS') '.txt'];\r\n%  fid=fopen(fname,'wt'); % t for notepad editing\r\n%  \r\n%  %Create ICFP submission\r\n%  fprintf('{\"vertices\": [');\r\n%  fprintf(fid,'{\"vertices\": [');\r\n%  for i=1:size(npxy,1)-1 \r\n%   fprintf('[%i,%i],',npxy(i,:));\r\n%   fprintf(fid,'[%i,%i],',npxy(i,:));\r\n%  end \r\n%  fprintf('[%i,%i]]}\\n',npxy(end,:));\r\n%  fprintf(fid,'[%i,%i]]}\\n',npxy(end,:));\r\n%  fclose(fid);\r\n% end\r\n\r\n\r\n% function hplot(vxy,qxy,mseg,Lmseg,id)\r\n% %Need check of segment crossing a hole segment but ignore endpoint\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1)%length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i),'FontSize',12);\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    if in(mseg(i,1))+in(mseg(i,2))\u003c2\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment to OOB pt\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-')\r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%    \r\n%   axis tight\r\n%   axis ij\r\n%   hold off  \r\n% end % hplot\r\n\r\n% function hplot3(vxy,qxy,mseg,Lmseg,id,segMM)\r\n%  segMNM=[segMM(:,1) segMM(:,1)+segMM(:,2) segMM(:,2)];\r\n%  [in] = inpolygon(qxy(:,1),qxy(:,2),vxy(:,1),vxy(:,2)); % inside or on edge\r\n%  figure(id)\r\n%   plot(vxy(:,1),vxy(:,2),'k.-') % hole polygon\r\n%   hold on\r\n%   plot(qxy(in,1),qxy(in,2),'b*') % points inside\r\n%   plot(qxy(~in,1),qxy(~in,2),'ro') % points outside\r\n%   for i=1:size(qxy,1) %length(xq)\r\n%    text(qxy(i,1)+.75,qxy(i,2)-1.5,num2str(i));\r\n%   end\r\n%   \r\n%   for i=1:Lmseg\r\n%    d2seg=(qxy(mseg(i,1),1)-qxy(mseg(i,2),1))^2+(qxy(mseg(i,1),2)-qxy(mseg(i,2),2))^2;\r\n%    if d2seg\u003csegMNM(i,1)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'b-') % segment too short\r\n%    elseif d2seg\u003esegMNM(i,3)\r\n%      plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'r-') % segment too long\r\n%    else\r\n%     plot(qxy(mseg(i,:),1),qxy(mseg(i,:),2),'g-') \r\n%    end\r\n%    text(sum(qxy(mseg(i,:),1))/2,sum(qxy(mseg(i,:),2))/2,num2str(i),'Color','b');\r\n%   end\r\n%   \r\n%   %o+*.x_|sd^v\u003e\u003cph\r\n%   %colors ymcrgbwk\r\n%   \r\n%   axis tight\r\n%   axis ij\r\n%   hold off\r\n% end % hplot3\r\n\r\n\r\n","test_suite":"%%\r\n% ICFP Problem  47  \r\n% 75% of hole edges not covered in solution. All hole vertices covered.\r\n% possible method force longest fig segment onto pair hole vertices then perms\r\n% brute force processing will take 180 seconds so not part of this cody challenge\r\ntic\r\n% ICFP Problem Id 47\r\n% nh 10  np 11\r\nepsilon=41323;\r\nhxy=[6 14;36 19;40 17;69 0;79 21;41 36;36 33;16 44;7 34;0 28;6 14];\r\npxy=[0 11;1 85;8 56;11 0;14 45;14 59;14 88;30 37;30 56;56 85;67 64];\r\nmseg=[1 4;4 8;8 5;5 1;8 11;11 10;10 9;9 8;5 6;6 9;9 7;7 2;2 6;6 3;3 5];\r\nnseg=size(mseg,1);\r\nnpxy=Solve_ICFP047(hxy,pxy,mseg,epsilon);\r\nvalid=isequal(npxy,round(npxy));\r\nvalid=valid*isequal(size(npxy),size(pxy));\r\nfor i=1:size(hxy,1) % verify all holes covered\r\n valid=valid*(min(sum(abs(npxy-hxy(i,:)),2))==0);\r\nend\r\nin=inpolygon(npxy(:,1),npxy(:,2),hxy(:,1),hxy(:,2));\r\nvalid=valid*(nnz(in==0)==0);\r\nfor i=1:nseg\r\n L2pxyseg =  sum((pxy(mseg(i,1),:)-pxy(mseg(i,2),:)).^2);\r\n L2npxyseg = sum((npxy(mseg(i,1),:)-npxy(mseg(i,2),:)).^2);\r\n if abs(L2npxyseg/L2pxyseg-1)*1000000 \u003e epsilon\r\n  valid = 0;\r\n  break;\r\n end\r\nend\r\nfprintf('%i %i\\n',npxy');\r\ntoc\r\nassert(isequal(valid,1))\r\n","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":1,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2021-07-21T17:55:33.000Z","updated_at":"2021-07-22T01:54:06.000Z","published_at":"2021-07-22T01:54:06.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.icfpconference.org/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eICFP\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e held its annual 3-day contest in July 2021 with \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eHole-In-Wall\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Contest \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe contest folds the figure in Red to fit within the hole shown in light grey. A final solution is shown to aid in programming. \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"262\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"541\\\"/\u003e\u003cw:attr w:name=\\\"verticalAlign\\\" w:val=\\\"top\\\"/\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\u003eThis Challenge is to solve ICFP problems 47 according to the \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://icfpcontest2021.github.io/spec-v4.1.pdf\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eSpecification\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e when given the hole vertices in hxy, original figure vertices in pxy, segment matrix mseg, and epsilon. The hxy matrix is [N+1,2] where N is number of hole vertices. A repeat of the first vertex occurs for drawing the hole.  The pxy(original) and npxy(final) matrices are [P,2] where P is the number of figure vertices. The mseg indicates connected vertices that must maintain a length as a function of epsilon from the original length. The final figure vertices must be integer thus the allowed fuzziness of segment lengths. Brute force of  problem 47 may take 180 seconds due to the 10 hole vertices.\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\u003eValid is 1) all npxy vertices on or inside the hole, hxy 2) all lengths squared of npxy segments must match the pxy segments within an allowed epsilon, abs(Lsqr(npxy,seg(i,:))/Lsqr(pxy,seg(i,:))-1)\u0026lt;= epsilon/1000000.  Lsqr is length squared.\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:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/52308\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eScore\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e is sum of minimum square distances to the figure from each unique hole vertex. \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enpxy=Solve_ICFP047(hxy, pxy, mseg, epsilon)\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\u003eThis challenge requires a Score of zero. The npxy vertices set must contain an nchoosek(1:nP,nP-1) permutation of the hole vertices as number of figure vertices,nP, equals hole vertices, nH, plus one. One method would be to reduce the nchoosek to force the longest figure segment to fit across a pair of hole vertices.  This problem with its solution shown shows that a recursive point to available hole vertices could be a more general solution.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe function template includes routines to read ICFP problem files and to write ICFP solution files.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe ICFP 2021 Hole In Wall contest site has enabled a public user login to allow submissions. A login must be created to access all the problems and to submit solutions. Solutions are simple text files. Other challenges will show reading files, drawing figures, and producing submission files. To fully access the ICFP/Problems site use \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/register\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eRegister Team\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. Anyone can select \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://poses.live/problems\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblems Page\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e and then click problem numbers to see the puzzles and to download problem files.\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":1101,"title":"USC Fall 2012 ACM : Chemical Analysis","description":"This Challenge is to solve Question D, Chemical Analysis, of the \u003chttp://contest.usc.edu/index.php/Fall12/Home USC ACM Fall 2012 Contest\u003e.\r\n\r\nGiven an array M of Element Spectral signatures(m elements by n Spectra) and a Sample spectra of width n, determine the minimum number of elements that could generate the Sample's spectra.\r\n\r\n\r\nInput: [ A, Sample ]\r\n\r\nOutput: min_elements; \r\n\r\nThe minimum number Components to create the Sample Spectra. If no combination exists then output 0.\r\n\r\nThe full \u003chttp://contest.usc.edu/index.php/Fall12/Home?action=download\u0026upname=analysis.in.txt USC data file\u003e\r\n\r\nInput: [1 1 0 0;0 1 1 1;0 1 1 0;0 1 0 1], [1 1 0 1]\r\n\r\nOutput: 2 as [1 1 0 0] and [0 1 0 1] can create [1 1 0 1]\r\n\r\n\r\n\r\nThe Winning C solution is in the Test Suite to assist - not likely.\r\n\r\n","description_html":"\u003cp\u003eThis Challenge is to solve Question D, Chemical Analysis, of the \u003ca href=\"http://contest.usc.edu/index.php/Fall12/Home\"\u003eUSC ACM Fall 2012 Contest\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eGiven an array M of Element Spectral signatures(m elements by n Spectra) and a Sample spectra of width n, determine the minimum number of elements that could generate the Sample's spectra.\u003c/p\u003e\u003cp\u003eInput: [ A, Sample ]\u003c/p\u003e\u003cp\u003eOutput: min_elements;\u003c/p\u003e\u003cp\u003eThe minimum number Components to create the Sample Spectra. If no combination exists then output 0.\u003c/p\u003e\u003cp\u003eThe full \u003ca href=\"http://contest.usc.edu/index.php/Fall12/Home?action=download\u0026amp;upname=analysis.in.txt\"\u003eUSC data file\u003c/a\u003e\u003c/p\u003e\u003cp\u003eInput: [1 1 0 0;0 1 1 1;0 1 1 0;0 1 0 1], [1 1 0 1]\u003c/p\u003e\u003cp\u003eOutput: 2 as [1 1 0 0] and [0 1 0 1] can create [1 1 0 1]\u003c/p\u003e\u003cp\u003eThe Winning C solution is in the Test Suite to assist - not likely.\u003c/p\u003e","function_template":"function min_elements=Chem_analysis(A,Sample) \r\n min_elements=0;\r\nend","test_suite":"%%\r\ntic\r\nurlwrite('http://contest.usc.edu/index.php/Fall12/Home?action=download\u0026upname=analysis.in.txt','analysis_in.txt')\r\ntoc\r\n%%\r\n fid=fopen('analysis_in.txt','r');\r\n min_elements_expected=[2 0 1 2 0 3 4];\r\n\r\n qty=fscanf(fid,'%i',1);\r\n for q=1:qty\r\n  n = fscanf(fid,'%i %i\\n',2)'; % cols / rows\r\n   \r\n  A=zeros(n)'; % Format is colmns, rows\r\n  for i=1:n(2)\r\n   strv = fgetl(fid);\r\n   A(i,:) = strv - '0';\r\n  end\r\n   strv=fgetl(fid);\r\n   Sample=strv - '0';\r\n    \r\n  min_elements=Chem_analysis(A,Sample);\r\n    \r\n  assert(isequal(min_elements,min_elements_expected(q)));\r\n end % for q\r\n \r\n fclose(fid);\r\n\r\n\r\n% The C Winning Solution\r\n% #include \u003ciostream\u003e\r\n% #include \u003cfstream\u003e\r\n% #include \u003cstring\u003e\r\n% using namespace std;\r\n% int testcases;\r\n% int n, m;\r\n% int now;\r\n% int best;\r\n% string goal;\r\n% string s[1000];\r\n% void search(int i, string status)\r\n% {\r\n% \tif (i == n)\r\n% \t{\r\n% \t\tif (status == goal)\r\n% \t\t{\r\n% \t\t if ((best \u003c 0) || (now \u003c best)) best = now;\r\n% \t\t}\r\n% \t\treturn;\r\n% \t}\r\n% \tsearch(i + 1, status);\r\n% \tstring tmp = status;\r\n% \tfor (int j = 0; j \u003c m; j ++)\r\n% \t{\r\n% \t\tif (s[i][j] == '1') tmp[j] = '1';\r\n% \t}\r\n% \tnow ++;\r\n% \tsearch(i + 1, tmp);\r\n% \tnow --;\r\n% }\r\n% int main()\r\n% {\r\n% \tifstream inf(\"analysis.in\");\r\n% \tinf \u003e\u003e testcases;\r\n% \tfor (int testcase = 1; testcase \u003c= testcases; testcase ++)\r\n% \t{\r\n% \t\tcout \u003c\u003c \"Data Set \" \u003c\u003c testcase \u003c\u003c \":\" \u003c\u003c endl;\r\n% \t\tinf \u003e\u003e m \u003e\u003e n;\r\n% \t\tfor (int i = 0; i \u003c n; i ++)\r\n% \t\t\tinf \u003e\u003e s[i];\r\n% \t\tinf \u003e\u003e goal;\r\n% \t\tbest = -1;\r\n% \t\tstring ini = \"\";\r\n% \t\tfor (int i = 0; i \u003c m; i ++)\r\n% \t\t\tini = ini + \"0\";\r\n% \t\tnow = 0;\r\n% \t\tsearch(0, ini);\r\n%  if (best \u003c 0) cout \u003c\u003c \"Impossible\" \u003c\u003c endl; else cout \u003c\u003c best \u003c\u003c endl;\r\n% \t\tcout \u003c\u003c endl;\r\n% \t}\r\n% \tinf.close();\r\n% \treturn 0;\r\n% }\r\n% \r\n%\r\n%\r\n\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":0,"created_by":3097,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":10,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2012-12-06T20:21:50.000Z","updated_at":"2012-12-06T20:32:33.000Z","published_at":"2012-12-06T20:32:33.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis Challenge is to solve Question D, Chemical Analysis, of the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://contest.usc.edu/index.php/Fall12/Home\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eUSC ACM Fall 2012 Contest\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven an array M of Element Spectral signatures(m elements by n Spectra) and a Sample spectra of width n, determine the minimum number of elements that could generate the Sample's spectra.\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: [ A, Sample ]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOutput: min_elements;\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe minimum number Components to create the Sample Spectra. If no combination exists then output 0.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe full\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://contest.usc.edu/index.php/Fall12/Home?action=download\u0026amp;upname=analysis.in.txt\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eUSC data file\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eInput: [1 1 0 0;0 1 1 1;0 1 1 0;0 1 0 1], [1 1 0 1]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eOutput: 2 as [1 1 0 0] and [0 1 0 1] can create [1 1 0 1]\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe Winning C solution is in the Test Suite to assist - not likely.\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":1130,"title":"Challenging perms function!","description":"This problem is highly related with \u003chttp://www.mathworks.com/matlabcentral/cody/problems/1127-decrypt-a-secret-message Problem 1127\u003e.\r\n\r\nIn oder to encrypt the word 'go' using phone keyboard, we need to do these;\r\n\r\n- first find the digits that includes the letters in word. For example letter 'g' takes place on key 4. Letter 'o' is on key 6. So first number is 46.\r\n\r\n- create all string permutations using the letters on keys (4 and 6). There are 'ghi' letters on key 4 and 'mno' letters on key 6. All two letter permutation list is {'gm';'gn';'go';'hm';'hn';'ho';'im';'in';'io'}. In this list third one is 'go'. So second number must be 3.\r\n\r\nIf input is 'go'; output must be [46 3].\r\n\r\nWhat about 'hydroglycerin'? it is 1679616 th word on the permutation list constructed using keys 4937645923746.\r\n\r\nIf input is 'hydroglycerin'; output must be [4937645923746 1679616].\r\n\r\nGiven a string, return the keys on phone-keyboard and the order of this string in permutation list!","description_html":"\u003cp\u003eThis problem is highly related with \u003ca href=\"http://www.mathworks.com/matlabcentral/cody/problems/1127-decrypt-a-secret-message\"\u003eProblem 1127\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eIn oder to encrypt the word 'go' using phone keyboard, we need to do these;\u003c/p\u003e\u003cp\u003e- first find the digits that includes the letters in word. For example letter 'g' takes place on key 4. Letter 'o' is on key 6. So first number is 46.\u003c/p\u003e\u003cp\u003e- create all string permutations using the letters on keys (4 and 6). There are 'ghi' letters on key 4 and 'mno' letters on key 6. All two letter permutation list is {'gm';'gn';'go';'hm';'hn';'ho';'im';'in';'io'}. In this list third one is 'go'. So second number must be 3.\u003c/p\u003e\u003cp\u003eIf input is 'go'; output must be [46 3].\u003c/p\u003e\u003cp\u003eWhat about 'hydroglycerin'? it is 1679616 th word on the permutation list constructed using keys 4937645923746.\u003c/p\u003e\u003cp\u003eIf input is 'hydroglycerin'; output must be [4937645923746 1679616].\u003c/p\u003e\u003cp\u003eGiven a string, return the keys on phone-keyboard and the order of this string in permutation list!\u003c/p\u003e","function_template":"function y = encryptt(x)\r\n  y = x;\r\nend","test_suite":"%%\r\nx = 'm';\r\ny_correct = [6 1];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n%%\r\nx = 'go';\r\ny_correct = [46 3];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n%%\r\nx = 'cody';\r\ny_correct = [2639 99];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n%%\r\nx = 'hydroglycerin';\r\ny_correct = [4937645923746 2616254];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n%%\r\nx = 'antidisestablishmentarianism';\r\ny_correct = [2684347378225474636827426476 13474859120710];\r\nassert(isequal(encryptt(x),y_correct))\r\n\r\n\r\n%% \r\nx = 'there must be an efficient technique';\r\ny_correct = [84373 56 6878 22 23 5 26 2 333424368 13108 832464783 5378];\r\nassert(isequal(encryptt(x),y_correct))","published":true,"deleted":false,"likes_count":0,"comments_count":11,"created_by":8703,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":10,"test_suite_updated_at":"2012-12-21T12:16:02.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2012-12-21T07:23:02.000Z","updated_at":"2012-12-21T12:16:03.000Z","published_at":"2012-12-21T12:16:02.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis problem is highly related with\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"http://www.mathworks.com/matlabcentral/cody/problems/1127-decrypt-a-secret-message\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 1127\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIn oder to encrypt the word 'go' using phone keyboard, we need to do these;\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e- first find the digits that includes the letters in word. For example letter 'g' takes place on key 4. Letter 'o' is on key 6. So first number is 46.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e- create all string permutations using the letters on keys (4 and 6). There are 'ghi' letters on key 4 and 'mno' letters on key 6. All two letter permutation list is {'gm';'gn';'go';'hm';'hn';'ho';'im';'in';'io'}. In this list third one is 'go'. So second number must be 3.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf input is 'go'; output must be [46 3].\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eWhat about 'hydroglycerin'? it is 1679616 th word on the permutation list constructed using keys 4937645923746.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIf input is 'hydroglycerin'; output must be [4937645923746 1679616].\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\u003eGiven a string, return the keys on phone-keyboard and the order of this string in permutation list!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"term":"tag:\"perms\"","current_player_id":null,"fields":[{"name":"page","type":"integer","callback":null,"default":1,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"per_page","type":"integer","callback":null,"default":50,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"sort","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"body","type":"text","callback":null,"default":"*:*","directive":null,"facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":false},{"name":"group","type":"string","callback":null,"default":null,"directive":"group","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"difficulty_rating_bin","type":"string","callback":null,"default":null,"directive":"difficulty_rating_bin","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"id","type":"integer","callback":null,"default":null,"directive":"id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"tag","type":"string","callback":null,"default":null,"directive":"tag","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"product","type":"string","callback":null,"default":null,"directive":"product","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_at","type":"timeframe","callback":{},"default":null,"directive":"created_at","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"profile_id","type":"integer","callback":null,"default":null,"directive":"author_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_by","type":"string","callback":null,"default":null,"directive":"author","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player_id","type":"integer","callback":null,"default":null,"directive":"solver_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player","type":"string","callback":null,"default":null,"directive":"solver","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"solvers_count","type":"integer","callback":null,"default":null,"directive":"solvers_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"comments_count","type":"integer","callback":null,"default":null,"directive":"comments_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"likes_count","type":"integer","callback":null,"default":null,"directive":"likes_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leader_id","type":"integer","callback":null,"default":null,"directive":"leader_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leading_solution","type":"integer","callback":null,"default":null,"directive":"leading_solution","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true}],"filters":[{"name":"asset_type","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":"\"cody:problem\"","prepend":true},{"name":"profile_id","type":"integer","callback":{},"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":"author_id","static":null,"prepend":true}],"query":{"params":{"per_page":50,"term":"tag:\"perms\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"perms\"","","\"","perms","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f772782bcc0\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f772782bc20\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f772782a8c0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f772782d7a0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f772782d700\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f772782c8a0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f772782c3a0\u003e":"tag:\"perms\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f772782c3a0\u003e":"tag:\"perms\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"search","password":"J3bGPZzQ7asjJcCk","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"perms\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"perms\"","","\"","perms","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f772782bcc0\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f772782bc20\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f772782a8c0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f772782d7a0\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f772782d700\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f772782c8a0\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f772782c3a0\u003e":"tag:\"perms\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f772782c3a0\u003e":"tag:\"perms\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":1506,"difficulty_rating":"easy"},{"id":52338,"difficulty_rating":"medium"},{"id":52343,"difficulty_rating":"medium"},{"id":52355,"difficulty_rating":"medium"},{"id":1101,"difficulty_rating":"medium"},{"id":1130,"difficulty_rating":"medium"}]}}