{"id":3919,"date":"2018-03-29T08:10:52","date_gmt":"2018-03-29T06:10:52","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=3919"},"modified":"2018-04-07T08:36:29","modified_gmt":"2018-04-07T06:36:29","slug":"sucesiones-de-numeros-consecutivos-con-suma-dada","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/sucesiones-de-numeros-consecutivos-con-suma-dada\/","title":{"rendered":"Sucesiones de n\u00fameros consecutivos con suma dada"},"content":{"rendered":"<p>El n\u00famero 15 se puede escribir de 5 formas como suma de n\u00fameros naturales consecutivos:<\/p>\n<pre lang=\"text\">\n   15 = 0+1+2+3+4+5 = 1+2+3+4+5 = 4+5+6 = 7+8 = 15.\n<\/pre>\n<p>Definir las funciones<\/p>\n<pre lang=\"text\">\n   sucesionesConSuma        :: Int -> [(Int,Int)]\n   graficaSucesionesConSuma :: Int -> IO ()\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>(sucesionesConSuma n) es la lista de los pares formados por el primero y por el \u00faltimo elemento de las sucesiones de n\u00fameros naturales consecutivos con suma n. Por ejemplo, <\/li>\n<\/ul>\n<pre lang=\"text\">\n     sucesionesConSuma 15             ==  [(0,5),(1,5),(4,6),(7,8),(15,15)]\n     length (sucesionesConSuma 3000)  ==  8\n<\/pre>\n<ul>\n<li>(graficaSucesionesConSuma n) dibuja la gr\u00e1fica del n\u00famero de formas de escribir los n primeros n\u00fameros como suma de n\u00fameros naturales consecutivos. Por ejemplo, (graficaSucesionesConSuma 100) dibuja<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/03\/Sucesiones_de_numeros_consecutivos_con_suma_dada.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/03\/Sucesiones_de_numeros_consecutivos_con_suma_dada.png?resize=640%2C480\" alt=\"Sucesiones_de_numeros_consecutivos_con_suma_dada\" width=\"640\" height=\"480\" class=\"aligncenter size-full wp-image-3922\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/03\/Sucesiones_de_numeros_consecutivos_con_suma_dada.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/03\/Sucesiones_de_numeros_consecutivos_con_suma_dada.png?resize=300%2C225&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/03\/Sucesiones_de_numeros_consecutivos_con_suma_dada.png?resize=100%2C75&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/03\/Sucesiones_de_numeros_consecutivos_con_suma_dada.png?resize=150%2C112&amp;ssl=1 150w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/li>\n<\/ul>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Graphics.Gnuplot.Simple\n\n-- 1\u00aa soluci\u00f3n\nsucesionesConSuma :: Int -> [(Int,Int)]\nsucesionesConSuma n =\n  [(x,y) | y <- [0..n], x <- [0..y], sum [x..y] == n]\n\n-- 2\u00aa soluci\u00f3n\nsucesionesConSuma2 :: Int -> [(Int,Int)]\nsucesionesConSuma2 n = \n    [(x,y) | y <- [0..n], x <- [0..y], (x+y)*(y-x+1) == 2*n]\n\n-- Comparaci\u00f3n de eficiencia\n--    \u03bb> sucesionesConSuma 700\n--    [(3,37),(16,40),(84,91),(97,103),(138,142),(700,700)]\n--    (2.71 secs, 7,894,718,264 bytes)\n--    \u03bb> sucesionesConSuma2 700\n--    [(3,37),(16,40),(84,91),(97,103),(138,142),(700,700)]\n--    (0.22 secs, 118,104,176 bytes)\n\n-- Gr\u00e1fica\ngraficaSucesionesConSuma :: Int -> IO ()\ngraficaSucesionesConSuma n =\n  plotList [ Key Nothing\n           , PNG \"Sucesiones_de_numeros_consecutivos_con_suma_dada.png\"]\n           [length (sucesionesConSuma2 k) | k <- [0..n]]\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>El n\u00famero 15 se puede escribir de 5 formas como suma de n\u00fameros naturales consecutivos: 15 = 0+1+2+3+4+5 = 1+2+3+4+5 = 4+5+6 = 7+8 = 15. Definir las funciones sucesionesConSuma :: Int -> [(Int,Int)] graficaSucesionesConSuma :: Int -> IO () tales que (sucesionesConSuma n) es la lista de los pares formados por el primero y&#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,376,28,309,40],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3919"}],"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=3919"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3919\/revisions"}],"predecessor-version":[{"id":3949,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3919\/revisions\/3949"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=3919"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=3919"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=3919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}