Copyright | Exercitium (17-05-14) |
---|---|
License | GPL-3 |
Maintainer | JoseA.Alonso@gmail.com |
Safe Haskell | Safe |
Language | Haskell2010 |
Descomposiciones_con_n_sumandos
Description
Descomposiciones de x como sumas de n sumandos de la lista ns
Definir la función
sumas :: (Num a, Ord a) => Int -> [a] -> a -> [[a]]
tal que (sumas n ns x) es la lista de las descomposiciones de x como sumas de n sumandos en la lista ns. Por ejemplo,
>>>
sumas 2 [1,2] 3
[[1,2]]>>>
sumas 2 [-1] (-2)
[[-1,-1]]>>>
sumas 2 [-1,3,-1] 2
[[-1,3]]>>>
sumas 2 [1,2] 4
[[2,2]]>>>
sumas 2 [1,2] 5
[]>>>
sumas 3 [1,2] 5
[[1,2,2]]>>>
sumas 3 [1,2] 6
[[2,2,2]]>>>
sumas 2 [1,2,5] 6
[[1,5]]>>>
sumas 2 [1,2,3,5] 4
[[1,3],[2,2]]>>>
sumas 2 [1..5] 6
[[1,5],[2,4],[3,3]]>>>
sumas 3 [1..5] 7
[[1,1,5],[1,2,4],[1,3,3],[2,2,3]]>>>
sumas 3 [1..200] 4
[[1,1,2]]
Documentation
combinacionesR :: Int -> [a] -> [[a]] Source #
(combinacionesR k xs) es la lista de las combinaciones orden k de los elementos de xs con repeticiones. Por ejemplo,
>>>
combinacionesR 2 "abc"
["aa","ab","ac","bb","bc","cc"]>>>
combinacionesR 3 "bc"
["bbb","bbc","bcc","ccc"]>>>
combinacionesR 3 "abc"
["aaa","aab","aac","abb","abc","acc","bbb","bbc","bcc","ccc"]
prop_equiv_sumas :: Positive Int -> [Int] -> Int -> Bool Source #
(prop_equiv_sumas n ns x) se verifica si las definiciones de
sumas
son equivalentes para n, ns y x. Por ejemplo,
>>>
quickCheckWith (stdArgs {maxSize=7}) prop_equiv_sumas
+++ OK, passed 100 tests.
Comparación de eficiencia
> sumas1 3 [1..200] 4 [[1,1,2]] (2.52 secs, 1,914,773,472 bytes) > sumas 3 [1..200] 4 [[1,1,2]] (0.17 secs, 25,189,688 bytes)