Sin consecutivos repetidos
Enunciado
1 2 3 4 5 6 7 |
-- Definir la función -- sinConsecutivosRepetidos :: Eq a => [a] -> [a] -- tal que (sinConsecutivosRepetidos xs) es la lista obtenida a partir -- de xs de forma que si hay dos o más elementos idénticos consecutivos, -- borra las repeticiones y deja sólo el primer elemento. Por ejemplo, -- ghci> sinConsecutivosRepetidos "eesssooo essss toodddooo" -- "eso es todo" |
Soluciones
1 2 3 4 5 6 7 8 9 10 11 |
import Data.List (group) -- 1ª solución (por comprensión): sinConsecutivosRepetidos :: Eq a => [a] -> [a] sinConsecutivosRepetidos xs = [x | (x:_) <- group xs] -- 2ª solución (por recursión): sinConsecutivosRepetidos2 :: Eq a => [a] -> [a] sinConsecutivosRepetidos2 [] = [] sinConsecutivosRepetidos2 (x:xs) = x : sinConsecutivosRepetidos2 (dropWhile (==x) xs) |