Drop7 Research
fair-expectimax

Fair expectimax reference (D3/D4)

Completedevidence: ledger-recorded

The reference search looks four moves ahead, averages the sampled chance outcomes, and uses a hand-tuned board evaluator at the bottom.

The strongest dependable public-information policy in this repository. It is the comparator every new candidate must beat, and the teacher behind most label-generation experiments.

The idea

At each move, fair expectimax builds a tree that alternates between player choices (take the best) and chance events (take the average):

MAX: columnCHANCE: reveal/next discCHANCE: reveal/next discCHANCE: …MAXMAXleaf valueleaf value
building the tree…
building the tree in the browser…
MAX node the position; the search picks the column with the highest expected value.chance branches every exact outcome of a drop — the next disc, and what any cracked gray disc turns out to be — weighted by its probability.leaf the opinion of the board scorer where the look-ahead stops. Click a column to expand it; click an outcome to play that transition and continue from it.Columns are numbered 1–7 from the left. Values come from the browser solver and are a demonstration, never research evidence; seed 0x5eed1002 is the same game as /play.
The same tree, live: the browser analogue of this search on a seeded game, with one further ply below each outcome. It is a playground demonstration of the mechanics, not the native reference whose cohort numbers this page quotes.

"Fair" means the chance nodes average over what can actually happen — every legal next disc, and the possible gray-disc reveals. Instead of hoping for the best reveal or fearing the worst. Depth 4 (D4) completes four full max/chance layers; the leaf is a hand-tuned public evaluator.

Why averaging matters

A hidden gray disc can become anything from a 1 to a 7. An optimistic search assumes the reveal you want; a pessimistic one assumes the reveal you fear. Both mis-rank moves, and the ledger confirms it: fair chance handling beats optimistic, worst-case, and tiny reused reveal samples. The price is work — the tree grows by roughly an order of magnitude per ply.

What the evidence showed

ConfigurationGamesMean scoreMean movesNote
Fair D38235,07171.0comparison policy
Fair D48400,675116.4won 7 of 8 paired games
Fair D4 (broad cohort)64308,29690.0the reference mean
  • Deeper is not automatically better: selective D5, full D5, and cycle-boundary variants all failed their gates (see the sibling approaches).
  • One D4 game scored 1,246,684 points: an anecdote, not an average. The million-point target requires the mean to exceed one million.
  • D4 is a strong tactical fallback and teacher, but its average is far below the target. Every serious candidate keeps an exact D4 fallback.

Sources

  • fair-only-horizon.cpp: the fair-only depth-3 evaluator.
  • fair-only-depth4.cpp: the depth-4 reference build (make native produces build/fair-depth4).
  • The TypeScript counterpart used by the benchmark registry is evaluateMoves in src/core/typescript/solver.ts with the combined leaf.

Source files