Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 4/Solution/ja: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Basic Pascal Tutorial/Chapter 4/Solution/ja

OldNewLine
1+4Ga - ハノイの塔の解答例 (著者: Tao Yue, 状態: 原文のまま変更なし)
2+
3+``` pascal
4+(* 著者: Tao Yue
5+ 日付: 13 July 2000
6+ 記述:
7+ ハノイの塔の解答
8+ Version:
9+ 1.0 - original version
10+*)
11+
12+program TowersofHanoi;
13+
14+var
15+ numdiscs : integer;
16+
17+(********************************************************)
18+
19+procedure DoTowers (NumDiscs, OrigPeg, NewPeg, TempPeg : integer);
20+(* 変数の説明:
21+ Number of discs -- OrigPegに載っている円盤の数
22+ OrigPeg -- 塔の棒の数
23+ NewPeg -- 塔から移動させる棒のナンバー
24+ TempPeg -- 一時的に置いておくために使う棒のナンバー
25+*)
26+
27+begin
28+ (* 最初のベースの場合を処理する -- 1つの円盤 *)
29+ if NumDiscs = 1 then
30+ writeln (OrigPeg, ' ---> ', NewPeg)
31+ (* 他のすべての場合を処理する *)
32+ else
33+ begin
34+ (* 最初に一番下の円盤以外の全てを TempPeg に移動させる。その際には NewPeg を一時保存の棒として使う *)
35+ DoTowers (NumDiscs-1, OrigPeg, TempPeg, NewPeg);
36+ (* 次に一番下の円盤を OrigPeg から NewPeg に動かす*)
37+ writeln (OrigPeg, ' ---> ', NewPeg);
38+ (* 最後に一時的に TempPeg にある円盤を NewPeg に動かす。その移動の際、OrigPeg を一時的な棒として使う *)
39+ DoTowers (NumDiscs-1, TempPeg, NewPeg, OrigPeg)
40+ end
41+end;
42+
43+(********************************************************)
44+
45+begin (* Main *)
46+ write ('Please enter the number of discs in the tower ===> ');
47+ readln (numdiscs);
48+ writeln;
49+ DoTowers (numdiscs, 1, 3, 2)
50+end. (* Main *)
51+```
52+
53+| | | |
54+|----|----|----|
55+| [[Basic Pascal Tutorial/Chapter 4/Programming Assignment/ja|previous]] | [[Basic Pascal Tutorial/Contents/ja|contents]] | [[Basic Pascal Tutorial/Chapter 5/Enumerated types/ja|next]] |
56+
57+---
58+*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](/wiki-contact).*

Back to history