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