{"id":6502,"date":"2021-06-08T06:00:35","date_gmt":"2021-06-08T04:00:35","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=6502"},"modified":"2022-01-26T12:18:13","modified_gmt":"2022-01-26T10:18:13","slug":"numeros-que-no-son-sumas-de-progresiones-aritmeticas-de-diferencia-dada","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/numeros-que-no-son-sumas-de-progresiones-aritmeticas-de-diferencia-dada\/","title":{"rendered":"N\u00fameros que no son sumas de progresiones aritm\u00e9ticas de diferencia dada"},"content":{"rendered":"<p>El n\u00famero 5 es la suma de n\u00fameros enteros positivos en progresi\u00f3n aritm\u00e9tica de diferencia tres (ya que es 1+4) y tambi\u00e9n lo es el 7 (ya que es 2+5) y el 12 (ya que es (1+4+7), pero el 6 no lo es.<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   noSonSumasDePADeDiferencia :: Integer -> [Integer]\n<\/pre>\n<p>tal que (noSonSumasDePADeDiferencia d) es la lista de los n\u00fameros  no se pueden escribir como sumas de progresiones aritm\u00e9ticas de diferencia d, con al menos t\u00e9rminos, de n\u00fameros enteros positivos. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   (noSonSumasDePADeDiferencia 3) !! 4    ==  6\n   (noSonSumasDePADeDiferencia 3) !! 100  ==  6848\n   (noSonSumasDePADeDiferencia 9) !! 200  ==  6752\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (foldr1)\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\nnoSonSumasDePADeDiferencia :: Integer -> [Integer]\nnoSonSumasDePADeDiferencia d =\n  diferencia [1..] (sonSumasDePADeDiferencia d)\n\n-- (sonSumasDePADeDiferencia d) es la lista de los n\u00fameros que se pueden\n-- escribir como sumas de progresiones aritm\u00e9ticas de diferencia d,\n-- con al menos dos t\u00e9rminos, de n\u00fameros enteros positivos. Por ejemplo,\n--    \u03bb> take 15 (sonSumasDePADeDiferencia 3)\n--    [5,7,9,11,12,13,15,17,18,19,21,22,23,24,25]\nsonSumasDePADeDiferencia :: Integer -> [Integer]\nsonSumasDePADeDiferencia d =\n  mezclaTodas [sumasDePADeDiferencia d a | a <- [1..]]\n\n-- (sumasDePADeDiferencia a) es la lista de las sumas de la\n-- progresi\u00f3n aritm\u00e9tica de t\u00e9rmino inicial a y diferencia . Por\n-- ejemplo,\n--    take 7 (sumasDePADeDiferencia 3 1)  ==  [5,12,22,35,51,70,92]\n--    take 7 (sumasDePADeDiferencia 3 2)  ==  [7,15,26,40,57,77,100]\n--    take 7 (sumasDePADeDiferencia 3 3)  ==  [9,18,30,45,63,84,108]\nsumasDePADeDiferencia :: Integer -> Integer -> [Integer]\nsumasDePADeDiferencia d a =\n  tail (scanl1 (+) [a,a+d..])\n\n-- (mezclaTodas xss) es la mezcla ordenada de xss, donde tanto xss como\n-- sus elementos son listas infinitas ordenadas. Por ejemplo,\n--    \u03bb> take 10 (mezclaTodas [[n,2*n..] | n <- [2..]])\n--    [2,3,4,5,6,7,8,9,10,11]\n--    \u03bb> take 10 (mezclaTodas [[n,2*n..] | n <- [2,9..]])\n--    [2,4,6,8,9,10,12,14,16,18]\nmezclaTodas :: Ord a => [[a]] -> [a]\nmezclaTodas = foldr1 xmezcla\n  where xmezcla (x:xs) ys = x : mezcla xs ys\n\n-- (mezcla xs ys) es la lista obtenida mezclando las  lista infinitas\n-- ordenadas crecientes xs e ys. Por ejemplo,\n--    \u03bb> take 20 (mezcla [1,3..] [2,5..])\n--    [1,2,3,5,7,8,9,11,13,14,15,17,19,20,21,23,25,26,27,29]\nmezcla :: Ord a => [a] -> [a] -> [a]\nmezcla (x:xs) (y:ys) | x < y  = x : mezcla xs (y:ys)\n                     | x == y = x : mezcla xs ys\n                     | x > y  = y : mezcla (x:xs) ys\n\n-- (diferencia xs ys) es la diferencia las listas infinitas ordenadas\n-- crecientes xs e ys. Por ejemplo,\n--    \u03bb> take 8 (diferencia [1..] [2,4..])\n--    [1,3,5,7,9,11,13,15]\ndiferencia :: [Integer] -> [Integer] -> [Integer]\ndiferencia (x:xs) (y:ys)\n  | x == y    = diferencia xs ys\n  | otherwise = x : diferencia xs (y:ys)\n<\/pre>\n<h4>Nuevas soluciones<\/h4>\n<ul>\n<li>En los comentarios se pueden escribir nuevas soluciones.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=&quot;haskell&quot;&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>El n\u00famero 5 es la suma de n\u00fameros enteros positivos en progresi\u00f3n aritm\u00e9tica de diferencia tres (ya que es 1+4) y tambi\u00e9n lo es el 7 (ya que es 2+5) y el 12 (ya que es (1+4+7), pero el 6 no lo es. Definir la funci\u00f3n noSonSumasDePADeDiferencia :: Integer -> [Integer] tal que (noSonSumasDePADeDiferencia d)&#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":[2],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6502"}],"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=6502"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6502\/revisions"}],"predecessor-version":[{"id":6545,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6502\/revisions\/6545"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=6502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=6502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=6502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}