Resuelve Tower of Hanoi Probelem en Python

Manav Narula 10 octubre 2023
Resuelve Tower of Hanoi Probelem en Python

El problema de la Torre de Hanoi es un acertijo matemático fundamental que se presenta a los nuevos programadores al principio para que amplifiquen su prueba de resolución de problemas.

El problema es simple, involucra tres varillas. Una varilla contiene varios discos en orden decreciente, con el disco más grande en la parte inferior y el más pequeño en la parte superior. Tenemos que transferir esto de la barra uno a la barra tres usando la segunda barra.

Tenemos que tener en cuenta ciertas reglas. Podemos mover solo un disco simultáneamente y tenemos que tomar el disco en la parte superior de la varilla. Además, no podemos colocar un disco más grande encima de un disco más pequeño.
Teniendo todo esto en cuenta, tenemos que resolver este problema y calcular el número total de movimientos realizados para resolverlo.

En este tutorial, presentaremos cómo resolver este problema. Usaremos un método recursivo para resolver el problema de la Torre de Hanoi en Python.

Este método creará una función que se llamará a sí misma de forma recursiva en función de algunas condiciones para resolver el problema de la Torre de Hanoi.
Implementamos la lógica para esto en el siguiente código.

def ToH(n, A, B, C):
    if n == 1:
        print("Disk 1 from", A, "to", B)
        return
    ToH(n - 1, A, C, B)
    print("Disk", n, "from", A, "to", B)
    ToH(n - 1, C, B, A)


ToH(3, "A", "B", "C")

Producción :

Disk 1 from A to B
Disk 2 from A to C
Disk 1 from B to C
Disk 3 from A to B
Disk 1 from C to A
Disk 2 from C to B
Disk 1 from A to B

En el ejemplo anterior, movemos tres discos de la barra A a la barra B usando la barra C.

Como puede ver, el número total de movimientos realizados en el ejemplo anterior es 7. Para n número de discos, el total de movimientos realizados con este método es siempre igual a 2 ^ n -1.

Con el tiempo, han surgido algunas otras soluciones para resolver el problema de la Torre de Hanoi utilizando pilas. Aún así, no se recomienda usarlos porque tales métodos son muy ineficientes en cuanto a tiempo y velocidad.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn