viernes, 10 de septiembre de 2010

Torres de hanoi en python

Esta entrada es para laboratorio de lenguajes de programación, hice un script en python que utiliza la recursividad usando el tema dado en la clase.

#!/usr/bin/python

def hanoi(N, inc='1', temp='2', fin='3'):

    if N > 0: 
        hanoi(N-1, inc, fin, temp)
        print 'se mueve de torre', inc, 'a torre', fin
        hanoi(N-1, temp, inc, fin) 

discos = int(input("Ingresa el numero de discos:"))
hanoi(discos)

Recurden que para que entre al if y a la funcion hanoi se necesitan los 4 espacios, ya que es requisito en este lenguaje de programación.

¿Como funciona el programa? pueden checar las diapositivas de la entrada anterior, solamente imprime la solución de movimientos minimos.

Ejemplo.
primero asignamos los permisos para poder leer el programa con
chmod u+x otro.py
Despues ponemos en el terminal
./otro.py
Nos mostrará esto.
podemos decir que esta correcto ya que el numero de pasos minimo se calcula con esta formula.
pasos = 2^N - 1
donde N son el numero de discos
Entonces, si queremos verlo aplicado podemos ver en este gif, los movimientos.



pueden descargar el codigo aqui.

Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.

4 comentarios: