Listas con suma dada
Definir la función
| 1 |    conSuma :: (Eq a, Num a) => [a] -> [[a]] -> [[[a]]] | 
tal que (conSuma xs yss) es la lista de los vectores de xss cuya suma vectorial es xs. Por ejemplo,
| 1 2 3 4 |    ghci> conSuma [9,10,12] [[4,7,3],[3,1,4],[5,3,9],[2,2,5]]     [[[4,7,3],[5,3,9]],[[4,7,3],[3,1,4],[2,2,5]]]    ghci> conSuma [9,11,12] [[4,7,3],[3,1,4],[5,3,9],[2,2,5]]     [] | 
Soluciones
| 1 2 3 4 5 6 7 8 9 | import Data.List (subsequences, transpose) conSuma :: (Eq a, Num a) => [a] -> [[a]] -> [[[a]]] conSuma xs yss = [zss | zss <- subsequences yss, suma zss == xs] -- (suma xss) es la suma de las listas xs. Por ejemplo, --    suma [[4,7,3],[3,1,4],[2,2,5]]  ==  [9,10,12] suma :: Num a => [[a]] -> [a] suma = map sum . transpose  |