BSD 3 development
[unix-history] / usr / src / cmd / px / hanoi.p
CommitLineData
8723d6a9
CH
1program hanoi(input,output);
2const print = 0;
3 DISK = 14;
4var num: array[1..3] of integer;
5 ow: integer;
6 cnt: integer;
7 disk: integer;
8procedure mov(n,f,t : integer);
9var o: integer;
10begin
11 if n = 1 then begin
12 num[f] := num[f] - 1;
13 num[t] := num[t] - 1;
14 if print = 1 then writeln('Move ',f, ' to ', t);
15 cnt := cnt + 1;
16 end
17 else begin
18 o := 6 - (f+t);
19 mov(n-1,f,o);
20 mov(1,f,t);
21 mov(n-1,o,t);
22 end
23end;
24
25begin
26 disk := DISK;
27 writeln('Number: ');
28 read(disk);
29 num[1] := disk;
30 cnt := 0;
31 if print = 1 then writeln('start ',disk);
32 ow := wallclock;
33 mov(disk,1,3);
34 writeln('For ',disk:3,' ',cnt:10,' steps, time',wallclock-ow);
35end.