Registriert seit: 24. Okt 2006
27 Beiträge
|
Türme von Hanoi, richtiger Algorythmus?
18. Dez 2006, 20:22
Hi, ich habe die Türme von Hanoi schon fast fertig. Die Bewegung an sich dürfte auch nicht schwer fallen, aber ich hätte da eine Frahe zum Algorythmus:
Was ist an dem falsch? Wenn ich ihn ausführe, dann wird jedes Mal die oberste Scheibe bewegt und mehr nicht.
Delphi-Quellcode:
procedure TForm1.umsetzen(anzahl, von, nach, hilf : integer);
var lauf: integer;
s: string;
begin
Application.ProcessMessages;
if aborted=1 then exit;
s:='';
for lauf:=0 to 0+anzahl do s:=s+' ';
memo1.Lines.add(s+'umsetzen('+inttostr(anzahl)+','+
inttostr(von)+','+inttostr(nach)+','+
inttostr(hilf)+')');
if anzahl=1 then setze_eine(von,nach)
else begin
umsetzen(anzahl-1,von,hilf,nach);
umsetzen(1,von,nach,hilf);
umsetzen(anzahl-1,hilf,nach,von);
end;
end;
procedure TForm1.setze_eine(von,nach : integer);
var jetzt:integer;
begin
inc(versuch);
progressbar1.position:=versuch+1;
tturmx[nach].steine[spinedit1.Value-1]:=tturmx[von].steine[spinedit1.Value-1];
tturmx[nach].steine[spinedit1.Value-1].Parent:=tturmx[nach];
memo2.Lines.add(inttostr(versuch)+ ': '+inttostr(von)+' -> '+inttostr(nach));
Jetzt := GetTickCount + SpinEdit2.value;
REPEAT
Application.ProcessMessages;
UNTIL GetTickCount > Jetzt;
end;
|
|
Zitat
|