Escribir una función
prefijo_mayor(n,cond) donde, dado un
entero positivo distinto de cero n y una
función cond (que tiene un dígito como
parámetro y retorna un valor booleano), retorna el prefijo mayor de
n tal que todos sus
dígitos hacen que cond retorne
True.
Un prefijo de un número es cualquier secuencia de dígitos consecutivos del mismo número que empieza por el dígito de más peso (por la izquierda): los números 4, 45, 452, 4523, 45238, 452380 y 4523809 son todos prefijos del número 4523809.
Ejemplo: Supongamos que n es 824673231
y cond es
lambda d: d % 2 == 0 (retorna
True si d es
par). Entonces
prefijo_mayor(824673231,cond) debe
retornar 8246, ya que cualquier otro prefijo mayor debe
incluir el 7, que no es par y cond(7) es
False.
Ved los juegos de pruebas públicos para más ejemplos.
La función tiene un número entero positivo distinto de cero y una función (que dado un dígito devuelve un booleano) como parámetros.
Una vez definida la función, al probarla en el REPL de Python debería salir lo mismo que se puede observar más abajo.
>>> prefijo_mayor(94720, lambda d: d % 2 == 1) 9 >>> prefijo_mayor(919321, lambda d: d % 2 == 1) 9193 >>> prefijo_mayor(2025, lambda d: d % 2 == 1) 0 >>> prefijo_mayor(2025, lambda d: d < 4) 202