program TowersofHanoi;
var
numdiscs : integer;
procedure DoTowers (NumDiscs, OrigPeg, NewPeg, TempPeg : integer);
(* Numdiscs -- number of discs on OrigPeg
OrigPeg -- peg number of the tower
NewPeg -- peg number to move the tower to
TempPeg -- peg to use for temporary storage
*)
begin
if NumDiscs < 2 then
writeln (OrigPeg, ' ---> ', NewPeg)
else
begin
DoTowers (NumDiscs-1, OrigPeg, TempPeg, NewPeg);
writeln (OrigPeg, ' ---> ', NewPeg);
DoTowers (NumDiscs-1, TempPeg, NewPeg, OrigPeg)
end
end;
begin
numdiscs := 5;
writeln ('Number of disks: ', numdiscs);
DoTowers (numdiscs, 1, 3, 2);
end.