21 de enero de 2009

El problema de las torres de hanoi es juego matemático inventado en 1883 por el matemático francés Éduard Lucas. En esta entrada comparto el código recursivo escrito en Prolog para resolver el problema de las torres de hanoi para N discos.


Este problema consiste en 3 varillas verticales y n discos que determinarán la complejidad de la solución. No hay dos discos iguales, están colocados de mayor a menor en la primera varilla ascendentemente, y no se puede colocar ningún disco mayor sobre uno menor a él en ningún momento. El problema consiste en pasar todos los discos a la última varilla colocados de mayor a menor ascendentemente.

El código en prolog que soluciona recursivamente el problema de las torres de hanoi es el siguiente:

  1. hanoi(0,_,_,_).
  2. hanoi(N,Origen,Auxiliar,Destino):- N1 is N-1,
  3. hanoi(N1,Origen,Destino,Auxiliar),
  4. def_pasos(Origen,Destino),
  5. hanoi(N1,Auxiliar,Origen,Destino).
  6. def_pasos(Origen,Destino):-
  7. write(' desde '),
  8. write(Origen),
  9. write(' hasta '),
  10. write(Destino),
  11. write('\n').

Donde N es el número de discos (mayor o igual que 3), Origen indica el nombre de la varilla inicial (por ejemplo var1), Auxiliar es el nombre de la varilla intermedia (por ejemplo var2) y Destino es el nombre de la 3º varilla (por ejemplo var3). Se debe crear un procedimiento principal que haga el llamado respectivo a la funcion hanoi().


Espero les sea de utilidad, saludos.

Fuente: Jorge Valverde Rebaza


Deja tu Comentario



Quieres leer más post como éste???...suscribete aquí!!!

0 comentarios: