Los subconjuntos de [1, 4, 2] son
[], [1], [4], [1, 4], [2], [1, 2], [4, 2], [1, 4, 2] |
Las sumas de sus elementos son
0, 1, 4, 5, 2, 3, 6, 7 |
Y la suma de las sumas es 28.
Definir la función
sumaSubconjuntos :: [Integer] -> Integer |
tal que (sumaSubconjuntos xs) es la suma de las sumas de los
subconjuntos de xs. Por ejemplo,
sumaSubconjuntos [1,2] == 6 sumaSubconjuntos [1,4,2] == 28 length (show (sumaSubconjuntos [1..10^6])) == 301042 |
Soluciones
import Data.List (subsequences) -- 1ª definición sumaSubconjuntos :: [Integer] -> Integer sumaSubconjuntos xs = sum [sum ys | ys <- subsequences xs] -- 2ª definición sumaSubconjuntos2 :: [Integer] -> Integer sumaSubconjuntos2 = sum . map sum . subsequences -- 3ª definición sumaSubconjuntos3 :: [Integer] -> Integer sumaSubconjuntos3 xs = 2^(n-1) * sum xs where n = length xs |
sumaSubconjuntos :: [Integer] -> Integer
sumaSubconjuntos xs = sum . map (sum) (subquences xs)
La función subquences no existe. A lo mejor has querido decir subsequences.