Türme von Hanoi < Haskell < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Aufgabe | Geben Sie eine Haskellimplementierung hanoi :: Int -> Int -> Int -> [(Int,Int)] an,
die die Spielzüge zur Lösung des Problems der Türme von Hanoi berechnet. Dabei soll hanoi n x y = l
die Spielzüge, die benötigt werden, um einen Turm der Höhe n von Platz x auf Platz y zu bewegen, in
der Liste l ablegen. l besteht aus Tupeln (a, b), wobei ein solches Tupel bedeutet, dass die oberste
Scheibe von Platz a auf den Platz b bewegt werden muss.
Geben Sie durch schrittweises Ausrechnen von hanoi 3 1 3 an, wie ihre Implementierung die
Spielzüge berechnet. |
Nun habe ich eine Implementierung in Haskell mit folgender Deklaration
--n Anzahl der Scheiben
--s Startturm
--z Zielturm
--h Hilfsturm
bewege::Int->Int->Int->Int->[(Int,Int)]
bewege 0 s z h = []
bewege n s z h = bewege (n-1) s z
++ [(s,z)]
++ bewege (n-1) h z s
Mein Problem ist das wir in unserer Aufgabe bei der vorgegebenen Deklararion kein Hilfsturm angeben haben sondern nur die Anzahl der Scheiben und Start und Zielturm. Wie soll das gehen??
Gruß georg
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:27 Mi 10.01.2007 | Autor: | Frank05 |
> Mein Problem ist das wir in unserer Aufgabe bei der
> vorgegebenen Deklararion kein Hilfsturm angeben haben
> sondern nur die Anzahl der Scheiben und Start und Zielturm.
> Wie soll das gehen??
Ich glaub ich verstehe dein Problem nicht so richtig. Es gibt ja nur 3 Türme.. wenn einer der Startturm und einer der Zielturm ist, dann fällt die Wahl des Hilfsturm recht einfach. Schreib doch noch eine zusätzliche Regel, die dir aus den zwei gegebenen Türmen noch schnell berechnet welcher Turm dann als Hilfsturm verwendet werden kann und kombinier das dann mit dem was du schon hast. Und beides zusammen ist dann die Lösung.
MfG,
Frank
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:29 Mo 09.07.2007 | Autor: | xenos |
Das "Turm von Hanoi" - Problem ist für mehr als eine Scheibe je Turm nicht mehr unbedingt lösbar, wenn kein Hilfsturm benutzt wird und sogar unlösbar, wenn es einen Turm mit mindestens zwei und einen weiteren mit mehr als einer Scheibe und keinen Hilfsturm gibt. Deshalb wird dieses Problem im Allgemeinen immer mit drei Türmen (einem Startturm, einem Zielturm und einem Hilfsturm mit Null Scheiben) betrachtet. Ich denke, dies ist auch in dieser Aufgabenstellung der Fall.
Viele Grüße, Xenos.
|
|
|
|