Múltiplos sin ceros
El enunciado de un problema para la IMO (Olimpiada Internacional de Matemáticas) de 1972 es
Demostrar que cada n ≢ 0 (mod 10) posee algún múltiplo sin el dígito 0.
Definir la función
1 |
multiplosSinCeros :: Integer -> [Integer] |
tal que (multiplosSinCeros n) es la lista de los múltiplos de n sin el dígito 0. Por ejemplo,
1 2 |
λ> take 10 (multiplosSinCeros 101) [1111,1212,1313,1414,1515,1616,1717,1818,1919,2121] |
Comprobar con QuickCheck que si n es un número entero positivo no divisible por 10, entonces n posee algún múltiplo sin el dígito 0.
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import Test.QuickCheck (Property(..), (==>), quickCheck) multiplosSinCeros :: Integer -> [Integer] multiplosSinCeros n = filter sinCeros [n,2*n..] sinCeros :: Integer -> Bool sinCeros n = '0' `notElem` show n -- La propiedad es prop_multiplosSinCeros :: Integer -> Property prop_multiplosSinCeros n = n > 0 && n `mod` 10 /= 0 ==> not (null (multiplosSinCeros n)) -- La comprobación es -- λ> quickCheck prop_multiplosSinCeros -- +++ OK, passed 100 tests. |
Nuevas soluciones
- En los comentarios se pueden escribir nuevas soluciones.
- El código se debe escribir entre una línea con <pre lang="haskell"> y otra con </pre>
Un comentario