Vamos a programar #90 - La sucesión de Fibonacci y la función de Ackerman (ver. Python)

 Hola de nuevo a toos, el dia de hoy vamos a ver un poco de Python. En días anteriores, mientras revisaba algunos comentarios en twitter, aalgunas personas me preguntaron sobre el estado del blog, pese al que el estado actual ha empeorado un poco debido a cierto bicho, el hecho fue que un par de "accidentes" me impidieron crear nuevos post. Pero dejando eso de lado, mucha gente pidio que si les podia ayudar con python (si hacemos memoria, casi no hay programas hechos en éste lenguaje), y la razon principal es debido a que simplemente lo olvide (conste que ya lo habia mencionado en algun post). Para probar que aun estoy al pendiente, decidi hacer un par de programas con (segun google) las busquedas mas gfrecuentes relacionadas a python que conducian a mi blog.



Los números de Fibonacci.

La version en C del los número de fibonacci la puedes encontrar en el siguiente post. Además incluye una pequeña anotación sobre que es. Ambas versiones son similares y sirven para hacer énfasis en cómo es posivble traducir de un lenguaje a otro cuando se trata de programas simples.
El programa en pyton que calcula la sucesión de Fibonacci es el siguiente.

def CalcFibonacci(Number):
    v1 = 0
    v2 = 1
    v3 = 0
    
    while v1 < Number:
        print(v1)
        v3 = v1 + v2
        v1 = v2
        v2 = v3


if __name__ == "__main__":
    import sys
    CalcFibonacci(int(sys.argv[1]))

Cómo podrás observar, el código es realmente sencillo y mucho mas practico que la versión que C ya que no hay que compilarlo cada vez. Para ejecutarlo, solamente deberás de ejecutarlo desde una consola escribiendo el nombre del script seguido del parámetro (que será el número hasta donde queremos llegar)

Fibonacci.py 200

La funcion de Ackerman.

La versión en C de la función de Ackerman la podemos encontrar en el siguiente post. Al igual que la sucesión, incluye una pequeña descripción. El programa en pyton que calcula la función de Ackerman es el siguiente
def AckermanFunction(Number1, Number2):
    if Number1 == 0:
        return Number2 + 1
    else:
        if Number2 == 0:
            return (AckermanFunction(Number1 - 1, 1))
        return (AckermanFunction(Number1 - 1, AckermanFunction(Number1, Number2 - 1)))

if __name__ == "__main__":
    import sys
    try:
        for i in range(4):
            for j in range(5):
                print(AckermanFunction(i, j),end='  ')
            print()
    except RecursionError:
        print("Error: Se alcanzo el maximo de recursion permitido")
Para la implementación en Python use de forma recursiva la función "AckermanFunction"  para demostrar que algunas veces es mas conveniente usar o no otro lenguaje, en este caso python ofrece protección para las llamadas recursivas, si por ejemplo en los ciclos "for" en cada rango usamos 10 y 5 por ejemplo, el programa nos dirá que se alcanzo el máximo de recursión permitida (cosa que en c no ocurre).

Y bien, por ahora es todo, en post siguientes continuaremos con mas de Python, pero al igual que todos los programas aquí hechos, no son con la intención de que la gente que sepa programar aprenda (excepto Pascal). El código fuente para la sucesión de fibonacci la puedes descargar de aqui y el código fuente de la funcion de Ackerman la puedes descargar de acá.

Los leo luego.

No hay comentarios.