begin
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;
|
|
|