Play Drop7
The game this whole repository studies, playable with the same rules engine the research runs on. Drop the incoming disc into a column; a disc clears when the unbroken run it sits in — across or down — is exactly its number long. Clears set off chains, chains open gray discs, and every fifth drop pushes a fresh gray row up from the bottom. The game ends when a column overflows. Every rule, animated →
you choose every column
score0
level1
row in5
your best—
Switch to evaluate to see which column the depth-4 expectimax would choose before you move, or auto to watch it play. Each game has a seed; replay restarts the same sequence of discs and reveals, and /play?seed=… links to it.
How points add up
A disc cleared in wave d of a chain scores ⌊7·d2.5⌋ — 7, 39, 109, 224, 391 … — so the later waves of a long chain are worth far more than the first. Surviving a row rise pays 17,000 points in this five-move Hardcore mode, and emptying the board pays 70,000. Long games are mostly rise bonuses; big games are chains.
What a strong score looks like
The research target is a policy whose mean score exceeds one million. The strongest dependable reference, the C++ fair depth-4 expectimax, averaged 308,296 points over a 64-game cohort and 400,675 over its eight-game confirmation; its single best recorded game reached 1,246,684. Your best here is kept only in this browser, and one game — yours or the solver's — is never a measurement: scores are heavy-tailed.
About the solver
Evaluate and auto modes run the repository's TypeScript expectimax (src/core/typescript/solver.ts, the leaderboard's “Expectimax D4”) in a Web Worker, through a faster move generator and leaf that are parity-tested to give identical values and decisions (web/lib/play/fast-search.test.ts). It is a demonstration of one policy, not tier evidence, and it is a different implementation from the C++ reference whose cohort numbers are quoted here. Why it averages over chance →