Guten Tag!
Meine Aufgabe ist es das Spiel: Türme von Hanoi zu simulieren.
Bei dem Spiel gibt es 3 Stäbe (A, B und C) und "n" Scheiben.
Das Ziel ist es alle Scheiben die am Anfang auf Stab A gestapelt sind auf Stapel C zu bekommen.
Dabei ist zu beachten, dass immer nur eine Scheibe bewegt werden darf und nie eine Scheibe auf einer anderen Scheibe liegen darf, wenn die oben liegende Scheibe größer ist. (Also nur kleine Scheiben auf größere)
Ich habe folgendes Codebeispiel gefunden:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use strict;
use warnings;
print("Wie viele Scheiben sollen bei dem Spiel: Türme von Hanoi verwendet werden?\n");
my $Scheibenanzahl = <STDIN>;
chomp $Scheibenanzahl;
if (!($Scheibenanzahl =~ /^[0-9]+$/))
{
print "Das war keine Zahl\n";
}
sub move {
my $anzahl = shift;
my $stab_a = shift;
my $stab_b = shift;
my $stab_c = shift;
if ($anzahl > 0) {
move($anzahl - 1, $stab_a, $stab_c, $stab_b);
move($anzahl - 1, $stab_b, $stab_a, $stab_c);
}
}
move($Scheibenanzahl, 'Turm A', 'Turm B', 'Turm C');
Dieses gibt die erledigten Schritte direkt aus.
Mein Ziel ist es diese Schritte grafisch darzustellen...
Etwa so:
|||
|||||
||||||| | ||
--------- --------- ----------
Habt ihr einen Lösungsvorschlag oder ein Konzept was mich schnell zum gewünschten Ergebnis bringt? Ich komme nicht weiter.
Vielen Dank schonmal im Vorraus!
MFG DAN
Last edited: 2016-10-17 10:56:02 +0200 (CEST)