-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
40 lines (21 loc) · 1.79 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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.