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.
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 →.