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