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