program tours_de_hanoi;

{
  Procedure recursive qui effectue le deplacement d'un
  certain nombre de plateaux depuis un piquet de depart
  vers un piquet d'arrivee, en utilisant le 3eme piquet
  comme intermediaire.
}
procedure DeplacePlateaux (nbre,depart,arrivee,autre : integer );

begin

  if (nbre <> 0) then begin

     DeplacePlateaux(nbre-1,depart,autre,arrivee);
     writeln('deplacement de ',depart,' vers ',arrivee);
     DeplacePlateaux(nbre-1,autre,arrivee,depart);

  end;

end;

{ Nombre de plateaux a deplacer }
{
Constat en decembre 2007 : un quart d'heure pour 25 plateaux.
On en deduit : un millier d'annees pour 50.
}
const nb_plateaux = 5;


{ Programme principal }

begin

   writeln;
   DeplacePlateaux(nb_plateaux,1,3,2);
   writeln;

end.



