Feladat
Adott három rúd, ezekre felfűzve n korong az átmérők (szigorúan) csökkenő sorrendjében. Át kell jutattni a korongokat az elsőről a harmadik rúdra.
Szabályok:
- Minden lépésben pontosan egy korongot mozgatunk egy rúdról egy másikra.
- Minden rúdról csak a legfelsőt lehet levenni.
- Sosem kerülhet nagyobb korong kisebbre.
Lásd még:
- https://hu.wikipedia.org/wiki/Hanoi_tornyai
- https://en.wikipedia.org/wiki/Tower_of_Hanoi
- https://www.mathsisfun.com/games/towerofhanoi.html
Megoldási ötlet: ahhoz, hogy a nagy korongot mozgatni lehessen, először az első (n-1)-et a segédrúdra kell tegyük (rekurzív hívással). Ez után jöhet a nagy korong mozgatása.
| |
Pluszfeladatok:
- Írjunk programot, mely adott n-re és adott lépéssorra (számpárok listája a fenti kimenetben szereplő nyilak nélkül) megmondja, hogy az helyesen megoldja-e a Hanoi tornyos feladatot n korongra (vagyis ellenőriz minden lépést, hogy megfelel-e a szabályoknak, illetve eljutunk-e a végállapotba)!
- Írjunk programot, amely a szöveges konzolablakban szemlélteti adott n-re a megoldás lépéseit (rajz karakterekből, ASCII-art)!