0votos

Simplicidad y eficiencia en Python

por josejuan hace 6 años

Margaruga ha posteado una solución Python de la que se queja es lenta. Únicamente es por no añadir evaluación perezosa. A su solución, únicamente hay que añadir la palabra "delay" y una coma a cada argumento "perezoso".

Definir simple y eficientemente la función f tal que f(x,y,z) = y, si x <= y; f(x,y,z) = f(f(x-1,y,z),f(y-1,z,x),f(z-1,x,y)), en caso contrario.

1
2
3
4
5
6
7
8
9
10
11
from LazyEvaluation import delay 
# http://pypi.python.org/pypi/lazypy/0.5 
 
import sys 
sys.setrecursionlimit(20000) 
 
funcion=lambda x, y, z: y if x <= y else funcion(delay(funcion,(x-1, y, z)), delay(funcion,(y - 1, z, x)), delay(funcion,(z - 1, x, y))) 
 
n=1999 
 
print funcion(n, 0, n+1) 
1 comentario
0votos

Escrito por Marcos Diaz hace 6 años

Gracias por el apunte, no conocía este recurso (todavía estoy muuuy verde).

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.