(*Задача: На поле имеется три стержня. на одном из них располагается несколько
  колец в порядке невозрастания диаметра. Требуется перенести их на другой
  стержень, пользуясь дополнительным стержнем. Запрещается класть меньшее
  кольцо на большее. Программа запрашивает номер стержня, на котором кольца
  располагаются сначала, и номер стержня, на который надо перенести кольца.
  Стержни занумерованы числами 1, 2 и 3 по порядку слева направо. *) 

(* Примечание: до начала работы загрузить поле из файла Ханой.prk. На одном
 из стержней - любом - создать конфигурацию колец. Нижнее кольцо имеет радиус
 не более 5 клеток *)

Подпрограмма Перенос (короб:k,l,u)
цел r, t, s, nk, nl, nr, v;
  {
     r:=6-(k+l);
     nk:=0;
     Перейти на( 6+(k-1)*12, 1);
     Делать пока ( красная ) {
       nk:=nk+1;
       Шаг вверх; 
     }
     nl:=0;
     Перейти на( 6+(l-1)*12, 1);
     Делать пока ( красная ) {
       nl:=nl+1;
       Шаг вверх; 
     }
     nr:=0;
     Перейти на( 6+(r-1)*12, 1);
     Делать пока ( красная ) {
       nr:=nr+1;
       Шаг вверх; 
     }
     v:=u;
     Если ( v>1 ) то {
       Вызвать Перенос (k,r,v-1);
       v:=v-1;
     }
     Перейти на (6+(k-1)*12,1+nk-u);
     s:=0;
     Делать пока ( красная ) {
       Снять плитку;
       s:=s+1;
       Шаг влево;
     }
     Перейти на (8+(k-1)*12,1+nk-u);
     Делать от t:=1 до s { 
        Снять плитку;
        Шаг вправо;
     }
     Перейти на (6+(l-1)*12,nl+1);
     Делать от t:=1 до s { 
        Положить( красная );
        Шаг влево;
     }
     Перейти на (8+(l-1)*12,nl+1);
     Делать от t:=1 до s { 
        Положить( красная );
        Шаг вправо;
     }
     v:=u;
     Если ( v>1 ) то {
       Вызвать Перенос (r,l,v-1);
       v:=v-1;
     }
    }

Программа
цел n, k, l, m, g;
 {Запросить k; (*номер стержня, с которого переносятся диски*)
  Запросить l; (*номер стержня, на который переносятся диски*)
  n:=0;
  Перейти на (6+(k-1)*12,1);
  Делать пока ( красная ) { 
    n:=n+1;
    Шаг вверх;
  }
  Вызвать Перенос(k,l,n)
 }
