{"id":3522,"date":"2017-12-15T06:00:17","date_gmt":"2017-12-15T04:00:17","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=3522"},"modified":"2017-12-22T08:01:28","modified_gmt":"2017-12-22T06:01:28","slug":"menor-con-suma-de-digitos-dada","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/menor-con-suma-de-digitos-dada\/","title":{"rendered":"Menor con suma de d\u00edgitos dada"},"content":{"rendered":"<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   minSumDig :: Integer -> Integer\n<\/pre>\n<p>tal que (minSumDig n) es el menor n\u00famero x tal que la suma de los d\u00edgitos de x es n. Por ejemplo,<\/p>\n<pre lang=\"text\">\n  minSumDig 1   ==  1\n  minSumDig 12  ==  39\n  minSumDig 21  ==  399\n  (length . show . minSumDig) (3*10^5)  ==  33334\n  (length . show . minSumDig) (3*10^6)  ==  333334\n  (length . show . minSumDig) (3*10^7)  ==  3333334\n  (length . show . minSumDig) (4*10^7)  ==  4444445\n  (length . show . minSumDig) (5*10^7)  ==  5555556\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (genericIndex)\n\n-- 1\u00aa definici\u00f3n\n-- =============\n\nminSumDig1 :: Integer -> Integer\nminSumDig1 n = head [x | x <- [0..], sumaDigitos x == n]\n\nsumaDigitos :: Integer -> Integer\nsumaDigitos n | n < 10    = n\n              | otherwise = y + sumaDigitos x\n  where (x, y) = divMod n 10\n\n-- 2\u00aa definici\u00f3n\nminSumDig2 :: Integer -> Integer\nminSumDig2 n | n < 10    = n\n             | otherwise = 9 + 10 * minSumDig2 (n - 9) \n\n-- 3\u00aa definici\u00f3n\nminSumDig3 :: Integer -> Integer\nminSumDig3 n = (r + 1) * 10^d - 1\n  where (d,r) = divMod n 9\n\n-- Comparaci\u00f3n de eficiencia\n-- =========================\n\n--    \u03bb> minSumDig1 46\n--    199999\n--    (3.21 secs, 542,721,696 bytes)\n--    \u03bb> minSumDig2 46\n--    199999\n--    (0.01 secs, 142,056 bytes)\n--    \u03bb> minSumDig3 46\n--    199999\n--    (0.01 secs, 155,984 bytes)\n--    \n--    \u03bb> (length . show . minSumDig2) (3*10^5)\n--    33334\n--    (1.79 secs, 492,200,376 bytes)\n--    \u03bb> (length . show . minSumDig3) (3*10^5)\n--    33334\n--    (0.11 secs, 50,119,840 bytes)\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Definir la funci\u00f3n minSumDig :: Integer -> Integer tal que (minSumDig n) es el menor n\u00famero x tal que la suma de los d\u00edgitos de x es n. Por ejemplo, minSumDig 1 == 1 minSumDig 12 == 39 minSumDig 21 == 399 (length . show . minSumDig) (3*10^5) == 33334 (length . show . minSumDig)&#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,328,282,183,71,89,6],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3522"}],"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=3522"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3522\/revisions"}],"predecessor-version":[{"id":3551,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3522\/revisions\/3551"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=3522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=3522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=3522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}