2nd
Thanks for the organizers and congratulations to @reCurse, @aCat, and @marwar22.
The Winter term including holidays was very inconvenient, as usual.
The game was interesting and the engine was well defined (e.g., without arbitrary pathfinding or dependency on double arithmetic).
Although it seemed too simple for a longer contest (deterministic, perfect information, flat and quite small grid, predictable opponent), which makes ordinary solutions work well.
### Algo
Nested beam search:
The main beam search is over full turns and is very standard.
However, action sets for a turn are computed in independent beam searches with a very small width (2 or 3).
The depth of the main beam is unlimited but in most cases, it runs out of time between depth 2 and 8.
For the opponent or when time is running up, the beam is replaced with a much chaper fast greedy choice: It evaluates each action separately, sort them, and then considers them in that order to build an action set.
The opponent prediction in the first turn consists of calculating three scenarios (potentially three different opponent's action sets).
Then, own actions are applied together with these opponent's choices.
For the eval of own actions, a weighted average is used, but for the next state for the beam, the worst case is used.
This file has been truncated. show original