{"id":6252,"date":"2021-04-07T06:00:54","date_gmt":"2021-04-07T04:00:54","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=6252"},"modified":"2021-04-14T09:16:43","modified_gmt":"2021-04-14T07:16:43","slug":"raices-digitales-de-potencias-de-dos","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/raices-digitales-de-potencias-de-dos\/","title":{"rendered":"Ra\u00edces digitales de potencias de dos"},"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 los 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 por 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>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   raizDigitalPotencia :: Integer -> Integer\n<\/pre>\n<p>tal que (raizDigitalPotencia n) es la ra\u00edz digital de 2^n. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   raizDigitalPotencia 6            ==  1\n   raizDigitalPotencia (10^(10^8))  ==  7\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Test.QuickCheck (Property, (==>), quickCheck)\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\nraizDigitalPotencia :: Integer -> Integer\nraizDigitalPotencia n =\n  raizDigital (2^n)\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-- 2\u00aa soluci\u00f3n\n-- ===========\n\n-- Calculando las ra\u00edces digitales de los primeros n\u00fameros se obtiene\n--    \u03bb> map raizDigitalPotencia [0..29]\n--    [1,2,4,8,7,5,1,2,4,8,7,5,1,2,4,8,7,5,1,2,4,8,7,5,1,2,4,8,7,5]\n-- Se observa se repite el per\u00edodo 1,2,4,8,7,5.\n\nraizDigitalPotencia2 :: Integer -> Integer\nraizDigitalPotencia2 n\n    | m == 0 = 1\n    | m == 1 = 2\n    | m == 2 = 4\n    | m == 3 = 8\n    | m == 4 = 7\n    | m == 5 = 5\n  where m = n `mod` 6\n\n-- 3\u00aa soluci\u00f3n\n-- ===========\n\nraizDigitalPotencia3 :: Integer -> Integer\nraizDigitalPotencia3 n =\n  case (n `mod` 6) of\n    0 -> 1\n    1 -> 2\n    2 -> 4\n    3 -> 8\n    4 -> 7\n    5 -> 5\n\n-- 4\u00aa soluci\u00f3n\n-- ===========\n\nraizDigitalPotencia4 :: Integer -> Integer\nraizDigitalPotencia4 n =\n  raizDigital (2^(mod n 6))\n\n-- Comprobaci\u00f3n de equivalencia\n-- ============================\n\n-- La propiedad es\nprop_raizDigitalPotencia :: Integer -> Property\nprop_raizDigitalPotencia n =\n  n >= 0 ==>\n  all (== (raizDigitalPotencia n))\n      [raizDigitalPotencia2 n,\n       raizDigitalPotencia3 n,\n       raizDigitalPotencia4 n]\n\n-- La comprobaci\u00f3n es\n--    \u03bb> quickCheck prop_raizDigitalPotencia\n--    +++ OK, passed 100 tests.\n\n-- Comparaci\u00f3n de eficiencia\n-- =========================\n\n-- La comparaci\u00f3n es\n--    \u03bb> raizDigitalPotencia 300000000\n--    1\n--    (2.82 secs, 149,107,152 bytes)\n--    \u03bb> raizDigitalPotencia2 300000000\n--    1\n--    (0.01 secs, 98,480 bytes)\n--    \u03bb> raizDigitalPotencia3 300000000\n--    1\n--    (0.01 secs, 98,440 bytes)\n--    \u03bb> raizDigitalPotencia4 300000000\n--    1\n--    (0.01 secs, 98,568 bytes)\n--\n--    \u03bb> raizDigitalPotencia2 (10^(10^8))\n--    7\n--    (3.09 secs, 123,233,992 bytes)\n--    \u03bb> raizDigitalPotencia3 (10^(10^8))\n--    7\n--    (3.07 secs, 123,232,728 bytes)\n--    \u03bb> raizDigitalPotencia4 (10^(10^8))\n--    7\n--    (3.18 secs, 123,234,344 bytes)\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 los 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 por D(n)&#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\/6252"}],"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=6252"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6252\/revisions"}],"predecessor-version":[{"id":6289,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6252\/revisions\/6289"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=6252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=6252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=6252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}