HANOI|
begin
comment library A1, A4, A5, A15;
procedure disc (d);
value d; integer d;
begin
if d = 1 then writetext(30, [A_]) else
if d = 2 then writetext(30, [B_]) else
if d = 3 then writetext(30, [C_]) else
writetext(30, [ERROR_])
end disc;
procedure print move (from, to);
integer from, to;
begin
writetext(30, [Move*a*disc*from*]);
disc(from);
writetext(30, [*to*]);
disc(to);
writetext(30, [[c_]]);
end print move;
procedure solve (number, source, target, spare);
value number, source, target, spare;
integer number, source, target, spare;
begin
if number > 1 then
begin
solve(number-1, source, spare, target);
print move (source, target);
solve(number-1, spare, target, source);
end
else
print move (source, target);
end solve;
integer disc count;
open(30);
open(20);
disc count := 1;
disc count := read(20);
writetext(30, [The*Towers*of*Hanoi.[c_]Move_]);
write(30, format([ndd_]), disc count);
writetext(30, [*discs*from*tower*A*to*tower*C*via*tower*B_[c_]]);
solve(disc count, 1, 3, 2);
close(20);
close(30)
end
|
3;
|
|
|