Solving Tic Tac Chec (1998)
Tic Tac Chec gives each player four chess pieces and asks for four in a row on a 4×4 board. Captures put pieces back into play, pawns bounce between the board edges, and positions can repeat forever.
I strongly solved the original 1998 Dream Green game. Perfect play is a draw. The tablebase covers 2,476,597,610 indexed positions and gives the exact result of every legal move, plus distance to the end for every forced win or loss.
Explore it below. Every move is labeled by its result from the current player’s perspective. Distances are in plies, one turn by one player; draws have no finite distance.
Drag a piece or click a ranked move to follow a line. Green wins, grey draws, and red loses.
The game
Each player owns a pawn, knight, bishop, and rook. Aligning all four in a rank, file, or long diagonal wins.
- Opening: The board starts empty. For the first six plies, each player places three pieces.
- Turns: Once movement unlocks, a player may place an in-hand piece or move an on-board piece. Movement stays unlocked after later captures.
- Chess movement: Knights, bishops, and rooks move and capture normally. There are no kings, check, or checkmate.
- Recycled pieces: Captures return pieces to their owner’s hand instead of removing them from the game.
- Pawns: They move one square straight, capture diagonally ahead, and reverse direction at either board edge. Redeployment resets their direction toward the opponent.
The result
The empty board is a draw, and all 64 first placements keep the draw. The game stays draw-heavy after the forced-placement opening: 91.51% of indexed post-opening positions are drawn.
| Section | Wins | Losses | Draws |
|---|---|---|---|
| Post-opening | 184,895,598 | 24,178,920 | 2,253,286,227 |
| Placement-only opening | 147,472 | 30,468 | 14,058,925 |
Values are from the side to move. A win means that player can force four in a row; a loss means every defense fails. The deepest forced post-opening win ends in 41 plies. The placement-only opening reaches 39 plies at its deepest decisive position.
What the draw looks like
I extracted one deterministic drawing line from the empty board. It runs for 32 plies before entering an exact 18-ply cycle. The board, side to move, pieces in hand, and pawn directions all repeat.
One position on that line is much sharper than the opening result suggests:
| Black’s choices | Moves |
|---|---|
| Legal | 18 |
| Preserve the draw | 3 |
| Lose in two plies | 15 |
Black to move. Only
a1-b2, d2-c2, and c3-a2 draw; all 15 alternatives lose in two plies.
The line illustrates the result. The completed win/loss/draw table is the proof, and it supplies at least one drawing continuation from every drawn position.
An attention game
The tablebase can test a more human description of the game: it is usually forgiving, but when an opponent lines up three pieces, you have to notice.
I counted a live threat only when the opponent has a legal move that completes four immediately. That excludes misleading three-piece lines where the fourth piece is blocked, the pawn points the wrong way, or movement is still locked. Two independent detectors found the exact same winning move in every indexed position.
| In drawn post-opening positions | Result |
|---|---|
| Legal moves that preserve the draw | 93.20% |
| Positions where a majority of moves draw | 94.63% |
| Positions where every move draws | 77.45% |
| Drawn positions with a live threat | 108,060,290 |
| Moves that preserve the draw when threatened | 25.12% |
| Threatened positions with exactly one drawing response | 15.23% |
The pattern is sharp:
- Usually permissive: most moves in most drawn positions are fine.
- Locally forcing: a live threat cuts the drawing choices from 93.20% of moves to 25.12%.
- Not always defensible: 96.89% of all post-opening live threats have a safe response. The remaining 3,762,536 are exactly the tablebase’s loss-in-2 positions.
Every live threat in a drawn position has a defense. The stronger claim that every threat in every position can be stopped is false.
These are counts over the complete structural index, not estimates of how often positions arise in human play. They support the attention-game interpretation without turning it into a probability claim.
Solving a loopy game
Recycled pieces keep the game from shrinking toward an endgame. The graph contains cycles, so forward minimax with a simple transposition cache is unsafe: a path-dependent repetition decision can leak into a position’s stored value.
Every value is from the perspective of the player whose turn it is. After a move, the child position belongs to the opponent. I solved the graph backward with that perspective change made explicit:
- Mark a finished four-in-a-row as a loss for the player whose turn would come next.
- Mark a position as a win when any move leaves the opponent in a loss.
- Mark it as a loss when every legal move leaves the opponent in a win.
- Repeat until no value changes. Every unresolved position is a draw: neither side can force the graph into a terminal result.
The original rules don’t specify a repetition limit. The tablebase values infinite non-winning play as a draw; a human repetition rule can provide the stopping condition.
| Table | Positions | Representation |
|---|---|---|
| Post-opening | 2,462,360,745 | Loopy graph, normalized by color swap and 180° rotation |
| Placement-only opening | 14,236,865 | Separate six-ply acyclic table |
Each position maps directly to an integer from its board arrangement and pawn directions. The working result uses one byte per position: distance parity encodes win or loss, and one code denotes a draw.
- Source table: 2.48 GB, with result and remoteness for every position.
- Explorer table: 463 MiB, storing distance only for decisive positions.
- Packing audit: every compact entry was compared with the source table.
Checking the result
The production solve used flat byte arrays on an M3 Max. It generated 28,730,418,180 directed post-opening moves as needed instead of storing the edge graph, keeping the full solve on one laptop.
The result then went through separate checks:
- Value audit: regenerated every legal successor across all 2.46 billion post-opening positions and checked the minimax equation without using the solver’s predecessor counters.
- Distance audit: checked all 209,074,518 decisive post-opening positions in a separate pass.
- Opening replay: used a separate readable rules engine.
- Representation checks: independently tested rank/unrank, color normalization, pawn direction, and generated predecessor edges.
- Threat census: two independent detectors agreed on the exact immediate winning move in every indexed position.
I found no earlier public strong or weak solution in the prior-art search. That is a scoped negative result, not proof that nobody has solved it privately.
Which rules?
This solve belongs to the 1998 Dream Green game. The name now covers more than one ruleset:
| Ruleset | Pawn/opening interpretation | Empty board | Status |
|---|---|---|---|
| 1998, travel direction | A returning pawn captures in its current direction | Draw | Canonical tablebase |
| 1998, outbound only | A returning pawn cannot capture | Draw | Alternate tablebase |
| 2025 Bobby Fischer reissue | Advertises a new pawn first move and opening rules | Unknown | Needs the complete rulebook and a separate solve |
The original sheet says a pawn reverses at the far edge and captures only while moving “forward,” but never diagrams a returning capture. I used the travel-direction reading: its capture diagonals turn with it. A detailed French transcription and an independent implementation agree.
The stricter outbound-only reading removes 426,173,880 legal moves and changes 16,529,908 position values. The opening result remains a draw, but the explorer still identifies the variant because millions of table entries differ.
Conclusion
Sixteen squares were enough for 2.48 billion indexed positions because captures recycle material instead of removing it. That rule creates the cycles behind the draw and the tactics that make holding it difficult.
Play against the complete solution at tic-tac-chec.brianhliou.com.
Resources:
- Tic Tac Chec tablebase explorer: every legal move ranked by exact result and decisive distance.
- Canonical tablebase v1: the 463 MiB compact tablebase and SHA-256 checksum.
- Solver and research record: Rust solver, rules ledger, validation tests, and reproduction commands.
- Production solve record: position counts, timings, audits, and checksums.
- Threat and defense census: exhaustive move-width and immediate-threat statistics.
- Pawn-variant comparison: exact transition counts between the two pawn interpretations.
- Original Dream Green rules: the primary rulesheet used for the canonical solve.