- Alexander Borzunov — infrastructure, one of automatic solvers, manual solver
- Ivan Dashkevich — convex solver, infrastructure, birthday!!!
- Ivan Domashnikh — solver
- Alexey Dubrovin — infrastructure, solver
- Pavel Egorov — visualizer, manual solver, problems, this readme
- Mikhail Khruschev — constructor solver
- Alexey Kirpichnikov — solving WILD_BASHKORT_MAGES problems, research
- Alexandr Kokovin — problems
- Andrey Kostousov — convex solver, infrastructure
- Grigoriy Nazarov — help for everybody
- Yuriy Okulovskiy — solver
- Dmitriy Titarenko — problems, infrastructure
Solvers:
- lib/ConvexPolygonSolver.cs — for convex problems
- lib/SolutionSpecExt.cs — implementation of the solution folding
- lib/ProjectionSolver/UltraSolver.cs — for simple non-convex problems (tries to compose initial square perimeter with rational segments from a problem and then restore other points)
- lib/Constructor/ConstructorSolver.cs — for other simple non-convex problems (tries to construct the initial square from polygons of the given silhouette)
- lib/Visualization/ManualSolving/ManualSolverForm.cs — UI for manual problem solving (you can do several reflections and then apply the convex solver)
- lib/Visualization/Visualizer.cs — visualizer of all problems with ability to open ManualSolverForm
- lib/SolutionPacker.cs — optimizer of the solution size
Problem generators:
- lib/D4Problem.cs — generator of problems not solvable in 3 dimensions.
- lib/Problems.cs — generator of some other simple problems.
Infrastructure:
- TimeManager/ — throttler for api calls
- AutoSolver/ — daemon that downloads new problems and runs solvers.
- problems/ — directory with problems, solutions and responses of solution/submit api call
Yes, we gain a lot of points via a semi-automatic solver. A human needs to do several folds to make a figure convex, and then the convex solver do the rest.
We found some inspiration in these articles:
- Folding Flat Silhouettes and Wrapping Polyhedral Packages: New Results in Computational Origami
- The Polygon Containment Problem
- Articles by Robert J. Lang
Also, Wolfram Alpha was useful in manual computations.