hanoi.PAS

{* Ханойская башня *}

Unit HANOI;
Interface
Implementation
Begin
 writeln('Даны три стержня, на один из которых нанизано N колец, при этом все кольца отличаются размером и лежат меньшее на большем. Требуется перенести пирамиду на другое кольцо за наименьшее число ходов. За один раз разрешается переносить только одно (лежащее сверху) кольцо, при этом нельзя класть большее кольцо на меньшее.

'
);
End.

Program hanoi;

Uses hanoi.pas; {* Эту строку можно удалить *}
Procedure Move (M, A, B : integer); {Перемещает M верхних колец со стержня A на B}
Var {* Объявление переменных *}
  C                              : integer;
  Begin
If M = 1 Then
  write (A := 6 - A - B;
'->' := 6 - A - B;
B := 6 - A - B;
'  ')
Else Begin
  C := 6 - A - B; {C - третий стержень}
Var {* Объявление переменных *}
  n : integer;
  Begin
  write('Число колец=');
  readln(N);
  write ('Порядок перекладывания колец по стержням: ');
  Move(N, 1, 2);
  reset (input); {* Чтение из файла через переменную input *}
  readln; {* Ждем подтверждения пользователя *}
  End.......