Múltiplos palíndromos
Los números 545, 5995 y 15151 son los tres menores palíndromos (capicúas) que son divisibles por 109.
Definir las funciones
1 2 |
multiplosPalindromos :: Integer -> [Integer] multiplosPalindromosMenores :: Integer -> Integer -> [Integer] |
tales que
- (multiplosPalindromos n) es la lista de los palíndromos divisibles por n. Por ejemplo,
1 |
take 5 (multiplosPalindromos 109) == [545,5995,15151,64746,74447] |
- (multiplosPalindromosMenores x n) es la lista de los palíndromos divisibles por n, menores que x. Por ejemplo,
1 2 |
λ> multiplosPalindromosMenores (10^5) 109 [545,5995,15151,64746,74447,79897,84148,89598,99299] |
Nota: Este ejercicio está basado en el problema 655 del Proyecto Euler.
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
-- 1ª definición de multiplosPalindromos -- ===================================== multiplosPalindromos :: Integer -> [Integer] multiplosPalindromos n = [x | x <- multiplos n , esPalindromo x] -- (esPalindromo n) se verifica si n es palíndromo. Por ejemplo, -- esPalindromo 32523 == True -- esPalindromo 32533 == False esPalindromo :: Integer -> Bool esPalindromo n = reverse xs == xs where xs = show n -- (multiplos n) es la lista de los múltiplos de n. Por ejemplo, -- take 12 (multiplos 5) == [5,10,15,20,25,30,35,40,45,50,55,60] multiplos :: Integer -> [Integer] multiplos n = [n,2*n..] -- 2ª definición de multiplosPalindromos -- ===================================== multiplosPalindromos2 :: Integer -> [Integer] multiplosPalindromos2 = filter esPalindromo . multiplos -- 1ª definición de multiplosPalindromosMenores -- ============================================ multiplosPalindromosMenores :: Integer -> Integer -> [Integer] multiplosPalindromosMenores x n = takeWhile (<x) (multiplosPalindromos n) -- 2ª definición de multiplosPalindromosMenores -- ============================================ multiplosPalindromosMenores2 :: Integer -> Integer -> [Integer] multiplosPalindromosMenores2 x = takeWhile (<x) . multiplosPalindromos |
Pensamiento
Esta luz de Sevilla… Es el palacio
donde nací, con su rumor de fuente.Antonio Machado
Función «multiplosPalindromosMenores» corregida
En Python