faecher:informatik:oberstufe:algorithmen:rekursion:tuerme_hanoi:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:algorithmen:rekursion:tuerme_hanoi:start [20.01.2022 10:36] – [Analyse] sbelfaecher:informatik:oberstufe:algorithmen:rekursion:tuerme_hanoi:start [11.12.2023 15:42] (aktuell) – [Analyse] Marco Kuemmel
Zeile 12: Zeile 12:
 ===== Analyse ===== ===== Analyse =====
  
-Bei genauerer Analyse des Problems, kann man erkennen, dass es rekursiver Natur ist: Beim Umsetzen des Turms mit ''n'' Scheiben vom Platz A zum Platz B muss man immer zunächst den Turm mit ''n-1'' Scheiben, der sich auf der größten (untersten) Scheibe befindet auf den "Hilfsplatz" **C** umsetzen.+Bei genauerer Analyse des Problems, kann man erkennen, dass es rekursiver Natur ist: Beim Umsetzen des Turms mit ''n'' Scheiben vom Platz A zum Platz B muss man immer zunächst den Turm mit ''n-1'' Scheiben, der sich auf der größten (untersten) Scheibe befindetauf den "Hilfsplatz" **C** umsetzen.
  
-Dann kann man die größte Scheibe nach **B** setzen und muss anschließend  nochmal den ''n-1'' schieben großen Turm von **C** nach **B** umsetzen+Dann kann man die größte Scheibe nach **B** setzen und muss anschließend nochmal den ''n-1'' großen Turm von **C** nach **B** umsetzen.
-zu können. Danach muss der Turm von n-1 Scheiben vom Platz C +
-wieder auf den Platz B umgesetzt werden.+
  
 {{ :faecher:informatik:oberstufe:algorithmen:rekursion:tuerme_hanoi:auswahl_128.png?600 |}} {{ :faecher:informatik:oberstufe:algorithmen:rekursion:tuerme_hanoi:auswahl_128.png?600 |}}
Zeile 26: Zeile 24:
  
 Vollziehe den rekursiven Charakter des Problems in der Simulation nach, indem du Türme mit 1,2,3,4 Scheiben umsetzt und dir dabei klar machst, dass du jeweils auf das Verfahren des vorigen Schritts mit n-1 Scheiben zurückgreifen kannst. Vollziehe den rekursiven Charakter des Problems in der Simulation nach, indem du Türme mit 1,2,3,4 Scheiben umsetzt und dir dabei klar machst, dass du jeweils auf das Verfahren des vorigen Schritts mit n-1 Scheiben zurückgreifen kannst.
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (A2) ===
 +
 +Modelliere das Problem in Java. Als ADT kannst du einen Stack verwenden, den es in der Java Standardbibliothek gibt:
 +
 +<code java>
 +import java.util.Stack;
 +[...]
 +public class Hanoi {
 +    int numDiscs;
 +    Stack<Integer> towerA = new Stack<>();
 +    Stack<Integer> towerB = new Stack<>();
 +    Stack<Integer> towerC = new Stack<>();
 +[...]
 +public Hanoi() {
 +// ersten Stapel füllen
 +}
 +
 +// schiebe Turm von ... nach ...
 +public void move([...]) {
 +
 +}
 +
 +// alle drei Türme ausgeben
 +public void printState() {
 +
 +}
 +</code> 
 +
 +  * Implementiere den Konstruktor, der den Turm mit n Scheiben auf Platz A aufbaut.
 +  * Implementiere zunächst die Methode ''printState()'', die den Zustand des Spiels ausgibt.
 +  * Implementiere die Rekursive Funktion ''move''. Überlege, welche Argumente die Methode benötigt.
 +
 +=== Hinweise und Hilfestellungen ===
 +
 +  * [[https://codeberg.org/qg-info-unterricht/template-hanoi|Hier findet sich ein BlueJ-Projekt mit einem Codegerüst]].
 +  * Die Türme werden durch Stacks von Integern repräsentiert. Die einzigen benötigten Stack-Methoden sind ''push'' (lege ein Element auf den Stack) und ''pop'' (entferne das oberste Element vom Stack).
 +  * Überlege dir beim Programmieren der Methode ''init()'', durch welche Zahlen du die Scheiben repräsentieren willst.
 +  * Die Methode ''moveTower()'' ist der eigentliche Algorithmus, der einen beliebige Anzahl Scheiben von einem Turm zu einem anderen Turm versetzt. Überlege dir einen Basis- und einen Rekursionsfall!
 +  * Die Methode ''test()'' kannst du nutzen, um deine moveTower-Methode zu testen.
 +  * Beachte: Beim Ausgeben eines Stacks (''printState'') ist das rechte Element des Stacks das oberste!
  
  
  • faecher/informatik/oberstufe/algorithmen/rekursion/tuerme_hanoi/start.1642674968.txt.gz
  • Zuletzt geändert: 20.01.2022 10:36
  • von sbel