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:
hanoi(0,_,_,_). hanoi(N,Origen,Auxiliar,Destino):- N1 is N-1, hanoi(N1,Origen,Destino,Auxiliar), def_pasos(Origen,Destino), hanoi(N1,Auxiliar,Origen,Destino). def_pasos(Origen,Destino):- write(' desde '), write(Origen), write(' hasta '), write(Destino), 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:
Publicar un comentario