Listas equidigitales
Enunciado
1 2 3 4 5 6 7 8 9 |
-- Una lista de números naturales es equidigital si todos sus elementos -- tienen el mismo número de dígitos. -- -- Definir la función -- equidigital :: [Int] -> Bool -- tal que (equidigital xs) se verifica si xs es una lista equidigital. -- Por ejemplo, -- equidigital [343,225,777,943] == True -- equidigital [343,225,777,94,3] == False |
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-- 1ª definición (por comprensión) equidigital :: [Int] -> Bool equidigital [] = True equidigital (x:xs) = and [nCifras y == n | y <- xs] where n = nCifras x -- (nCifras x) es el número de cifras de x. Por ejemplo, -- nCifras 475 == 3 nCifras :: Int -> Int nCifras x = length (show x) -- 2ª definición (por recursión) equidigital2 :: [Int] -> Bool equidigital2 (x:y:zs) = nCifras x == nCifras y && equidigital (y:zs) equidigital2 _ = True |
3 Comentarios