Hier eine graphisch animierte Variante der Türme von Hanoi. Öffnen Sie die Datei (ab Web-Code) mit Ihrer Java-Entwicklungsumgebung (z. B. BlueJ) oder durch einfaches Auspacken mit dem jar -Befehl. Sie finden darin die Quelltextdatei. Wenn Sie das Programm starten, werden Sie nach der Scheibenzahl gefragt. Auf dem Display sehen Sie einen Turm mit der entsprechenden Anzahl Scheiben. Türme von hanoi java school. Ihre Aufgabe ist es nun, den Turm vom linken Sockel auf den mittleren Sockel zu verschieben. Dabei gelten folgende Regeln:
Es kann nur eine Scheibe auf einmal verschoben werden. Es darf keine Scheibe auf eine kleinere Scheibe gelegt werden. Durch den Aufruf super(x, y, width, height) wird die Anzahl Scheiben eingelesen und der Turm dargestellt. Die Anzahl Scheiben ist in der Variablen n gespeichert, die Sie jederzeit auslesen können. Um eine Scheibe zu verschieben, benutzen Sie die Methode verschieben(int von, int nach). Dabei sind von und nach ganze Zahlen im Bereich von 1 bis 3. Dateien:
0 Kommentare
1 Lösung(en)
java
class HanoiLoesung extends HanoiGraphik {
static final private int x = 0, y = 0, width = 800, height = 500;
HanoiLoesung() {
super(x, y, width, height);
verschiebe(n, 1, 2, 3);}
void verschiebe(int n, int von, int nach, int via) {
if (n == 1)
verschiebe(von, nach);
else {
verschiebe(n - 1, von, via, nach);
verschiebe(1, von, nach, via);
verschiebe(n - 1, via, nach, von);}}
public static void main(String[] args) {
new HanoiLoesung();}}
Verifikation/Checksumme:
Am Ende steht der Turm in der Mitte.
- Türme von hanoi java programm
- Türme von hanoi java project
- Türme von hanoi java school
- Türme von hanoi java code
- Türme von hanoi java hotel
Türme Von Hanoi Java Programm
Der Algorithmus, den wir gerade definiert haben, ist ein rekursiver Algorithmus um Türme mit n Scheiben zu verschieben. Wir werden diesen Algorithmus in Python als rekursive Funktion implementieren. Der zweite Schritt ist eine einfache Bewegung einer Scheibe, aber um die Schritte 1 und 3 zu verwirklichen, müssen wir den Algorithmus wieder auf sich selbst anwenden. Türme von hanoi java code. Die Berechnung endet in einer endlichen Anzahl von Schritten, da die Rekursion jedesmal mit einem um 1 verminderten Argument gegenüber der aufrufenden Funktion gestartet wird. Am Schluss ist noch eine einzelne zu bewegende Scheibe übrig. Rekursives Python-Programm
Das folgende in Python geschriebene Skript enthält eine rekursive Funktion namens "hanoi" zur Lösung des Spiels "Türme von Hanoi":
def hanoi(n, source, helper, target):
if n > 0:
# move tower of size n - 1 to helper:
hanoi(n - 1, source, target, helper)
# move disk from source peg to target peg
if source:
(())
# move tower of size n-1 from helper to target
hanoi(n - 1, helper, source, target)
source = [4, 3, 2, 1]
target = []
helper = []
hanoi(len(source), source, helper, target)
print source, helper, target
Anmerkung: AUX heißt in unserem Programm "helper".
Türme Von Hanoi Java Project
Mit unserer Formel können wir die minimale Anzahl von Zügen berechnen, die notwendig ist einen Turm mit 3 Scheiben von SOURCE Stab auf den TARGET Stab zu verschieben: 7 ( entspricht 2 3 - 1). In dem Bild auf der rechten Seite kann man die Lösung für den Fall n = 3 sehen. Man beginnt also mit dem Zug, dass man die oberste Scheibe von SOURCE auf TARGET bewegt. Startet man dagegen mit dem Zug TARGET nach AUX, wird man nicht mehr in der Lage sein, die Aufgabe in weniger als 9 Zügen zu bewerkstelligen. 7 Züge ist aber das Ziel. Nummerieren wir die Scheiben mit D 1 (kleinste), D 2 and D 3 (größte) und bezeichnen wir
die Stäbe mit S (SOURCE), A (AUX) und T (TARGET). Wir erkennen, dass wir in drei Zügen den Turm der Größe 2, d. Java: Die Türme von Hanoi | Tobias Fonfara. die Scheiben D 1 und D 2 nach A bewegen. Nun können wir die Scheibe D 3 nach T bewegen, wo sie endgültig positioniert bleibt. In den nächsten drei Zügen bewegen wir den Turm von A, bestehend aus den Scheiben D 2 D 1 von A nach T auf die Scheibe D 3. Nun überlegen wir uns das Vorgehen zum Verschieben von Türme beliebiger Größe n von Stab S nach Stab T:
Bewege n - 1 Scheiben D n-1... D 1 von S nach A. Scheibe D n ist noch auf Stab S
Bewege D n nach T
Bewege die n - 1 Scheiben D n-1... D 1 von A nach T, d. diese Scheiben werden auf die Scheibe D n positioniert.
Türme Von Hanoi Java School
Klassische Trme von Hanoi - am Anfang sind alle Scheiben auf dem
Stab'A'. Bild 1
Die Lsung des Rtsels ist, dass alle Scheiben mit mglichst wenigen
Zgen auf dem Stab "C" liegen sollen. Ein Zug ist das Verschieben einer
Scheibe von einem Stab auf den anderen, wobei grere Scheiben nicht auf
kleineren liegen drfen. Bild 2
Beliebige Trme von Hanoi - am Anfang knnen die Scheiben in
einer beliebigen Position sein, unter der Bedingung, dass keine grere
Scheibe auf einer kleineren liegt (siehe Bild 3). Am Ende knnen die
Scheiben beliebig anders liegen - aber unter der selben Bedingung. Bergervei/Java-Turm-von-Hanoi – ProgrammingWiki. *)
Bild 3
Lsung der Trme von Hanoi - von "regular" nach "perfect"
Fangen wir an das Rtsel zu lsen. Lasst uns annehmen, damit es leichter ist, dass es unser Ziel ist,
4 Scheiben auf den Stab "C" zu legen - wie bei den klassischen
Trmen von Hanoi (siehe Bild 2). Lasst uns annehmen, dass wir "wissen", wie man einen "perfekten"
3 Scheiben Turm verschiebt. Auf dem Weg zur Lsung bekommt man eine spezielle Aufstellung.
Türme Von Hanoi Java Code
If you're seeing this message, it means we're having trouble loading external resources on our website. Wenn du hinter einem Webfilter bist, stelle sicher, dass die Domänen *. und *. nicht blockiert sind.
Türme Von Hanoi Java Hotel
");
bewege(b, a, c, n-1);
Eine typische Situation, die zeigt, weshalb man sich über die Namensgebung von Variablen und Methoden Gedanken machen muss:
statt
void bewege (char a, char b, char c, int n)
sollte es besser heißen:
void TransportiereTurm(
String von,
String zwischenablage,
String nach,
int derHoehe)... So sollte das ganze leicht deutlich werden.
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. Fortgeschrittene Themen: Die Türme von Hanoi. 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?