\documentclass{bschlangaul-aufgabe} \bLadePakete{java,hanoi} \begin{document} \bAufgabenMetadaten{ Titel = {Türme von Hanoi}, Thematik = {Hanoi}, Referenz = AUD.Algorithmenmuster.Divide-and-Conquer.Hanoi, RelativerPfad = Module/30_AUD/60_Algorithmenmuster/30_Divide-and-Conquer/Aufgabe_Hanoi.tex, ZitatSchluessel = aud:ab:7, ZitatBeschreibung = {Seite 1, Aufgabe 2: Türme von Hanoi}, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Teile-und-Herrsche (Divide-and-Conquer)}, } % https://www.yumpu.com/de/document/read/17936712/ubungen-zum-prasenzmodul-algorithmen-und-datenstrukturen Betrachten wir das folgende Spiel (Türme von Hanoi), das aus drei Stäben 1, 2 und 3 besteht, die senkrecht im Boden befestigt sind. Weiter gibt es n kreisförmige Scheiben mit einem Loch im Mittelpunkt, so dass man sie auf die Stäbe stecken kann. Dabei haben die Scheiben verschiedene Radien, alle sind unterschiedlich groß. Zu Beginn stecken alle Scheiben auf dem Stab 1, wobei immer eine kleinere auf einer größeren liegt. Das Ziel des Spiels ist es nun, die Scheiben so umzuordnen, dass sie in der gleichen Reihenfolge auf dem Stab 3 liegen. Dabei darf immer nur eine Scheibe bewegt werden und es darf nie eine größere auf einer kleineren Scheibe liegen. Stab 2 darf dabei als Hilfsstab verwendet werden. \index{Teile-und-Herrsche (Divide-and-Conquer)} \footcite[Seite 1, Aufgabe 2: Türme von Hanoi]{aud:ab:7} Ein Beispiel für 4 Scheiben finden Sie in folgendem Bild: \centerline{\bHanoi{4}{4/1,3/1,2/3,1/2}} Entwerfen Sie mit Hilfe der Vorlage eine varibale Simulation der Türme von Hanoi. \begin{enumerate} \item Ein ELEMENT hat immer einen Wert (Integer) und kennt das Nachfolgende Element, wobei immer nur das jeweilige Element auf seinen Wert und seinen Nachfolger zugreifen darf \item Ein Turm ist einem Stack (Kellerspeicher) nachempfunden und kennt somit nur das erste Element. Hinweis: Beachten Sie, dass nur kleinere Elemente auf den bisherigen Stack gelegt werden können \item In der Klasse HANOI müssen Sie nur die Methode \bJavaCode{public void hanoi (int n, TURM quelle, TURM ziel, TURM hilfe)} implementieren. Die anderen Methoden sind zur Veranschaulichung des Spiels! Entwerfen Sie eine rekursive Methode die einen Turm der Höhe n vom Stab quelle auf den Stab ziel transportiert und den Stab hilfe als Hilfsstab verwendet. \end{enumerate} \end{document}