Ga naar hoofdinhoud

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 schijven
  • bron — waar de stapel nu staat
  • doel — waar hij heen moet
  • hulp — 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

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