program Hanoi;
const
MaxDischi = 10;
type
TipoDischi = 1..MaxDischi;
TipoPalo = 1..3;
var
s, d, a : TipoPalo;
dischi : TipoDischi;
procedure Muovi (n : TipoDischi;
sorgente, destinazione, ausiliario : TipoPalo);
procedure MuoviUnDisco;
begin
writeln(' muovi un disco da ', sorgente:2, ' a ', destinazione:2)
end;
begin
if n = 1 then
MuoviUnDisco
else
begin
Muovi(n - 1, sorgente, ausiliario, destinazione);
MuoviunDisco;
Muovi(n - 1, ausiliario, destinazione, sorgente);
end
end;
begin
write('Numero di dischi? ');
readln(dischi);
write('Palo sorgente? [1, 2 o 3] ');
readln(s);
write('Palo destinazione? [1, 2 o 3] ');
readln(d);
writeln;
writeln('Il palo ausiliario e'' ', 6-s-d);
writeln('Per ', dischi:2, ' dischi le mosse richieste sono:');
Muovi(dischi, s, 6-s-d, d);
writeln;
end.