Basic Pascal Tutorial/Chapter 4/Solution/ja
English · Français · Български · 中文(中国) · 日本語
4Ga - ハノイの塔の解答例 (著者: Tao Yue, 状態: 原文のまま変更なし)
(* 著者: Tao Yue
日付: 13 July 2000
記述:
ハノイの塔の解答
Version:
1.0 - original version
*)
program TowersofHanoi;
var
numdiscs : integer;
(********************************************************)
procedure DoTowers (NumDiscs, OrigPeg, NewPeg, TempPeg : integer);
(* 変数の説明:
Number of discs -- OrigPegに載っている円盤の数
OrigPeg -- 塔の棒の数
NewPeg -- 塔から移動させる棒のナンバー
TempPeg -- 一時的に置いておくために使う棒のナンバー
*)
begin
(* 最初のベースの場合を処理する -- 1つの円盤 *)
if NumDiscs = 1 then
writeln (OrigPeg, ' ---> ', NewPeg)
(* 他のすべての場合を処理する *)
else
begin
(* 最初に一番下の円盤以外の全てを TempPeg に移動させる。その際には NewPeg を一時保存の棒として使う *)
DoTowers (NumDiscs-1, OrigPeg, TempPeg, NewPeg);
(* 次に一番下の円盤を OrigPeg から NewPeg に動かす*)
writeln (OrigPeg, ' ---> ', NewPeg);
(* 最後に一時的に TempPeg にある円盤を NewPeg に動かす。その移動の際、OrigPeg を一時的な棒として使う *)
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 *)| previous | contents | next |
From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 4/Solution/ja", 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.
