2. La torre de Hanoi consiste en mover formas ordenas de mayor a menor de un
punto a otro teniendo un punto intermedio. Hay dos únicas reglas que son:
1. Solo se puede mover una pieza a la vez.
2. Maner el orden de la pieza mayor siempre debe estar debajo de la menor.
A mayor número de piezas, mayor los pasos para lograrlo.
3. A continuación se presenta el algoritmo hecho en Python
para resolver el problema de la torre. El algoritmo es por
una función recursiva.
def moveTower(height, fromPole, toPole, withPole):
if height >= 1:
moveTower(height-1, fromPole, withPole, toPole)
moveDisk(fromPole, toPole)
moveTower(height-1, withPole, toPole, fromPole)
def moveDisk(ft, tp):
print("Moving disk from %d to %dn" % (ft, tp))
4. La función moveTower nos pide 4 valores:
1. Número de piezas (el alto de la torre)
2. La posición inicial.
3. La posición intermedia.
4. La posición final.
moveTower(height, fromPole, toPole, withPole)
La siguiente línea nos muestra una condición que mientras
el número de piezas sea mayor o igual a 1
if height >= 1:
Llame nuevamente la función pero restándole 1 a número de piezas
e intercambiando los valores de la posición intermedia y final.
moveTower(height-1, fromPole, withPole, toPole)
5. Cuando la condición sea falsa, osea el número de piezas menor a 1,
llamará a la función moveDisk pasándole los valores de posición inicial
y posición intermedia.
moveDisk(fromPole, toPole)
Esta función mostrará en pantalla la posición a la que la pieza debe ser
movida.
def moveDisk(ft, tp):
print("Moving disk from %d to %dn" % (ft, tp)
6. Después de mostrar la posición de la pieza regresa a llamar nuevamente a la
función moveTower pero las posición inicial ahora es la final, la final es la inicial y
la intermedia no sufre cambios.
moveTower(height-1, withPole, toPole, fromPole)
Se vuelve a ejecutar la línea de la condición if height >= 1: y mientras no sea menor
de uno se repetirá nuevamente el proceso.