{"id":317,"date":"2014-06-17T07:00:38","date_gmt":"2014-06-17T05:00:38","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=317"},"modified":"2014-11-29T16:30:06","modified_gmt":"2014-11-29T14:30:06","slug":"descomposiciones-como-sumas-de-n-sumandos","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/descomposiciones-como-sumas-de-n-sumandos\/","title":{"rendered":"Descomposiciones como sumas de n sumandos"},"content":{"rendered":"<h4>Enunciado<\/h4>\n<pre lang=\"text\">\n-- Definir la funci\u00f3n\n--    sumas :: (Num a, Ord a) => Int -> [a] -> a -> [[a]]\n-- tal que (sumas n ys x) es la lista de las descomposiciones de x como\n-- sumas de n sumandos en la lista ns. Por ejemplo,\n--    sumas 2 [1,2] 3    ==  [[1,2],[2,1]]\n--    sumas 2 [1,2] 4    ==  [[2,2]]\n--    sumas 2 [1,2] 5    ==  []\n--    sumas 3 [1,2] 5    ==  [[1,2,2],[2,1,2],[2,2,1]]\n--    sumas 3 [1,2] 6    ==  [[2,2,2]]\n--    sumas 2 [1,2,5] 6  ==  [[1,5],[5,1]]\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nsumas :: (Num a, Ord a) => Int -> [a] -> a -> [[a]]\nsumas 1 ys x | x `elem` ys = [[x]]\n             | otherwise   = []\nsumas n ys x = \n    concat [[y:zs | zs <- sumas (n-1) ys (x-y)] | y <- ys, y <= x]\n<\/pre>\n<h4>Referencia<\/h4>\n<p>El ejercicio est\u00e1 basado en el <a href=\"http:\/\/bit.ly\/1mH0DGT\">problema del 11 de junio<\/a> de <a href=\"https:\/\/twitter.com\/1HaskellADay\">1HaskellADay<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Enunciado &#8212; Definir la funci\u00f3n &#8212; sumas :: (Num a, Ord a) => Int -> [a] -> a -> [[a]] &#8212; tal que (sumas n ys x) es la lista de las descomposiciones de x como &#8212; sumas de n sumandos en la lista ns. Por ejemplo, &#8212; sumas 2 [1,2] 3 == [[1,2],[2,1]] &#8211;&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[4],"tags":[8,26,6],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/317"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=317"}],"version-history":[{"count":5,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/317\/revisions"}],"predecessor-version":[{"id":688,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/317\/revisions\/688"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}