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
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 |
Soluciones
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)) |
Estoy que me salgo, las dos anteriores están mal xD