{"id":6270,"date":"2021-04-13T06:00:54","date_gmt":"2021-04-13T04:00:54","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=6270"},"modified":"2021-04-20T10:28:27","modified_gmt":"2021-04-20T08:28:27","slug":"sucesiones-de-raices-digitales","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/sucesiones-de-raices-digitales\/","title":{"rendered":"Sucesiones de ra\u00edces digitales"},"content":{"rendered":"<p>La ra\u00edz digital de un n\u00famero entero positivo n es el d\u00edgito  resulta al sumar sus d\u00edgitos, volviendo a sumar reiteradamente  resultados de esa suma y de las siguientes hasta que la suma sea un n\u00famero de un d\u00edgito, al que se llama la ra\u00edz digital del n\u00famero n y se representa pod D(n). Por ejemplo, la ra\u00edz digital del n\u00famero 23451 es 6, porque 2+3+4+5+1 = 15 y sumando los d\u00edgitos del 15 resulta 6.<\/p>\n<p>La sucesi\u00f3n de las raices digitales definida por un n\u00famero a es la sucesi\u00f3n a(n) tal que a(0) = a y a(n+1) es la suma de a(n) y la ra\u00edz d\u00edgital de a(n). Por ejemplo, los primeros t\u00e9rminos de la sucesi\u00f3n de las ra\u00edces digitales definida por 1 son<\/p>\n<pre lang=\"text\">\n   1,2,4,8,16,23,28,29,31,35,43,50,55,56,58,62,70,77,82,83,85,89,...\n<\/pre>\n<p>Se observa que el menor n\u00famero que no pertenece a la sucesi\u00f3n anterior es 3. Los primeros t\u00e9rminos de la sucesi\u00f3n de las ra\u00edces digitales definida por 3 son<\/p>\n<pre lang=\"text\">\n   3,6,12,15,21,24,30,33,39,42,48,51,57,60,66,69,75,78,84,87,93,96,...\n<\/pre>\n<p>Se observa que el menor n\u00famero que no pertenece a las 2 sucesiones anteriores es 5. Los primeros t\u00e9rminos de la sucesi\u00f3n de las ra\u00edces digitales definida por 5 son<\/p>\n<pre lang=\"text\">\n   5,10,11,13,17,25,32,37,38,40,44,52,59,64,65,67,71,79,86,91,92,94,...\n<\/pre>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   sucesionSucesionesRaicesDigitales :: [[Integer]]\n<\/pre>\n<p>tal que sus elementos son las sucesiones de ra\u00edces digitales tal  el primer elemento de cada sucesi\u00f3n es el menor elemento que no pertenece a las sucesiones anteriores. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> map (take 5) (take 4 sucesionSucesionesRaicesDigitales)\n   [[1,2,4,8,16],[3,6,12,15,21],[5,10,11,13,17],[7,14,19,20,22]]\n<\/pre>\n<p>Comprobar con QuickCheck que sucesionSucesionesRaicesDigitales tiene exactamente 5 elementos.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Test.QuickCheck\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\nsucesionSucesionesRaicesDigitales :: [[Integer]]\nsucesionSucesionesRaicesDigitales =\n  map aux [1..]\n  where aux 1 = sucesionRaicesDigitales 1\n        aux n = sucesionRaicesDigitales m\n          where m = head [a | a <- [1..],\n                              all (a `noPertenece`)\n                                  [aux k | k <- [1..n-1]]]\n\n-- (sucesionRaicesDigitales a) es la sucesi\u00f3n de las ra\u00edces digitales\n-- definida por un n\u00famero a. Por ejemplo,\n--    \u03bb> take 22 (sucesionRaicesDigitales 1)\n--    [1,2,4,8,16,23,28,29,31,35,43,50,55,56,58,62,70,77,82,83,85,89]\n--    \u03bb> take 22 (sucesionRaicesDigitales 3)\n--    [3,6,12,15,21,24,30,33,39,42,48,51,57,60,66,69,75,78,84,87,93,96]\n--    \u03bb> take 22 (sucesionRaicesDigitales 5)\n--    [5,10,11,13,17,25,32,37,38,40,44,52,59,64,65,67,71,79,86,91,92,94]\n--    \u03bb> take 22 (sucesionRaicesDigitales 7)\n--    [7,14,19,20,22,26,34,41,46,47,49,53,61,68,73,74,76,80,88,95,100,101]\n--    \u03bb> take 22 (sucesionRaicesDigitales 9)\n--    [9,18,27,36,45,54,63,72,81,90,99,108,117,126,135,144,153,162,171,180,189,198]\nsucesionRaicesDigitales :: Integer -> [Integer]\nsucesionRaicesDigitales a =\n  iterate siguienteRaizDigital a\n\n-- (siguienteRaizDigital a) es el siguiente de a en la sucesi\u00f3n de raices\n-- digitales. Por ejemplo,\n--    siguienteRaizDigital 23 == 28\nsiguienteRaizDigital :: Integer -> Integer\nsiguienteRaizDigital a =\n  a + raizDigital a\n\n-- (raizDigital n) es la ra\u00edz digital de n. Por ejemplo,\n--    raizDigital 23451  ==  6\nraizDigital :: Integer -> Integer\nraizDigital n = 1 + (n-1) `mod` 9\n\n-- (noPertenece x ys) se verifica si x no pertenece a la lista infinita\n-- ordenada creciente ys. Por ejemplo,\n--    noPertenece 2 [1,3..] == True\n--    noPertenece 5 [1,3..] == False\nnoPertenece :: Integer -> [Integer] -> Bool\nnoPertenece x ys =\n  not (x `pertenece` ys)\n\n-- (Pertenece x ys) se verifica si x pertenece a la lista infinita\n-- ordenada creciente ys. Por ejemplo,\n--    pertenece 5 [1,3..] == True\n--    pertenece 2 [1,3..] == False\npertenece :: Integer -> [Integer] -> Bool\npertenece x ys =\n  x == head (dropWhile (<x) ys)\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\nsucesionSucesionesRaicesDigitales2 :: [[Integer]]\nsucesionSucesionesRaicesDigitales2 = aux [1..]\n  where aux xs = sucesion xs : aux (diferencia xs (sucesion xs))\n        sucesion xs = sucesionRaicesDigitales (head xs)\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\n-- Propiedad\n-- =========\n\n-- Del c\u00e1lculo \n--    \u03bb> map (take 4) (take 5 sucesionSucesionesRaicesDigitales)\n--    [[1,2,4,8],[3,6,12,15],[5,10,11,13],[7,14,19,20],[9,18,27,36]]\n-- se deduce que tiene al menos 5. S\u00f3lo queda por comprobar que no tiene m\u00e1s; es decir\nprop_sucesionSucesionesRaicesDigitales :: Integer -> Property\nprop_sucesionSucesionesRaicesDigitales n =\n  n > 0 ==>\n  any (n `pertenece`) xss\n  where xss = take 5 (sucesionSucesionesRaicesDigitales2)\n\n-- La comprobaci\u00f3n es\n--    \u03bb> quickCheck prop_sucesionSucesionesRaicesDigitales\n--    +++ OK, passed 100 tests.\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>La ra\u00edz digital de un n\u00famero entero positivo n es el d\u00edgito resulta al sumar sus d\u00edgitos, volviendo a sumar reiteradamente resultados de esa suma y de las siguientes hasta que la suma sea un n\u00famero de un d\u00edgito, al que se llama la ra\u00edz digital del n\u00famero n y se representa pod D(n). Por&#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\/6270"}],"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=6270"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6270\/revisions"}],"predecessor-version":[{"id":6312,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6270\/revisions\/6312"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=6270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=6270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=6270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}