Escribir una función maximizador(f)
que, dada una función como parámetro (llamémosla
;
supondremos que esta función
recibe un número y retorna un número), retorne otra
función.
Esta función retornada debe ser una función tal que, después de
invocaciones con parámetros
,
al invocarla con parámetro
escriba en el stdout el máximo de los
encontrados hasta ese momento (es decir, el máximo de
para todos los
con los que esta función, retornada por
maximizador(f), ha sido invocada).
La función maximizador(f) tiene un
parámetro: Una función que, dado un número, retorna un número.
La función maximizador(f) retorna una
función com la descrita en el enunciado.
La funció retornada por maximizador(f)
tiene que escribir el máximo de
para todos los
con los que esta función, retornada per
maximizador(f), ha sido invocada, y debe
retornar una funció que continue haciendo lo requerido por el
enunciado. Esta función retornada por
maximizador(f) tiene que hacer dos cosas:
escribir en el stdout y retornar una
función..
No puede utilitzarse ninguna lista, diccionario, conjunto o ninguna otra estructura de datos. Tan solo números y funciones.
En este problema solo hay que enviar un fichero con la función requerida, sin más código adicional.
Una vez definida la función requerida, al ejecutarla en el REPL de Python debería observarse lo mismo que puede observarse aquí abajo.
>>> import math >>> cuadrado = lambda x: x*x >>> coseno = math.cos >>> >>> h = maximizador(cuadrado) >>> h = h(2) 4 >>> h = h(3) 9 >>> h = h(2) 9 >>> h = h(1) 9 >>> h = h(5) 25 >>> h = h(3) 25 >>> >>> # También podemos hacerlo así, más compacto: >>> h = maximizador(cuadrado) >>> h = h(2)(3)(2)(1)(5)(3) 4 9 9 9 25 25 >>> # o, directamente (ahora con la función abs): >>> h = maximizador(abs)(2)(1)(3)(2)(-4) 2 2 3 3 4 >>> # finalmente, usemos el coseno: >>> h = maximizador(coseno)(math.pi)(math.pi/2)(4.2)(0.1)(math.pi/3)(math.pi/4) -1.0 6.123233995736766e-17 6.123233995736766e-17 0.9950041652780258 0.9950041652780258 0.9950041652780258 >>>