actionbrowser.com
Aus ProgrammingWiki Geschichte Vermutlich stammt dieses Spiel von dem französischen Mathematiker Édouard Lucas (* 4. April 1842; † 3. Oktober 1891), bei dem ein Turm aus einzelnen Scheiben von nach unter Nutzung des Hilfsplatzes umgesetzt werden soll. Dabei darf immer nur eine Scheibe bewegt werden. Außerdem darf nie eine größere Scheibe auf einer kleineren liegen. Lucas dachte sich dazu die Geschichte aus, dass indische Mönche im großen Tempel zu Benares, im Mittelpunkt der Welt, einen Turm aus 64 goldenen Scheiben versetzen müssten. Wenn ihnen das gelungen sei, wäre das Ende der Welt gekommen. Turm von Hanoi Implementation Hinweis: Testen Sie die Prozedur mit kleinen Argumenten! Aufgaben Beschreiben Sie die Spielstrategie (d. h. den Lösungsalgorithmus) verbal. Entscheiden Sie, ob eine echt rekursive oder endständig rekursive Prozedur vorliegt. Ermitteln Sie, welcher Zusammenhang zwischen der Anzahl der Scheiben und der Anzahl der erforderlichen Bewegungen besteht. In wie vielen Jahren "droht" das Ende der Welt, wenn die indischen Mönche im Tempel zu Benares für die Bewegung jeder einzelnen Scheibe eine Sekunde benötigen würden?
Die Scheibe 4 ist auf dem Stab "A" und der 3 Scheiben Turm ist auf dem Stab "B", der Zielstab "C" ist leer. Bild 4 Bei dieser Aufstellung mssen wir nun die Scheibe 4 von Stab "A" nach "C" bertragen und als nchstes verschieben wir den 3 Scheiben Turm mit ein bisschen Magie auf den Zielstab. Lasst uns zurckdenken. Lasst uns vergessen, dass wir eine grere Scheibe als 3 haben. Scheibe 3 ist auf dem Stab "C", aber sollte sich auf dem Stab "B" befinden. Um das zu erreichen muss Scheibe 3 da sein, wo sie sich jetzt befindet und Stab "B" sollte frei sein. Scheiben 1 und 2 sollten auf Stab "A" sein. Unser Ziel ist also, Scheibe 2 auf den Stab "A" zu verschieben. Bild 5 Lasst uns die Scheibe 3 vergessen (siehe Bild 6). Um Scheibe 2 nach Stab "A" verschieben zu knnen (ber der dnnen blauen Linie), sind die Scheiben, die kleiner sind als Scheibe 2, auf Stab "B" gelegt. Unser Ziel ist jetzt also, Scheibe 1 nach Stab "B" zu verschieben. Wir sehen, dass das eine leichte Aufgabe ist, da Scheibe 1 von keiner anderen Scheibe blockiert wird und Stab "B" frei ist.
Die Schritte sollten auch fortlaufend nummeriert sein. Sobald der Vorgang abgeschlossen ist, sollte das Programm wiederholt werden und der Benutzer erneut nach der Anzahl der Festplatten gefragt werden. Das Programm sollte enden, wenn der Benutzer 0 eingibt. Hier ist ein Beispiel für die Konsolenausgabe, die Ihr Programm generieren sollte: Wie viele Festplatten? (0 bis Ende) 3 1: 1 bis 3 2: 1 bis 2 3: 3 bis 2 4: 1 bis 3 5: 2 bis 1 6: 2 bis 3 7: 1 bis 3 Wie viele Festplatten? (0 bis Ende) 0 Die einzige andere Voraussetzung für die Lösung dieser Herausforderung ist, dass Ihre Lösung rekursive Programmierung verwenden muss. Mit anderen Worten, Ihre Lösung muss eine Methode enthalten, die sich selbst aufruft, um das Rätsel zu lösen. Rekursives Programmieren kann eine Herausforderung sein. Hier einige Hinweise zur Lösung dieses Rätsels: Das Puzzle besteht aus drei Stiften. Eine davon enthält den Startstapel der Festplatten. Nennen Sie diesen Stift das Quellstift. Einer der verbleibenden zwei Stifte ist der Stift, auf den Sie den Plattenstapel verschieben möchten.