Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
C++ Java C C# Shell PHP
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
Team UNAGI Final Submission @ ICFP Contest 2015 =============================================== ## Instruction ### Build & Run As specified in the problem description, invoke `make` and `play_icfp2015` to build and run. Solutions are written to the standard output. We may also write some messages to the standard error for debugging purpose, which should be ignored. ### Dependency We checked that, on plain Ubuntu 14.04, all the dependency is automaticaly installed in `Makefile`. Just for in case, we list the main dependent packages. * The front-end script is written in *PHP*, and requires *PHP*. * The internal evaluator is written in *C++11*, and thus requires *g++*. * We use *bazel* for building C++ programs (e.g., the internal evaluator). * The solvers are written in *Java* and *C#*, so *Java* and *Mono* are also required. ## Description ### Overall Strategy We developed two solvers named "wata" and "chokudai". Furthermore, solver "wata" has a few variations. None of them overwhelms the other. Therefore, script "play_icfp2015" executes these solveres in parallel, and then the best solution is selected. ### Front-end script The PHP script `play_icfp2015.php`, which is called from shell script `play_icfp2015`, is our front-end script. It executes our solvers in parallel. It collects the solutions of the solvers, and then selects and outputs the best solution using our internal evaluator. ### Solvers Both solvers use beam searches, but they use different board evaluation functions, as well as spelling strategies. * "chokudai" is faster one with wide beam width. It can flexibly adjust its running time by adaptively changing beam width. * "wata" is slower one with a clever spelling strategy using dynamic programming. "wata" requires ~2GB memory for conducting large dynamic programming.