Übungsaufgabe Nr. 3
Übersicht

konstantinBetreff: Übungsaufgabe Nr. 3 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Türme von Hanoi
Es geht um die Türme von Hanoi. Vielleicht kennen es einige von euch. Es ist ein Puzzle, das die Mönche in den Klöstern in Vietnam damals gespielt haben. Zitat: Das Puzzle hat drei Positionen (üblicherweise "Pflöcke", 1-3), auf denen Scheiben verschiedener Größe abgelegt werden. In der Anfangssituation liegen alle n Scheiben auf Position 1.
Ziel ist es durch Bewegung einzelner Scheiben den gesamten Turm aus n Scheiben auf die Zielposition 2 zu bringen. Dabei dürfen immer nur einzelne Scheiben bewegt werden, und es darf nie eine größere auf einer kleineren Scheibe abgelegt werden. Bildlich kann man sich das also folgendermaßen vorstellen: ![]() Die Aufgabe Eure Aufgabe ist es nun, zu berechnen wieviele Züge man machen muss, um 20 Scheiben von Position 1 auf Position 2 zu bewegen. Dies ist sehr rechenaufwendig und ein 133MHz Rechner braucht dafür 6 Minuten. Lösungen könnt ihr mir per PN zukommen lassen. Ich bin mal gespannt, wer von euch zuerst auf eine Lösung kommt. (Ein kleiner Ansporn vielleicht: Dies ist eine der häufigsten Aufgaben, die man im Informatikunterricht in der Jgst. 12/13 vorgesetzt bekommt.) |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
vielleicht wäre es besser wenn du das Ergebnis schon mal hier zeigst, natürlich nur was rauskommt bei sagen wir mal bei 15 Ringen! |
||
[BB2D | BB3D | BB+]
|
konstantin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein. | ||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
darf man immer nur den obersten bewegen? so ganz verstehe ich die Aufgabe noch nicht.. | ||
konstantin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du darfst immer nur eine der obersten Scheiben bewegen und nie eine größere auf eine kleinere legen. | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beispiel :
mit 3 Scheiben Code: [AUSKLAPPEN] Start
1kg 2kg 3kg Turm1 Turm2 Turm3 Zug 1 2kg 3kg 1kg Turm1 Turm2 Turm3 Zug 2 3kg 1kg 2kg Turm1 Turm2 Turm3 Zug 3 1kg 3kg 2kg Turm1 Turm2 Turm3 Zug 4 1kg 3kg 2kg Turm1 Turm2 Turm3 Zug 5 1kg 3kg 2kg Turm1 Turm2 Turm3 Zug 6 2kg 1kg 3kg Turm1 Turm2 Turm3 Zug 7 1kg 2kg 3kg Turm1 Turm2 Turm3 |
||
[BB2D | BB3D | BB+]
|
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
achso! Danke Rallimen! Hmm... ich glaub ich werds mal versuchen ![]() |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine nach der anderen vielleicht, du ungeduldiger Jungspund ![]() https://www.blitzforum.de/viewtopic.php?t=7743 |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay, die Lösung ist fast schon banal ![]() ![]() n := Anzahl der Steine. |
||
![]() |
stfighter01 |
![]() Antworten mit Zitat ![]() |
---|---|---|
lol ich denk mal wieder zu kompliziert.
hab die folge vor mir aufgeschrieben und komm auf diese geniale 10mal so komplizierte version ![]() an= 2^0 + 2^1 + ... + 2^(n-1) haut mir mit dem hammer auf den schädel. spass beiseite: wie wärs mit einer abwandlung der übung auf ein funktionsfähiges hanoi progamm, welches grafisch schritt f. schritt die lösung anzeigt? mfg stfighter |
||
Denken hilft! |
konstantin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
es ging mir hier eigentlich nicht darum, das bei google ne formel rausgesucht wird oder das man grafische darstellungen programmiert.
es ist eine denkaufgabe, bei der man mal nachdenken sollte. |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Alu
Überheblich, gell. Soetwas muss nicht jeder bei Google suchen. Ich zumindest nicht. Und stfighter01 auch nicht, soweit ich das beurteilen kann. Mich würde hingegen mal interessieren, wieso der Rechner (s.o.) sechs Minuten mit dem Problem beschäftigt war!?! Welchen abwegigen Lösungsansatz hast du ihm denn beigepult? |
||
konstantin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn du die einzelnen Schritte simulierst, also die Scheiben nacheinander immerwieder hin und her verschiebst und nicht nur irgendeine Formel berechnest, sind es so viele Schritte, das er halt so lange braucht. Bei 100 Scheiben bräuchte ein Mensch z.B. ~2800 Jahre, um alle Schritte auszuführen. | ||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein Mensch bräuchte bei 100 Scheiben sicher mehr als 2800 Jahre!!! Nutze einfach mal die einfache Formel oben und setze die 100 ein. Selbst wenn jede Sekunde einen Scheibe gelegt werden würde, wäre das Ende der Erde lange vorm Erreichen der Lösung eingetreten. Einfach mal den Taschenrechner bemühen. | ||
konstantin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oha ![]() |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Cooleres Problem dieser Art (inkl. Lösung): http://mathworld.wolfram.com/JosephusProblem.html | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
hier meine Lösung, hab zum vergleich noch die einfache dabeiBlitzBasic: [AUSKLAPPEN] For t= 1 To 30 allerdings gehts nicht mehr richtig wenn ich moegl als integer deklariere! warum weis ich nicht! So jetzt habe ich mal eine Frage, bei 2^n -1 muß doch immer eine ungrade Zahl rauskommen, Oder? aber bei 2^25 -1 stimmt es nicht mehr |
||
[BB2D | BB3D | BB+]
|
- Zuletzt bearbeitet von Rallimen am Sa, Dez 11, 2004 10:24, insgesamt einmal bearbeitet
![]() |
stfighter01 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@rallimen
wenn du als integer deklarierst und 30 scheiben verwendest bekommst du einen integeroverflow schau mal in der hilfe unter datentypen und sieh dir den bereich von interger an. mfg stfighter |
||
Denken hilft! |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
die Wertebereiche der einzelnen VarTypen sind mir bekannt!
abgesehen davon kommt ein overflow erst bei 31 Scheiben! mit floats gehts ab 128 nicht mehr! da sollte man dann wenns genau sein soll auch eigene Routinen nehmen und BB nicht vertrauen, da bekannt ist das BB nicht sehr genau rechnen kann! an dem Beispiel kann man es sehr deutlich sehen... BlitzBasic: [AUSKLAPPEN] For t#= 0.0 To 1.0 Step 0.01 versucht das mal... |
||
[BB2D | BB3D | BB+]
|
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab jetzt mal ein proggi mit BB Plus erstellt!
genaue Anzeige, keine Beschränkung auf integer oder Floats, da eigene Routinen! ![]() ca. 300kb http://people.freenet.de/ralli...vHanoi.exe ![]() ![]() ![]() ![]() |
||
[BB2D | BB3D | BB+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group