NIM
Het spelletje Nim is algemeen gekend. Er worden een aantal lucifers neergelegd. De spelers nemen beurt om beurt een willekeurig aantal lucifers weg. U mag er zoveel nemen als u wil, maar u moet zich beperken tot één enkele rij.
Wie de laatste lucifer wegneemt is de winnaar.
Deze versie in Visual Basic legt een willekeurig aantal lucifers neer in vier rijen, maximaal 8 per rij.
U stelt het aantal weg te nemen lucifers in met de listbox op de gewenste rij en klikt op OK.

De speler neemt het op tegen de computer. Deze speelt de best mogelijke strategie, dus winnen is voor de speler niet makkelijk, maar het kan!
Er bestaan nog talrijke varianten van dit spelletje.
 


Broncode

De winnende strategie
Hoe kun je winnen met Nim? Daartoe moet je jezelf een winnende positie kunnen geven!
We leggen dit best uit aan de hand van een voorbeeld.
Stel dat je de volgende spelstand hebt, en je bent zelf aan beurt:

Rij 1:  3 lucifers    X X X
Rij 2:  4 lucifers    X X X X
Rij 3:  5 lucifers    X X X X X

Stel het aantal lucifers in elke rij voor in een binair getal. Tel het aantal eentjes in elke kolom samen. Om te winnen moet het aantal enen in elke kolom even zijn. Wiskundig gezegd: de xor-functie moet nul geven.

            Rij 1:      3 : 0 1 1
            Rij 2:      4 : 1 0 0
            Rij 3:      5 : 1 0 1
                            -----
            Aantal enen:    2 1 2     (of 3 xor 4 xor 5 = 1)

Het aantal enen in de tweede kolom is oneven dus, moeten lucifers wegnemen om dit te corrigeren. Door twee lucifers weg te nemen op rij 1, lukt dit. Dus dit is de zet die u moet doen, om aan de winnende hand te blijven. Wat de tegenspeler ook doet. U kunt steeds een positie vinden waarin u in het voordeel zijt.

De nieuwe toestand is dus:

            Rij 1:  3 - 2 = 1: 0 0 1
            Rij 2:          4: 1 0 0
            Rij 3:          5: 1 0 1
                               -----
            Aantal enen:       2 0 2

Dit is dus een winnende positie. In het programma wordt volgende berekening gemaakt:
            1 xor 4 xor 5 = 0

Meer info over Nim vindt u op onderstaande links:
http://www.ceie.sunysb.edu/Wise/HSfall2000/nim.html
http://www.brandeis.edu/sumsch/students/math/berry_eric/nimtest.html
http://forum.swarthmore.edu/dr.math/problems/nimgame.html
http://web.usna.navy.mil/~wdj/nim.htm
http://web.usna.navy.mil/~wdj/nim.htm
http://www.zillions-of-games.com/nim.html