Basic Pascal Tutorial/Chapter 4/Solution
English · Français · Български · 中文(中国) · 日本語
4Ga - Solution to Towers of Hanoi (author: Tao Yue, state: unchanged)
(* Author: Tao Yue
Date: 13 July 2000
Description:
Solves the Towers of Hanoi
Version:
1.0 - original version
*)
program TowersofHanoi;
var
numdiscs : integer;
(********************************************************)
procedure DoTowers (NumDiscs, OrigPeg, NewPeg, TempPeg : integer);
(* Explanation of variables:
Number of discs -- 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
(* Take care of the base case -- one disc *)
if NumDiscs = 1 then
writeln (OrigPeg, ' ---> ', NewPeg)
(* Take care of all other cases *)
else
begin
(* First, move all discs except the bottom disc
to TempPeg, using NewPeg as the temporary peg
for this transfer *)
DoTowers (NumDiscs-1, OrigPeg, TempPeg, NewPeg);
(* Now, move the bottommost disc from OrigPeg
to NewPeg *)
writeln (OrigPeg, ' ---> ', NewPeg);
(* Finally, move the discs which are currently on
TempPeg to NewPeg, using OrigPeg as the temporary
peg for this transfer *)
DoTowers (NumDiscs-1, TempPeg, NewPeg, OrigPeg)
end
end;
(********************************************************)
begin (* Main *)
write ('Please enter the number of discs in the tower ===> ');
readln (numdiscs);
writeln;
DoTowers (numdiscs, 1, 3, 2)
end. (* Main *)From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 4/Solution", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
