{"id":5409,"date":"2020-01-21T05:30:57","date_gmt":"2020-01-21T03:30:57","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=5409"},"modified":"2022-03-25T20:05:50","modified_gmt":"2022-03-25T18:05:50","slug":"sucesiones-sin-progresiones-aritmeticas-de-longitud-3","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/sucesiones-sin-progresiones-aritmeticas-de-longitud-3\/","title":{"rendered":"Sucesiones sin progresiones aritm\u00e9ticas de longitud 3"},"content":{"rendered":"<p>Tres n\u00fameros x, y, z est\u00e1 en progresi\u00f3n aritm\u00e9tica (PA) si existe un d tal que y = x+d y z = y+d. Por ejemplo, 1, 3, 5 est\u00e1n en PA ya que 3 = 1+2 y 5 = 3+2.<\/p>\n<p>Se considera la sucesi\u00f3n donde cada uno de sus t\u00e9rminos es el  n\u00famero natural tal que no est\u00e1 en PA con cualesquiera dos t\u00e9rminos anteriores de la sucesi\u00f3n. Por ejemplo, si representamos por f(n) el n-\u00e9simo t\u00e9rmino de la sucesi\u00f3n, entonces<\/p>\n<pre lang=\"text\">\nf(0) = 0, que es el menor n\u00famero natural;\nf(1) = 1, que es el menor n\u00famero natural que no est\u00e1 en la sucesi\u00f3n; \nf(2) = 3, ya que [0, 1, 2] est\u00e1n en PA y\n                 [0, 1, 3] no est\u00e1n en PA;\nf(3) = 4, ya que [0, 1, 4], [0, 3, 4] y [1, 3, 4] no est\u00e1n en PA;\nf(4) = 9, ya que se descartan\n          + el 5 porque [1, 3, 5] est\u00e1n en PA\n          + el 6 porque [0, 3, 6] est\u00e1n en PA\n          + el 7 porque [1, 4, 7] est\u00e1n en PA\n          + el 8 porque [0, 4, 8] estan en PA\n          y se acepta el 9 porque no est\u00e1n en PA niguna de [0,1,9],\n          [0,3,9], [0,4,9], [1,3,9], [1,4,9], [3,4,9].\n<\/pre>\n<p>Definir la sucesi\u00f3n<\/p>\n<pre lang=\"text\">\n   sucesionSin3enPA :: [Integer]\n<\/pre>\n<p>donde cada uno de sus t\u00e9rminos es el menor n\u00famero natural tal que no est\u00e1 en PA con cualesquiera dos t\u00e9rminos anteriores de la sucesi\u00f3n. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> take 20 sucesionSin3enPA\n   [0,1,3,4,9,10,12,13,27,28,30,31,36,37,39,40,81,82,84,85]\n   \u03bb> sucesionSin3enPA !! 250\n   3270\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List ((\\\\), delete, tails)\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\nsucesionSin3enPA :: [Integer]\nsucesionSin3enPA = aux []  \n  where aux xs = x : aux (x:xs)\n          where x = head (noEnPAConDos xs)\n\nnoEnPAConDos :: [Integer] -> [Integer]\nnoEnPAConDos xs = [z | z <- [0..]\n                   , z `notElem` xs\n                   , and [z - y \/= y - x | x <- xs\n                                         , y <- dropWhile (<= x) xs]]\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\n-- Si x, y, z est\u00e1n en progresi\u00f3n aritm\u00e9tica, entonces\n--    y = (x + z) \/ 2\n-- Por tanto,\n--    z = 2 * y - x\n--\n-- Teniendo en cuenta la relaci\u00f3n auterior se define (aux xs ys) tal que\n-- xs es la lista de los t\u00e9rminos actuales de la sucesi\u00f3n e ys es la\n-- lista de los n\u00fameros que no est\u00e1n en PA con cualesquieras dos de xs.\n\nsucesionSin3enPA2 :: [Integer]\nsucesionSin3enPA2 = aux [] [0..] \n  where\n    aux xs (y:ys) = y : aux (y:xs) (ys \\\\ [2 * y - x | x <- xs])\n\n-- 3\u00ba soluci\u00f3n\n-- ===========\n\nsucesionSin3enPA3 :: [Integer]\nsucesionSin3enPA3 = 0 : aux [1]\n  where aux (x:xs) = x : aux (xs ++ [3*x,3*x+1])\n\n\n-- Comparaci\u00f3n de eficiencia\n-- =========================\n\n-- La comparaci\u00f3n es\n--    \u03bb> sucesionSin3enPA !! 70\n--    741\n--    (7.97 secs, 5,444,053,240 bytes)\n--    \u03bb> sucesionSin3enPA2 !! 70\n--    741\n--    (0.03 secs, 35,781,952 bytes)\n--    \u03bb> sucesionSin3enPA3 !! 70\n--    741\n--    (0.01 secs, 192,864 bytes)\n--    \n--    \u03bb> sucesionSin3enPA2 !! 350\n--    7410\n--    (9.46 secs, 10,119,851,016 bytes)\n--    \u03bb> sucesionSin3enPA3 !! 350\n--    7410\n--    (0.01 secs, 1,931,296 bytes)\n<\/pre>\n<h4>Otras soluciones<\/h4>\n<ul>\n<li>Se pueden escribir otras soluciones en los comentarios.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=\u00bbhaskell\u00bb&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n<h4>Pensamiento<\/h4>\n<blockquote><p>\nQuien se vive se pierde, Abel dec\u00eda.<br \/>\n\u00a1Oh, distancia, distancia!, que la estrella<br \/>\nque nadie toca, gu\u00eda.<br \/>\n\u00bfQui\u00e9n naveg\u00f3 sin ella?<\/p>\n<p>Antonio Machado\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Tres n\u00fameros x, y, z est\u00e1 en progresi\u00f3n aritm\u00e9tica (PA) si existe un d tal que y = x+d y z = y+d. Por ejemplo, 1, 3, 5 est\u00e1n en PA ya que 3 = 1+2 y 5 = 3+2. Se considera la sucesi\u00f3n donde cada uno de sus t\u00e9rminos es el n\u00famero natural tal&#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":[7],"tags":[8,415,6],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5409"}],"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=5409"}],"version-history":[{"count":5,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5409\/revisions"}],"predecessor-version":[{"id":5482,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5409\/revisions\/5482"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=5409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=5409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=5409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}