Einzelnen Beitrag anzeigen

Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#1

Türme von Hanoi (rekursiv)

  Alt 15. Jun 2007, 18:00
Hey!

Gab es bestimmt schon tausende Male hier im Forum, jedoch hab ich es in der Codelibrary nicht gefunden, ich denke, es fehlt dort.

//Edit: Dies ist die rekursive Variante

Delphi-Quellcode:
program tower_of_hanoi;

{$apptype console}

uses
  sysutils,
  classes,
  windows;

const
  sep='----------';

var
  n:integer;
  s:string;
  sl:tstringlist;
  time:integer;

procedure bewege(n,movefrom,moveto,using:integer);
begin
  if n>0 then
    begin
      bewege(N-1,movefrom,using,moveto);
      sl.Add('bewege '+inttostr(movefrom)+' --> '+inttostr(moveto));
      bewege(N-1,using,moveto,movefrom);
    end
end;

procedure askhanoi;
begin
  writeln('anzahl der scheiben = ?');
  readln(n);
  writeln('berechne...');
  time:=gettickcount;
  bewege(n,1,3,2);
  time:=gettickcount-time;
  writeln('zeit: '+floattostr(time/1000)+' s');
  writeln('speichern? (y/n)');
  readln(s);
  if s='ythen sl.savetofile('hanoi.txt');
  sl.clear;
  writeln;
  writeln(sep);
  writeln;
  askhanoi;
end;

begin
  writeln('turm von bewege');
  writeln(sep);
  writeln('by raw');
  writeln('mail: [email]rawsoulstar@gmail.com[/email]');
  writeln(sep);
  writeln;
  sl:=tstringlist.create;
  askhanoi;
  sl.free;
end.
Das ganze ist geschrieben nach dem Pseudocode von wiki

Bin natürlich für jeden Tipp dankbar - vor allem bezüglich der Geschwindigkeit

LG,
Frank.
Frank Dumont
  Mit Zitat antworten Zitat