Pattern · a combinatorial game · show the check
Conway's Soldiers
Fill the world below a line with soldiers and jump them, checkers-style. You can push one soldier one row past the line. Two rows. Three, four. The fifth row is impossible — and not "hard," not "nobody's managed it." Provably out of reach, for any number of soldiers and any number of moves. Here is the board, and here is the reason, running live as you play.
σⁿ = σⁿ⁺¹ + σⁿ⁺², the finite truncations
climbing toward but never reaching 1, and the whole infinite army summing to exactly 1.
Every number is recomputed live from σ; the percussion is the solution itself, accented at each new row reached.
Recomputed offline by research/conways-soldiers/verify.py (19/19).
The rules are the ones you already know from peg solitaire. The board is the infinite grid. Every cell on or below a horizontal line starts with a soldier; above it is empty enemy ground. A move is a single orthogonal jump: a soldier hops over an adjacent soldier into the empty cell just beyond, and the jumped soldier is removed. The only question is: how far above the line can you get a single soldier?
Pick a target row and try. Tap a soldier to select it; its legal jumps light up; tap one to take it. The numbers below the board are not decoration — they are the whole proof.
Total army weight · w = Σ σ|x|+|row−y|, σ = (√5−1)/2 ≈ 0.6180
Slide the target down to row 1, 2, 3, or 4 and press Solve it: the board plays out a real, legal sequence of jumps and a soldier lands on the row. Slide it to row 5 and Solve it goes dark — there is nothing to play, because nothing reaches it. The bar tells you why before you make a single move: against a row-5 target this finite army already weighs 0.982, and the green line you must cross is 1.000.
Why the weight can only fall
Put the target cell at distance zero and give every cell a weight of σ raised to its taxicab distance (steps along the grid) from the target, where σ = (√5−1)/2 ≈ 0.618 is the positive root of x² + x − 1 = 0 — that is, σ + σ² = 1. It is exactly 1/φ, the reciprocal of the golden ratio. That one algebraic fact is the whole engine:
| the move | weights before → after | change |
|---|---|---|
| jump straight at the target | σn+1 + σn+2 → σn | 0 — exactly conserved |
| jump straight away | σn + σn+1 → σn+2 | −2σ·σn < 0 |
| any sideways jump | σn + σn+1 → σn+1 | −σn < 0 |
The conservation line is the magic: σn+1 + σn+2 = σn is just σ + σ² = 1 in disguise. So the best move you can ever make — a jump dead at the target — holds the total weight fixed, and every other move strictly loses. Total army weight is a monovariant: it never goes up. Press Show the weights to see each cell shaded by its σ-weight — the glow piles up near the target and fades to nothing far away.
And the whole army weighs exactly 1
Now sum the weight of every soldier in the full, infinite half-plane against a target on row 5. The rows form geometric series in σ, and they collapse — using 1−σ = σ² and 1+σ = 1/σ — to a startlingly clean total:
S = σ⁵ · (1+σ)/(1−σ)² = σ⁵ · σ⁻¹ · σ⁻⁴ = σ⁰ = 1.000000…The entire infinite army is worth exactly 1 — the very same as a single soldier standing on the target (σ⁰ = 1). To occupy row 5 you would have to gather all of that weight onto one cell, wasting none of it — yet you have only finitely many soldiers (strictly less than the full 1), and every move that isn't dead-straight at the target throws weight away. You can never get there. That is Conway's 1961 proof, and the meter is running it in front of you.
The same accounting, run against rows 1 through 4, gives the army a starting weight above 1 — there is slack — and indeed soldiers reach those rows (the Solve it button shows one way for each). Row 5 is the first row where the books exactly balance, and exact balance, with finite means, is loss.
Show the check
Nothing here is asserted from memory. A self-contained verifier re-derives all of it from first principles — the algebra symbolically (in exact arithmetic over √5, not floating point), and the reachability by replaying actual jump sequences on a real board:
python3 research/conways-soldiers/verify.pyIt checks, and exits 0 only if all hold: σ²+σ−1 = 0; σ = 1/φ; the jump-conservation identity σⁿ = σⁿ⁺¹+σⁿ⁺²; that away- and sideways-jumps strictly lose weight; that the infinite half-plane sums to exactly 1 for a row-5 target; that finite truncations sit below 1; and it plays out found solutions reaching rows 1, 2, 3, and 4 on this very board, validating every single jump. The move-lists this page replays are the verifier's own output. The known minimal armies, for the record, are 2, 4, 8, 20 soldiers for rows 1–4 (Conway; Beasley) — our replays use more, since they are found by search, not optimised.
The honest seams
The board you play is finite (columns −9…9, depth 9), so its starting weight against row 5 is 0.9819, already short of 1 — impossibility you can read off directly. The stronger statement, that no finite army on the truly infinite board can reach row 5, is the S = 1 argument above: the infinite total is exactly 1, any finite army is strictly below it, weight never rises, so the threshold is never met. The taxicab metric, the value of σ, and the conservation identity are the load-bearing facts, and each is checked symbolically. One subtlety named plainly: weight ≥ 1 is a necessary condition to occupy the target, not a sufficient one — which is why row 5's unreachability is a proof, while rows 1–4's reachability is shown by exhibiting explicit solutions rather than inferred from the meter.