# Bonus I: Hackenbush

(Green) Hackenbush: dots joined by lines, some dots are "on the
ground"; a move comprises deleting a line, and then deleting all lines which
are no longer connected to the ground.

$*n :=$ snake of length $n$.

$P+Q :=$ [picture where we draw $P$ and $Q$ side by side, with no connections
    between them]

(so a Nim game is a sum of snakes)

Proposition:
    Every Hackenbush picture is equivalent to a snake:
	given a picture $P$, there is an $n >= 0$ such that given any Hackenbush
	picture $Q$, the picture $P+Q$ has the same winner as $*n+Q$.

    Moreover, we have a simple recursive definition of $n$:
	$n$ is the least number such that no picture obtained by making a single
	move in $P$ is equivalent to $*n$.
Sketch Proof (see abstract version below for a cleaner proof):
    Suppose inductively that the proposition holds for all pictures smaller
    than $P$.

    Let $Q$ be another picture. Then the player who wins $*n+Q$ can win $P+Q$ as
    follows: if ever our winning strategy for $*n+Q$ has us play in $*n$, we
    play the corresponding move in $P$. While our opponent moves in $Q$, we make
    the moves from our winning strategy for $*n+Q$. If ever the opponent plays
    in $P$, then: let $P'$ be the resulting picture, so the move is from $P+Q'$ to
    $P'+Q'$ say. If $P'$ is equivalent to $*m$ with $m < n$, we treat it as if they
    made the corresponding move in $*n$; else, $P'$ is equivalent to $*m$ with
    $m > n$, so there's a move in $P'$ to a picture $P''$ equivalent to $*n$; so move
    to that, and we win since we win $*n+Q'$, since we were using our winning
    strategy up to this point.


So here's how to win hackenbush (when we can):
    on your turn, make a move such that the resulting picture is equivalent to
    a sum of snakes of lengths which have nim sum 0. If you don't have any such
    move, you'll lose if your opponent is using this strategy!


# Bonus II: abstract impartial games and the Sprague-Grundy theorem

An _impartial game_ is a two player game where, like in nim but unlike in
chess, the moves available to a player on their turn don't depend on whose
turn it is, and where victory is defined by saying that a player loses if it's
their turn to move but they can't move.

For impartial games $G$ and $H$, $G+H$ is the game where you can choose on your turn
either to play in $G$ or to play in $H$.

Any nim position is an impartial game. Write $*n$ for the nim position with a
single pile of size $n$.

So e.g. $*2 + *2 + *3$ is the nim position with two piles of size 2 and one of
size 3.

In particular, $*0$ is the "zero game" (also just written 0): whoever's turn it
is to move loses.

We consider a position in a game as a game in itself, so a move is a move from
one game to another.

e.g. a (green) Hackenbush picture is an impartial game.

We refer to the player with the move as the "first player", and their opponent
as the "second player". So after a move, the first player in the new game was
the second player in the original game, and vice versa.

An impartial game is _finite_ if there's maximum number of moves that can be
made before the game ends. Call this maximum the _length_ of the game.

Lemma:
    Any finite impartial game is either a "first player win" or a "second
    player win".
Proof:
    Suppose inductively that this is true for all shorter games.

    If there's a move available which leads to a game which is a second player
    win, then that's a winning move.

    Otherwise, it's a second player win, because whatever the first move is
    leaves that player as first player in a first player win game.

Definition:
    Two games $G$ and $H$ are _equivalent_, $G = H$,
    if for any game $K$,
    $G+K$ is a first-player win iff $H+K$ is.

Remark:
    $G+H = H+G$
    $(G+H)+K = G+(H+K)$
    $*0+G = G$
    if $G = H$ then $G+K = H+K$ for any $K$.

Lemma:
    $G = *0$ iff $G$ is a second player win.
Proof:
    $*0$ is a second player win, so left to right is immediate.

    Suppose $G$ is a second player win, and $K$ is any game. Then $G+K$ is won by
    the same player as $K$. Indeed, given a winning strategy for $K$ for one of
    the players, and a winning strategy for $G$ for the second player, the
    following is a winning strategy for $G+K$:
	On your turn, play the next move in the winning strategy for $K$, unless
	your opponent just played in $G$ - then play the next move in the
	winning strategy for $G$.

Example:
    $G+G = *0$

    Indeed, the second player wins by mirroring any move made in one copy of $G$
    in the other copy of $G$.

Lemma:
    $G+H = *0$ iff $G = H$
Proof:
    If $G=H$, then $G+H = G+G = *0$ by the above example.

    If $G+H = *0$, then by adding $H$ to both sides, we see
	$G = G + *0 = G+H+H = *0 + H = H$.

Our winning strategy for nim tells us how to add nim games:

Proposition:
    $*n + *m = *( n (+) m )$
Proof:
    $n (+) m (+) ( n (+) m ) = 0$,
    so as we saw above,
    $*n + *m + *( n (+) m )$ is a second-player win.

Now we can prove a general version of the reduction of green Hackenbush to Nim:

Theorem [Sprague-Grundy]:
    Any finite impartial game $G$ is equivalent to a nim pile.

    Specifically, $G = *n$ where $n$ is the smallest non-negative number such that
    there's no move from $G$ to a game equivalent to $*n$.
Proof:
    $A$ winning strategy in $G + *n$ for the second player:
	Response to a move in $*n$, say to $*m$:
	    mirror in $G$ by making a move in $G$ to a game equivalent to $*m$.
	    This results in a game equivalent to $*m + *m = *0$.
	Response to a move in $G$:
	    by induction, the game moved to in $G$ is equivalent to some $*m$;
	    so we have to win as first player in $*m + *n$,
	    but by definition of $n$, $m != n$, so $*m + *n != *0$,
	    so $*m + *n$ is indeed a first player win. So follow the winning
	    strategy.

Further reading: Berlekamp, Conway, and Guy, "Winning Ways for your
    Mathematical Plays, vol 1"
