The Play Seam · a parlor game with a theorem inside it
Someone Always Crosses
Colour every cell of a Hex board however you like, by any rule or none, and exactly one player has a chain from their side to the far side. Never both. Never neither. There is no way to draw, and no way to try.
The board below is an 11×11 rhombus of hexagons, the size Piet Hein introduced in the Danish paper Politiken on 26 December 1942. Amber is trying to join the top edge to the bottom edge. Teal is trying to join the left edge to the right edge. Press the button. Every cell gets a colour by coin flip, with no thought given to anyone winning.
Amber: top ↔ bottom Teal: left ↔ right empty
You can also click a cell to cycle it empty → amber → teal. Go on: try to fill all 121 cells so that nobody crosses. The readout will tell you the moment somebody has, and it will always be somebody.
A thousand boards, no draws
One board proves nothing. So flood a thousand of them. The counter below fills an 11×11 board at random one thousand times, and for each board searches, explicitly and in both directions, for an amber top-to-bottom chain and a teal left-to-right chain. It reports how many boards had exactly one winner, how many had none, and how many had two.
not run yet
Not a sample: every board
A census is still a sample. On small boards we can do better and check every complete colouring there is. A 4×4 board has 16 cells and therefore 216 = 65,536 complete colourings; together with the smaller sizes that is 66,066 boards, each one searched twice. The exhaustion runs in your browser when you press the button.
| board | cells | colourings | exactly one | draws | both win | amber wins |
|---|---|---|---|---|---|---|
| not run yet | ||||||
Why it happens is worth one paragraph before we do something with it. Look at the boundary between the amber region and the teal region on a filled board. Walk along it from the corner where the amber and teal edges meet, always keeping amber on your left and teal on your right. Because every interior vertex of a hexagon board touches exactly three cells, that walk is never ambiguous and never revisits itself, so it has to leave the board at another corner. Whichever corner it reaches, the amber cells you were touching the whole way, or the teal ones, form a chain across. Both at once is impossible, because an amber chain and a teal chain would have to cross, and on this board they cannot.
The dismissal
Here is the reasonable objection, and it is worth taking seriously: this is a pigeonhole fact about a grid. Cute, finite, combinatorial, of no consequence past the board it sits on. Two answers follow. The first is that this finite fact settles who wins the game without producing a single move. The second, which is the real one, is that this finite fact is the same theorem as the cornerstone of fixed-point topology.
Answer one: who wins, with no idea how
John Nash rediscovered the game independently at Princeton around 1948, and gave an argument that the first player has a winning strategy. It goes like this, and you can walk it on the board above.
- The game cannot be drawn: a filled board always has a winner, and a game played to the end fills the board. So Hex is a finite two-player game with no draws and perfect information, and by Zermelo's theorem one player has a winning strategy.
- Suppose it were the second player. Then the first player can steal it: play any opening move at all, then pretend to be the second player in the game that remains, and follow the second player's winning strategy.
- The stolen strategy sometimes tells you to play where your own stray opening stone already sits. Fine: play any other empty cell instead, and treat that as your new stray stone.
- This only works because in Hex an extra stone of your own colour is never a liability. It can complete a connection; it can never break one. (That is a property of Hex, not of games in general. In chess, being obliged to move can lose you the game.)
- So the first player would win, contradicting the assumption. Therefore the winner is the first player. Notice what the argument never did: it never named a move.
Step 4 is the load-bearing one, and it is checkable. On a 3×3 board we can enumerate every position that can occur, in both directions, and confirm that adding a friendly stone to any empty cell never converts a won position into a lost one. Press it and see the count. Step 5's conclusion is checkable too, by brute force, on boards small enough to exhaust: the solver below searches the full game tree and reports precisely which opening moves win.
Solved boards are drawn above: a filled marker is an opening move that wins for the first player, a hollow one loses. Then play it yourself: you move second, the engine moves first and plays perfectly.
solve a board first
The board can be clicked, and the same move can be entered from the keyboard with the two fields above, so the game is playable without a pointer.
The result is exact and it is small. On 4×4 the first player wins, and the openings that win are precisely the four cells of the short diagonal. That is the whole answer for a sixteen-cell board, obtained by looking at every line of play. Now scale it. An 11×11 board has 121 cells. Nash's argument still proves the first player wins. It still names no move. Stefan Reisch proved in 1981 that deciding who wins an arbitrary Hex position is PSPACE-complete, which is the formal shape of the gap you just felt: knowing who does not hand you how.
Answer two: the board computes a fixed point
In 1979 David Gale published a short paper in the American Mathematical Monthly showing that the no-draw fact is not a curiosity about grids. It is equivalent to Brouwer's fixed-point theorem in two dimensions: each implies the other. (Gale's paper also gives an n-dimensional Hex and the corresponding n-dimensional equivalence. This page demonstrates the two-dimensional case only.)
Brouwer's theorem says: every continuous map f of a closed square into itself has a point it does not move. Here is the construction that gets it from Hex, and it is short enough to state completely.
- Lay an n×n Hex board over the square, cell (row, col) sitting at the point x = col/(n−1), y = 1 − row/(n−1). So the left column is exactly x = 0 and the right column is exactly x = 1.
- At each cell compute the displacement d = f(x) − x. Colour the cell teal if the map shoves it more sideways than up-down (|d₁| ≥ |d₂|), amber otherwise. That is a complete two-colouring, so by the Hex theorem exactly one player has a chain.
- Say it is teal, whose chain runs left to right. On the left column d₁ = f₁(x) ≥ 0, because f maps into the square and x = 0 there. On the right column d₁ = f₁(x) − 1 ≤ 0. So somewhere along the chain d₁ changes sign between two neighbouring cells.
- At that pair, |d₁| is at most how much d₁ can change between neighbours, call it ω. And the cells are teal, so |d₂| ≤ |d₁| ≤ ω. The whole displacement is at most ω√2. Refine the board, ω shrinks, and the point that barely moves is pinned tighter.
The mirror case is the same sentence with the words swapped: an amber chain runs top to bottom, d₂ changes sign along it, and amber cells satisfy |d₁| < |d₂|. Either way the board hands you a point that hardly moves. Below, it does. Pick a map with the sliders and watch the Hex board find it.
teal: pushed mostly sideways amber: pushed mostly up/down the forced chain the cornered point
The map is f(x) = clamp( c + s·R(θ + w·|x−c|)·(x−c) + drift ) with c the centre of the square and clamp pushing anything that leaves the square back onto its edge. It is continuous, and it maps the square into itself, which is all Brouwer asks of it.
The guarantee, refined
The table recomputes the whole construction at eight board sizes for the map you have selected. ω is measured on the grid: the largest change in either displacement coordinate between any two neighbouring cells. ω√2 is the guarantee from step 4. The residual is what the found point actually scores.
| n | winner | cornered point | residual |f(x)−x| | guarantee ω√2 | distance to x* |
|---|
The guarantee is a statement about the mesh, not about the search, so it halves whenever the mesh does. Only four of the eight ladder rows are mesh doublings (5 to 9, 9 to 17, 17 to 33, and 101 to 201); the measured ratio of guarantees across exactly those four pairs is recomputing.... The other rows are not doublings and only show the guarantee shrinking. The residual sits under it and drifts down, but not monotonically: which chain the search happens to trace changes with n, and different chains cross the sign-change at different cells. The theorem promises the ceiling, not the floor.
What the point is not
It is not the fixed point. The construction produces a cell where the displacement is small, an approximate fixed point, and nothing more. A genuine fixed point exists because the square is compact: take the approximate points as the mesh shrinks, extract a convergent subsequence, and continuity does the rest. That last step is where the actual limit lives, and no finite board reaches it.
For this particular family we can say more, and it is a useful check on the machinery. The map's Lipschitz constant is computable in closed form. When it is below 1 the map is a contraction, Banach's theorem gives a unique fixed point, and iterating from the centre converges to it with an error bound you can compute after the fact. That gives an independent reference x* which the Hex construction never sees, and the last column of the table is the distance to it. When the swirl slider pushes the Lipschitz constant to 1 or above, the certificate is void and the page says so: the Hex construction keeps working, the reference does not.
The check
Every number on this page is computed in your browser at read time by the same code that research/someone-always-crosses/verify-someone-always-crosses.mjs runs offline. Nothing here is transcribed from a source. What the verifier asserts, at the page's default settings:
- The census. Seed 20260720, 1,000 random 11×11 fills: recomputing...
- The exhaustion. Every complete colouring of every board up to 4×4: recomputing...
- The 5×5 exhaustion. Not run in the browser, because it is minutes of pure loop: two timed runs under node v22 on the machines that built and reviewed this page took 191 s and 215 s wall clock, nearly all of it inside the 5×5 loop. Your machine will differ; the timing is the one number here we cannot make you a promise about. The verifier will do all 225 = 33,554,432 boards under --full and reports exactly one winner on every one, half of them amber. That result is the only board figure on the page not computed in front of you, and the two timings are stopwatch readings rather than computations. Both are labelled as such.
- The solver. press "solve 3x3" and "solve 4x4"
- An extra stone never hurts. press the monotonicity button
- The fixed-point finder. recomputing...
- The stress test. 400 randomly drawn maps at four board sizes each, 1,600 runs: every one has exactly one winner, and in every one the residual sits at or below the guarantee ω√2. press the button below
Free choices and uncertainties, named
- The 5×5 timing. An earlier draft of this page said 80 seconds. That was an estimate, and it was wrong by more than a factor of two: measured runs came back at 191 s and 215 s on two different machines. Timings are the one class of number here that depends on hardware rather than on mathematics, so they are quoted as measured pairs and no verifier asserts them.
- Ties in the colouring. A cell with |d₁| = |d₂| is assigned to teal here. Assigning it to amber instead is equally valid and can change which player wins on a given board. Either choice makes the argument go through, which is the point: the theorem does not care.
- Which chain is traced. The search takes a breadth-first shortest chain from the winner's near edge and reports the first sign change along it. Another chain, or another sign change on the same chain, would give a different cell. All of them satisfy the same bound.
- ω is measured, not proved. The guarantee needs the modulus of continuity over the whole square. We sample it on the grid, over neighbouring cells only. That is an honest estimate and not a proof for the continuum, and it is why the certified reference x* comes from Banach's theorem rather than from the grid.
- The map family. Rotation-plus-shrink-plus-swirl, then clamped to the square, is one family among infinitely many. It was chosen because its Lipschitz constant has a closed form (so we can certify uniqueness) and because at swirl = 0 its fixed point has a closed form too (so the certified reference can itself be cross-checked against algebra). Nothing about the Hex construction depends on the choice.
- Node counts are algorithm-dependent. The solver's search-node totals depend on move ordering. The page and the verifier run byte-identical search code, so they agree exactly; a different ordering would give different totals and the same answer.
- What we do not claim. We make no statement about which Hex board sizes have been solved by research groups, or about openings on 11×11. This page exhausts 3×3 and 4×4 itself and claims nothing beyond what it exhausts. Nash's argument proves the first player wins at every size and identifies no move at any size.
What is proved here, what is cited, and what is neither
Proved in front of you. That every complete colouring of every Hex board up to 4×4 has exactly one winner (exhaustion). That 1,000 random 11×11 fills have exactly one winner each (census, seeded and reproducible). That the first player wins 3×3 and 4×4, with the winning openings enumerated (full game-tree search). That adding a friendly stone never converts a won 3×3 position into a lost one (exhaustion over all positions). That the Gale construction returns a point with small displacement, under the stated bound, for every map the sliders can produce and every one of 1,600 randomly drawn test maps.
Cited, not proved here. That the no-draw theorem is equivalent to the two-dimensional Brouwer fixed-point theorem in both directions (Gale 1979): the page demonstrates the Hex → Brouwer direction operationally at finite mesh; the converse, and the passage to the exact limit, are Gale's. That Hex is PSPACE-complete (Reisch 1981). That Hein introduced the game in 1942 and Nash rediscovered it around 1948.
Neither. Any claim about the current state of computer solutions for boards larger than 4×4. We have deliberately not made one.
A note on Zermelo. Step 1 of the strategy-stealing argument uses the determinacy of finite perfect-information games. For Hex this is elementary: the game is finite, the board fills, and the filled board has a winner, so backward induction applies. The 3×3 and 4×4 solvers on this page are that backward induction, run.