Você está na página 1de 4

CARRERA:

 INGENIERIA DE SISTEMAS Y TELEMATICA.

CURSO

 SISTEMAS EXPERTOS

PROFESOR:

 GREGORIO BAUTISTA OBLITAS

ESTUDIANTE:

 DARWIN RODOLFO DÁVILA FERNÁNDEZ.

CICLO:

 IX.

AÑO:

 2017.
TORRE DE HANOI

hanoi(1,Origen,_,Destino) :-

write('Mover desde arriba '),

write(Origen),

write(' hacia '),

write(Destino),

nl.

hanoi(N,Origen,Auxiliar,Destino) :-

N>1,

M is N-1,

hanoi(M,Origen,Destino,Auxiliar),

hanoi(1,Origen,_,Destino),

hanoi(M,Auxiliar,Origen,Destino).
EXPLICACION

hanoi(1,Origen,_,Destino) :-

write('Mover desde arriba '),

write(Origen), % imprime en donde está el disco a mover.

write(' hacia '),

write(Destino), % imprime hacia donde se moverá el disco.

nl.

hanoi(N,Origen,Auxiliar,Destino) :- % manda llamar el método.

N>1, % pregunta si N > 1, n es el número de discos en el poste.

M is N-1, % almacena N-1 en M.

hanoi(M,Origen,Destino,Auxiliar), % manda llamar el método con el


nuevo contador como parámetro.

hanoi(1,Origen,_,Destino), % manda llamar al método que imprime los


pasos a seguir.

hanoi(M,Auxiliar,Origen,Destino). % manda llamar al método con los


parámetros cambiados

Solución recursiva a las Torres de Hanoi

Hanoi(3,”A”,”B”,”C”).

 Si n=1 mueva el disco de A a C y finaliza.


 Si n > 1.
 Mueva los n-1 discos superiores de A a B, con C como auxiliar.
 Mueva los discos restantes de A a C.
 Mueva los n-1 discos de B a C, usando A como auxiliar.
EJEMPLO

hanoi(3,"A","B","C").

Mover desde arriba A hacia C

Mover desde arriba A hacia B

Mover desde arriba C hacia B

Mover desde arriba A hacia C

Mover desde arriba B hacia A

Mover desde arriba B hacia C

Mover desde arriba A hacia C

Você também pode gostar