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