Ga naar hoofdinhoud

12.7 De complete oplossing

Leerdoel: je ziet de volledige functie werken, bekijkt de zetten, en speelt met het aantal schijven.

De functie

Alles wat je hebt opgebouwd, bij elkaar — zeven regels die elke toren verplaatsen:

def hanoi(n, bron, doel, hulp):
if n == 0:
return []
zetten = []
zetten += hanoi(n - 1, bron, hulp, doel)
zetten.append((bron, doel))
zetten += hanoi(n - 1, hulp, doel, bron)
return zetten

Probeer het zelf

Verander AANTAL en draai opnieuw. Let op het aantal zetten: elke schijf erbij verdubbelt het werk (2ⁿ − 1). Bij AANTAL = 20 zijn het al ruim een miljoen zetten — de cel print ze dan ook allemaal, dus houd het klein als je de lijst wilt lezen.

Python
Code-omgeving wordt voorbereid…

Wat je nu hebt

Zeven regels code lossen een probleem op dat met de hand al bij een paar schijven lastig wordt. Dat is de kracht van recursie: je beschrijft hoe een probleem in kleinere versies van zichzelf uiteenvalt, en de rest volgt vanzelf.

Door naar stap 8: aanpassen →.