Listas disjuntas
Definir la función
1 |
disjuntas :: Ord a => [a] -> [a] -> Bool |
tal que (disjuntas xs ys) se verifica si las listas ordenadas crecientemente xs e ys son disjuntas. Por ejemplo,
1 2 3 |
disjuntas [2,5] [1,4,7] == True disjuntas [2,5,7] [1,4,7] == False disjuntas [1..1000000] [3000000..4000000] == True |
Soluciones
1 2 3 4 5 6 7 |
disjuntas :: Ord a => [a] -> [a] -> Bool disjuntas xs [] = True disjuntas [] ys = True disjuntas xs1@(x:xs) ys1@(y:ys) | x < y = disjuntas xs ys1 | x == y = False | x > y = disjuntas xs1 ys |
De esta forma, ejemplos como:
son calculados en poco tiempo