Als je de sessie gevolgd hebt, dan heb je kennis gemaakt met het Fibonacci Nim spel.
Het Fibonacci nim spel is een wiskundig spel, een variant van het nim spel. Spelers nemen om beurten een aantal stenen weg van een hoop. Elke speler mag maximaal het dubbel wegnemen van wat de vorige speler heeft weggenomen. (Uitzondering: Bij de eerste beurt mag je zoveel nemen als je wilt, zolang je maar minstens 1 steen laat liggen.)
Bij dit spel kan je winnen door het aantal stenen voor te stellen als een Zeckendorf reeks. Het laagste getal van de reeks is het aantal stenen dat je wegneemt.
Hieronder vind je de code van het spel dat in het begin van de sessie gedemonstreerd is.
Als je door de code gaat merk je dat de code enkel instructies bevat die behandeld zijn gedurende de sessie. De moeilijkheid ligt hier in het maken van het juiste algoritme
#Stenen wegnemen
print("Doel: Wie de laatste steen wegneemt wint")
print()
print("Regels:")
print(" - de eerste keer mag je zoveel stenen wegnemen als je wenst, maar je moet minstens 1 steen laten liggen")
print(" - de volgende keren mag je maximaal het dubbel van het aantal stenen wegnemen dat je tegenstander weggenomen heeft.")
print()
print("Wie speelt tegen de computer?")
naam = input(" Naam: ")
aantal = int(input("Met hoeveel stenen starten we? "))
print()
max = aantal -1
speler = "comp"
while aantal > 0:
if speler != naam:
speler = naam
print()
print("Het is de beurt aan:",naam)
print("Je mag maximaal",max,"stenen wegnemen.")
weg = max + 1
while weg > max:
weg=int(input("Hoeveel stenen neem je weg? "))
aantal = aantal - weg
max = 2* weg
if aantal>1:
print("Er blijven",aantal,"stenen over")
else:
print("Er blijft 1 steen over")
else:
print()
speler = "computer"
print("Het is mijn beurt")
print("Ik mag maximaal",max,"stenen wegnemen.")
temp = aantal
while temp>0:
fib1=0
fib2=1
while fib2<=temp:
x=fib2+fib1
fib1=fib2
fib2=x
temp = temp - fib1
if fib1<=max:
weg = fib1
else:
weg = 1
if weg>1:
print("Ik neem",weg,"stenen weg.")
else:
print("Ik neem 1 steen weg.")
max = 2* weg
aantal = aantal - weg
if aantal!=1:
print("Er blijven",aantal," stenen over")
else:
print("Er blijft 1 steen over")
if speler == naam:
print("Proficiat, jij hebt gewonnen.")
else:
print("Pech gehad... ik heb gewonnen. Volgende keer meer succes.")