12.4 Bouwsteen 1 — één zet
Leerdoel: je kiest hoe je een zet voorstelt, en schrijft het allerkleinste geval: één schijf verplaatsen.
Een zet voorstellen
Een zet is simpel: "van paal X naar paal Y". Dat slaan we op als een
tuple (bron, doel). De hele oplossing wordt straks een lijst van
zulke tuples.
("A", "C") # verplaats de bovenste schijf van paal A naar paal C
De functie
We bouwen toe naar deze functie:
def hanoi(n, bron, doel, hulp):
...
n— aantal schijvenbron— waar de stapel nu staatdoel— waar hij heen moethulp— de derde paal, om tijdelijk schijven op te parkeren
Begin met het kleinste echte geval: n == 1. Eén schijf gaat
gewoon rechtstreeks van bron naar doel — één zet.
Bouw en test
Code-omgeving wordt voorbereid…
Antwoord
def hanoi(n, bron, doel, hulp):
return [(bron, doel)]
Eén zet, in een lijst. We gebruiken bron en doel zodat het ook klopt
als de palen anders heten (hanoi(1, "A", "B", "C") → [("A", "B")]).
Door naar stap 5: het basisgeval →.