Ir al contenido principal

Listas disjuntas

Definir la función

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,

disjuntas [2,5]   [1,4,7]                  ==  True
disjuntas [2,5,7] [1,4,7]                  ==  False
disjuntas [1..1000000] [3000000..4000000]  ==  True

Soluciones

disjuntas :: Ord a => [a] -> [a] -> Bool
disjuntas xs [] = True
disjuntas [] ys = True
disjuntas xs'@(x:xs) ys'@(y:ys)
    | x < y  = disjuntas xs ys'
    | x == y = False
    | x > y  = disjuntas xs' ys