Listas alternadas
Una lista de números enteros se llama alternada si sus elementos son alternativamente par/impar o impar/par.
Definir la función
tal que (alternada xs) se verifica si xs es una lista alternada. Por ejemplo,
Una lista de números enteros se llama alternada si sus elementos son alternativamente par/impar o impar/par.
Definir la función
1 |
alternada :: [Int] -> Bool |
tal que (alternada xs) se verifica si xs es una lista alternada. Por ejemplo,
1 2 3 4 5 6 7 |
alternada [1,2,3] == True alternada [1,4,6,5] == False alternada [1,4,3,5] == False alternada [8,1,2,3,4] == True alternada [8,1,2,3] == True alternada [8] == True alternada [7] == True |
1 2 3 4 5 6 7 8 9 10 |
-- 1ª solución: alternada1 :: [Int] -> Bool alternada1 (x:y:xs) | even x = odd y && alternada1 (y:xs) | otherwise = even y && alternada1 (y:xs) alternada1 _ = True -- 2ª solución alternada2 :: [Int] -> Bool alternada2 xs = all odd (zipWith (+) xs (tail xs)) |