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.
Entrada
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.
Observaciones
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