No figure on this site is a drawing that was made once and saved. Each one is a function:
it takes parameters and returns SVG, so the same generator produces the 27° incline and
the 5° incline without either being redrawn.
That is the reason the collection can keep growing without the illustrations drifting apart.
A generator is written once, checked once, and every essay that calls it inherits the same
line weights, the same colour roles, and the same behaviour in dark mode. There are
32 of them so far.
birthday-tree
The numbers, by the day they are born Zero on the first day, ±1 on the second, and thereafter the simplest number in each remaining gap. Every number reachable in finitely many days is a fraction with a power of two underneath, and every such fraction appears — which is a strange thing for a construction with no arithmetic in it to produce. day 0 0 day 1 -1 1 day 2 -2 −1/2 1/2 2 day 3 -3 −3/2 −3/4 −1/4 1/4 3/4 3/2 3 each new number is the simplest one in a gap — which is the simplicity rule, applied everywhere at once
comparison
domineering
Domineering on 2 by 3 Left places vertical dominoes, Right horizontal ones, and a player who cannot place loses. The two players see different games on the same board, which is what partizan means — and the value that results is not a number. the board worth 2 | −1/2 outcome N {2 | −1/2} Left plays vertically Right plays horizontally
domineering-values
Small Domineering boards and what they are worth Every value here was computed from the moves rather than looked up. Even on boards this small the values are switches and infinitesimals rather than numbers, which is the ordinary situation for a partizan game and the reason the theory needs more than arithmetic. 1×2 -1 R 2×2 1 | -1 N 2×3 2 | −1/2 N 3×3 1 | -1 N Left plays vertically, Right horizontally
four-outcomes
Four things a position can be Every position falls into one of four outcome classes, and only three of them correspond to a comparison with zero. The fourth — first player wins — is a position confused with zero, neither greater, smaller nor equal, and it is where the subject departs from arithmetic. 0 outcome P = 0 whoever must move, loses 1 0 outcome L > 0 Left wins, whoever starts -1 0 outcome R < 0 Right wins, whoever starts ∗ 0 0 outcome N ‖ 0 whoever moves first, wins blue edges are Left's moves, red are Right's three of the four are comparisons with zero; the fourth is not
green-edges
A green edge is not a number Green edges may be cut by either player, which makes the position impartial in that part. A single green edge is worth ∗ — a value that is neither positive, negative nor zero, and which no number can equal. ∗ not a number outcome N ∗2 not a number outcome N {1 | 1} not a number outcome L ↑∗ not a number outcome N green may be cut by either player and that is enough to leave the number line
grundy-strip
Grundy values for subtraction of 1, 2, 3 The Grundy value of every heap size for a subtraction game, computed by the mex rule. Subtraction games are eventually periodic — always, by a theorem — and the period here was found by searching the computed sequence rather than assumed. 0 0 1 2 3 0 4 1 2 3 0 8 1 2 3 0 12 1 2 3 0 16 1 2 3 0 20 1 2 3 0 24 heap size, and the value of a heap that big period 4, from heap 0 a heap of size n is worth ∗g(n) — and the whole game is the nim-sum of its heaps
hackenbush-line
Which numbers the strings reach Every blue-red Hackenbush string of up to four edges, placed at its value. Short strings give integers, longer ones fill in halves and quarters, and the pattern continues — the reachable values are exactly the dyadic rationals, and nothing else. -2 -1 0 1 2 1 2 1/2 -1 −1/2 -2 1 2 3 4 edges one more edge halves the gap — and every value is a fraction with a power of two underneath
hackenbush-numbers
The picture is the numeral Blue-red Hackenbush strings and their values. Left may cut a blue edge, Right a red one, and everything above the cut falls. The value of each string is a number, and reading the string from the ground upward gives the binary expansion of exactly that number. 1 blue 2 blue blue 1/2 blue red 3/4 blue red blue 1/4 blue red red 3/8 blue red red blue each string is worth a number, and the string spells it blue is Left · red is Right · the ground is what holds it up
hackenbush-options
The value of LRL is computed, not read One string with every option drawn. Left's moves are the blue edges she may cut, Right's the red ones; each leaves the part of the string still standing. The value follows from those options by the same recursion that defines every game in the subject. 3/4 the position Left cuts blue, leaving 0 1/2 Right cuts red, leaving 1 {1/2 | 1}
how-hard
Which questions are answerable The theory is exact and much of it is expensive. Values are computable by definition; computing one for a position of any size is a different matter, and deciding the winner of a generalised board game is complete for PSPACE — as hard as anything solvable in polynomial space. the value of a Nim position instant the Grundy value of a small subtraction game linear the canonical form of a moderate position exponential in theory who wins a general Domineering board no efficient method who wins a generalised board game PSPACE-complete cost the definitions are constructive, so everything here is computable in principle and the practical range of an exact evaluator is a few dozen moves, which is the working constraint
infinitesimals
Smaller than every positive number, and not zero Values that sit between zero and every positive number. Up is genuinely greater than zero — Left wins it whoever moves — and genuinely less than a thousandth. Star is not comparable with zero at all. None of them is a number, and in a close game they are the entire margin. ↑ {0 | {0 | 0}} > 0 < 1/1024 outcome L ⇑ {0 | {{0 | 0}, 0 | 0}} > 0 < 1/1024 outcome L ↑∗ {{0 | 0}, 0 | 0} ‖ 0 < 1/1024 outcome N ∗ {0 | 0} ‖ 0 < 1/1024 outcome N ↓ {{0 | 0} | 0} < 0 < 1/1024 outcome R value canonical form against 0 against a thousandth ↑ is positive and smaller than every positive number — which no real number is ∗ is none of greater, smaller or equal — the order is partial, and that is the point
loopy
mex-rule
The smallest one missing The Grundy value of a position is the least non-negative integer that is not the Grundy value of any option. That single rule turns any impartial game into a Nim heap, because a heap of that size has exactly the same set of reachable values. 0 1 2 3 4 5 the values the options have the smallest missing one is 2 so this position is worth ∗2 options: 0, 1, 3, 4 present · absent — and the first absent one is the answer
misere-breaks-it
misere-nim
The same game, the opposite ending Nim under normal play, where the player who cannot move loses, and under misère play, where they win. The positions are identical and only one class of them changes hands — which makes misère Nim look easy and is deeply misleading about misère play in general. heaps normal misère 1, 1, 1 N P the answer flips 1, 2, 3 P P unchanged 1, 1, 1, 1 P N the answer flips 2, 2 P P unchanged 1, 1, 5 N N unchanged misère Nim differs only when every heap has one counter which is a special property of Nim, and not a feature of misère play at all
nim-heaps
Nim with heaps of 3, 5, 7 Heaps of counters; a move takes any number from one heap. The position is a loss for the player to move exactly when the binary digits of the heap sizes cancel in every column — the nim-sum — and that is the whole of the theory of Nim. 3 011 5 101 7 111 nim-sum 001 = 1 some column does not the player to move wins take 1 from the heap of 3 outcome N
nim-sum
Adding without carrying The nim-sum of the heap sizes: write them in binary and add each column separately, discarding any carry. A column with an even number of ones cancels. The position is lost for the player to move exactly when every column cancels. 3 0 1 1 5 1 0 1 7 1 1 1 1 0 0 1 not zero each column on its own — a carry would ruin it so whoever moves next, wins
outcomes-do-not-add
play-domineering
Domineering on 3×4 — and who wins A Domineering board with the outcome stated before anybody moves. Left places vertically, Right horizontally, and on this board Right wins whoever starts. Every reply the machine can make was computed at build time from the game recursion, so it is following the analysis rather than searching. worth −3/2 Right wins whoever moves stated before a move is made you place vertically · it places horizontally with the script running, the vertical pairs become clickable and this claim can be tested
play-hackenbush
Hackenbush from LLRL and RRRL — and who wins Two Hackenbush stalks with the total stated before anybody moves. Left cuts blue, Right cuts red, and everything no longer joined to the ground falls off. The total is negative, so Right wins whoever starts, and every reply the machine makes was computed at build time from the same recursion the essays describe. the total is −3/4 Right wins whoever moves stated before a move is made you cut blue · it cuts red with the script running, the blue edges become clickable and this claim can be tested
play-nim
Nim from 1, 2, 3 — and who wins A Nim position with the outcome stated before anybody moves. The reply to every move a reader can make was computed in advance from the nim-sum, so the machine is not searching or guessing — it is following the theorem, and there is no line of play in which it loses. 1 2 3 nim-sum 0 the player to move loses stated before a move is made with the script running, the heaps become clickable and this claim can be tested
play-the-hottest
Move where it is hottest Four independent components of one position, ordered by temperature. The temperature is how much a player loses by moving somewhere else instead, so the hottest component is the one to take — and a component that is already a number has no temperature at all, because nobody gains by moving in it. {6 | 0} t = 3 a big fight {2 | 0} t = 1 a smaller one {1 | 0} t = 1/2 small change {0 | 1} no temperature settled — a number component how much is at stake the whole position is worth {{{19/2 | 17/2} | {15/2 | 13/2}} | {{7/2 | 5/2} | {3/2 | 1/2}}} and the first move goes in the hottest part, which is a theorem up to a small error rather than a rule of thumb
play-toads
Toads and Frogs on T.FT.F — and who wins A Toads and Frogs strip with the outcome stated before anybody moves. Toads move right, frogs left, and either may jump one opposing piece into an empty square. The position is worth zero, so whoever moves first loses — and every reply the machine makes was computed at build time. worth 0 whoever moves first loses you move the toads · it moves the frogs with the script running, the toads become clickable and this claim can be tested
same-value
Two positions, one value A Hackenbush sprig and an abstract game with the same value. Being equal means more than being worth the same in isolation: either can be substituted for the other inside any larger position, and nothing about who wins will change. 1/2 a blue edge with a red one above = verified, not asserted {0 | 1} 1/2 the number one half equal means interchangeable in every sum, which is a much stronger claim their difference is 0, and its outcome is P
simplicity
The simplest number in between A game whose options are numbers is worth the simplest number strictly between them — and simplest means born earliest, so integers come before halves and halves before quarters. It is not the midpoint, and the difference is the whole content of the rule. 0 1 1/2 {0 | 1} 0 2 1 {0 | 2} -5 5 0 {-5 | 5} 1/4 3/4 1/2 {1/4 | 3/4} 1 3/2 5/4 {1 | 3/2} the marked point is the value; the hollow one, where it differs, is the midpoint
sprague-grundy
sum-of-parts
A position is the sum of its parts Four separate Hackenbush sprigs. A move is a move in one of them, so the position is their disjunctive sum, and its value is the sum of their values. Which part to play in is the entire decision, and the values are what makes it decidable. 2 + -1 + 1/4 + ∗ = {5/4 | 5/4} outcome L each sprig is a separate game; a move is a move in one of them the total was computed by adding the games, not the labels
thermograph
thermograph-pair
toads-and-frogs
Toads and frogs Toads move right and frogs move left, one square into a gap or hopping over exactly one opponent. A player unable to move loses. It can be played on squared paper by anybody, and its values are immediately stranger than the game looks. ∗ N ∗ N 0 P ∗ N blue toads move right · red frogs move left every value came out of the moves; none was chosen