Listas equidigitales
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ª 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