Bergervei/Java-Turm-von-Hanoi

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
== Geschichte ==

<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
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 <math>A</math> nach <math>B</math> unter Nutzung des Hilfsplatzes <math>H</math> umgesetzt werden soll. Dabei darf immer nur eine Scheibe bewegt werden. Außerdem darf nie eine größere Scheibe auf einer kleineren liegen.<br />

'''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.<br />
Wenn ihnen das gelungen sei, wäre das Ende der Welt gekommen.
</td>
<td valign="top">
[[Bild:Tower_of_Hanoi.jpg|miniatur|hochkant=1.5|Turm von Hanoi]]
</td>
</tr>
</table>

== Implementation ==

<code id="5378c118651af">
int count = 0;

public void verschiebe(int n, String start, String h, String ziel) {
 if (n > 0) {
  verschiebe(n - 1, start, ziel, h);
  count++;
  System.out.println("Scheibe " + n + ": " + start + " --> " + ziel);
  verschiebe(n - 1, h, start, ziel);
 }
}

public void hanoi(int n) {   
 verschiebe(n, "A", "H", "B");
 System.out.println("--> " + count + " Bewegung(en)");
 System.out.println("ok");
}
</code>

'''Hinweis:''' Testen Sie die Prozedur mit kleinen Argumenten!

<run id="5378c11865246">
hanoi(3);
</run>

== Aufgaben ==

<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
* Beschreiben Sie die Spielstrategie (d.h. den [[Grundlagen der funktionsorientierten Programmierung mit SCHEME/Der Algorithmusbegriff|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 Jahre "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?
</td>
<td>
[[Bild:Tower_of_Hanoi.gif|frame|Turm von Hanoi mit 3 Scheiben]]
</td>
</tr>
</table>