Intersecciones parciales
Definir la función
interseccionParcial :: Eq a => Int -> [[a]] -> [a]
tal que (interseccionParcial n xss) es la lista de los elementos que pertenecen al menos a n conjuntos de xss. Por ejemplo,
interseccionParcial 1 [[3,4],[4,5,9],[5,4,7]] == [3,4,5,9,7] interseccionParcial 2 [[3,4],[4,5,9],[5,4,7]] == [4,5] interseccionParcial 3 [[3,4],[4,5,9],[5,4,7]] == [4] interseccionParcial 4 [[3,4],[4,5,9],[5,4,7]] == []
Soluciones
import Data.List (nub) interseccionParcial :: Eq a => Int -> [[a]] -> [a] interseccionParcial n xss = [x | x <- nub (concat xss) , length [xs | xs <- xss, x `elem` xs] >= n]