Towers of Hanoi
By E.Hooijmeijer
1 Inleiding
Volgens een eeuwen oude legende hangt het lot van de wereld van deze puzzel af. Ergens in Azië
is er een tempel waar priesters bezig zijn met een versie met 64 schijven. Als ze klaar zijn met
hun werk, zal de wereld vergaan.
Als de priesters stug doorgaan om het einde van de wereld te veroorzaken, en daarbij de
snelste oplossing gebruiken, en als ze om de seconde een schijf verplaatsen, dan zijn ze nog steeds
2^64-1 seconde bezig, ruwweg zo'n 585 miljard jaar. De priesters zijn dus wel nog even bezig :-)
2 Opdracht
Implementeer in de klasse TowersOfHanoiImpl de methode 'public void solve(HanoiPuzzle hp)'
welke de gegeven HanoiPuzzle tot een goed einde moet zien te brengen. In de start positie
staan alle schijven op de meest linker (source) paal. De bedoeling is om ze allemaal naar
de rechter (target) paal te verplaatsen. Hierbij mag je :
- maar 1 schrijf tegelijkertijd verplaatsen.
- geen schrijf die groter is plaatsen bovenop een kleinere.
- een oplossing vinden in minder dan 2^n zetten, waarbij n het aantal schijven is.
3 Voorbeeld
| | | | | | | | | | | |
# | | | | | | | | | | #
### | | ### # | | # ### | | ###
---------- ---------- ---------- ----------
4 Tips
- 'De Torens van Hanoi' is een klassieke puzzel die recursief efficient is op te lossen.
- Als je de HanoiPuzzle naar de standaard uitvoer print krijg je de huidige staat
van de puzzel te zien.
- Als je over het maximaal aantal zetten heen gaat stopt de puzzel vanzelf.
Test case 1 : Hanoi #1
Move the 2 disks from the left to the right tower:
- Move only one disk at a time.
- Bigger disks cannot lie upon smaller disks.
- Maximum number of moves is 3
Starting position :
## || ||
#### || ||
Wanted Result :
|| || ##
|| || ####
Test case 2 : Hanoi #2
Move the 3 disks from the left to the right tower:
- Move only one disk at a time.
- Bigger disks cannot lie upon smaller disks.
- Maximum number of moves is 7
Starting position :
## || ||
#### || ||
###### || ||
Wanted Result :
|| || ##
|| || ####
|| || ######
Test case 3 : Hanoi #3
Move the 4 disks from the left to the right tower:
- Move only one disk at a time.
- Bigger disks cannot lie upon smaller disks.
- Maximum number of moves is 15
Starting position :
## || ||
#### || ||
###### || ||
######## || ||
Wanted Result :
|| || ##
|| || ####
|| || ######
|| || ########