NIM is a simple game involving piles of objects (we will call them "stones"). The objective of the game is to be the person who takes the last stone. In any move, you must take away one or more stones from any single pile.

There is a known perfect winning strategy to playing NIM. Let's use a simple example to illustrate how to use this strategy.

Lets say you have three piles with 1, 4 and 7 stones:



To find out the optimal move, we first express the count of each pile as a binary number, using this table:
 Decimal   Binary 
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
Next we add up these binary numbers a special way:
0001 X

0100 XXXX



0010  Special Sum
For any column with an even number of 1's, we put down a zero. For an odd number, we put down a one. In mathematics, this is called the "Exclusive Or". To win, we want to get this sum to total 0000. Looking over the numbers above, it looks like if we took this sum away from the third pile -- changing a 7 (0111 in binary) to a 5 (0101 in binary) -- then the special sum would become 0000.

You continue this operation until you win the game. Of course, if your opponent has left you with a special sum of 0000, then you will lose, assuming perfect play on his part. And you thought math in school was boring!