Latest version (probably with links to participants' reports) will be available at https://github.com/codingteam/icfpc-2021
We've used semi-automated approach using two UI tools: one written in Python (aptly named temp/*.py
) and another written in Scala (src/**/*
).
During the contest, we've tried a bunch of algorithms.
One of the widely used solutions was a force-based algorithm, where too small or too long edges create forces and attract/detract each other; additional forces are added by edges and nodes being outside the hole boundaries.
We have also tried to use a self-organizing map (see SOMSolver
class), a genetic algorithm, and even tried to consider this problem as a boolean satisfiability problem, and apply a SAT solver (minisat).
Last but not least, we applied a bit of smarts and simple brute-force optimizations to the results of automatic algorithms.
Python UI | Scala UI |
---|---|
(in no particular order):
- Minoru (report (in Russian))
- Akon32
- ForNeVeR (report (in Russian))
- portnov
- pink-snow
- sergevp