Arcade · five playable algorithms
Arcade
Five games, each running its actual solver — the same module the game page loads — so what you see move is the search itself, not an animation of one.
- Playable systems
- 0
- Provable guarantees
- 0
- Median 2048 score
- —
- Third-party deps
- 0
The five systems
-
2048
A table-driven engine — all 65,536 row transforms precomputed — under a depth-adaptive expectimax search over chance nodes.
Play 2048 -
Connect Four
Iterative-deepening negamax with alpha-beta pruning and a Zobrist transposition table. It reports forced wins as proofs, with the move count.
Play Connect Four -
Snake
A Hamiltonian cycle with guarded shortcuts. This is the one AI here with a real proof: it cannot die, and it fills all 144 cells.
Play Snake -
Minesweeper
Constraint propagation, then subset subtraction, then exact enumeration of every consistent mine arrangement to get the true odds.
Play Minesweeper -
Sudoku
Knuth's Algorithm X with dancing links, plus a generator that re-solves after every removal to guarantee a unique answer.
Play Sudoku
On guarantees
“Can the AI always win?” has a different answer for each of these. Randomness and hidden information are what break a guarantee — not the quality of the search.
| Game | Guarantee | Why |
|---|---|---|
| Snake | always wins |
Deterministic and fully observable. The cycle invariant makes a fatal move unreachable. |
| Sudoku | always solves |
A finite exact-cover search. If a solution exists, Algorithm X finds it. |
| Connect Four | perfect at the horizon |
Solved in theory, but proving it from an empty board is expensive. Inside its search horizon the result is exact. |
| Minesweeper | no |
Hidden information. Some boards reduce to a genuine coin flip; the solver reports the odds instead of bluffing. |
| 2048 | no |
Tiles spawn at random, so for any policy some spawn sequence beats it. Only a measured rate is honest. |
Measured 2048 strength
- Games sampled
- —
- Reached 2048
- —
- Reached 1024
- —
- Median score
- —
- Mean moves
- —
Produced by scripts/benchmark-2048.mjs. Run npm run test:2048 to reproduce
these numbers locally — the benchmark drives the same engine module this page loads, over seeded
games, so a run is reproducible.