Hoy durante la tarde, a fin de matar el aburrimiento, se me ocurrió
intentar un cálculo lambda con cierto grado de complejidad, pero que
permanezca elegante a la vez.

La propuesta fue hallar el subconjunto de números primos dentro del
conjunto definido por los n-ésimos primeros números de la secuencia
Fibonacci.

Todo un testamento del poder de Python:

prime_fibonacci = \
    lambda size, a=0, b=1, result_set=[0]: \
        (size <= 1 and result_set) \
        or prime_fibonacci(
            size - 1, b, a + b, 
            result_set + (
                (
                    (
                        lambda n: \
                            not any(filter(
                                lambda x: n % x == 0, 
                                range(2, int(n ** 0.5) + 1)))
                    )(b) and [b]
                ) or []
            )
        )

Para usar la función solo deben pasarle el parámetro del tamaño:

>>> prime_fibonacci(46)
[0, 1, 1, 2, 3, 5, 13, 89, 233, 1597, 28657, 514229, 433494437]

Saludos,

Jean-Pierre

_______________________________________________
Lista de correo Linux-plug
Temática: Discusión general sobre Linux
Peruvian Linux User Group (http://www.linux.org.pe)

Participa suscribiéndote y escribiendo a:  [email protected]
Para darte de alta, de baja  o hacer ajustes a tu suscripción visita:
http://listas.linux.org.pe/mailman/listinfo/linux-plug

IMPORTANTE: Reglas y recomendaciones
http://www.linux.org.pe/listas/reglas.php
http://www.linux.org.pe/listas/comportamiento.php
http://www.linux.org.pe/listas/recomendaciones.php

Responder a