Problem 52343. ICFP2021 Hole-In-Wall: Solve Score=0, where number of Figure Vertices = Hole Vertices + 1
The contest folds the figure in Red to fit within the hole shown in light grey ![](data:image/png;base64,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)
This 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.
Valid 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)<= epsilon/1000000. Lsqr is length squared.
Score is sum of minimum square distances to the figure from each unique hole vertex.
npxy=Solve_nPeqnH1(hxy, pxy, mseg, epsilon)
This 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.
The function template includes routines to read ICFP problem files and to write ICFP solution files.
The 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.
Solution Stats
Problem Comments
Solution Comments
Show commentsProblem Recent Solvers2
Suggested Problems
-
227 Solvers
-
343 Solvers
-
41 Solvers
-
Vectorize the digits of an Integer
325 Solvers
-
Matrix which contains the values of an other matrix A at the given locations.
228 Solvers
More from this Author308
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!