{"id":1295,"date":"2015-04-09T06:00:11","date_gmt":"2015-04-09T04:00:11","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=1295"},"modified":"2015-05-01T08:45:01","modified_gmt":"2015-05-01T06:45:01","slug":"pandigitales-multiplos-de-un-numero-por-una-lista-de-numeros","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/pandigitales-multiplos-de-un-numero-por-una-lista-de-numeros\/","title":{"rendered":"Pandigitales m\u00faltiplos de un n\u00famero por una lista de n\u00fameros"},"content":{"rendered":"<p>Un n\u00famero pandigital es un n\u00famero que contiene todos los d\u00edgitos del 1 al 9 s\u00f3lo una vez. Por ejemplo, 192384576 es un n\u00famero pandigital.<\/p>\n<p>El producto de un n\u00famero natural x por una lista de n\u00fameros naturales ys es el n\u00famero obtenido concatenando los productos de x por cada uno de los elementos de ys. Por ejemplo, el producto de 2 por [3,2,5] es 6410.<\/p>\n<p>Un n\u00famero pandigital x es un m\u00faltiplo si existe un y y un n > 1 tales que x es el producto de y por [1,2,3,&#8230;,n]. Por ejemplo, 192384576 es un pandigital m\u00faltiplo ya que<\/p>\n<pre lang=\"text\">\n   192 \u00d7 1 = 192\n   192 \u00d7 2 = 384\n   192 \u00d7 3 = 576\n<\/pre>\n<p>por tanto, 192384576 es el producto de 192 por [1,2,3]. Otro pandgital m\u00faltiplo es el 918273645 ya que es el producto de 9 por [1,2,3,4,5].<\/p>\n<p>Definir la sucesi\u00f3n<\/p>\n<pre lang=\"text\">\n   pandigitalesMultiplos :: [Integer]\n<\/pre>\n<p>tal que sus elementos son los n\u00fameros pandigitales m\u00faltiplos. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   ghci> take 5 pandigitalesMultiplos\n   [123456789,192384576,219438657,273546819,327654981]\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (sort)\n\npandigitalesMultiplos :: [Integer]\npandigitalesMultiplos =\n    sort [y | x <- [1..a],\n              y <- productosCon9Digitos x,\n              esPandigital y]\n    where a = head [x | x <- [1..], producto x [1,2] > 987654321]\n\n-- (productosCon9Digitos x) es la lista de los productos de x por una\n-- lista [1,2,...,n] (con n > 1) que tienen 9 d\u00edgitos, Por ejemplo, \n--    productosCon9Digitos 3  ==  [369121518]\n--    productosCon9Digitos 2  ==  []\nproductosCon9Digitos :: Integer -> [Integer]\nproductosCon9Digitos x | numeroDeDigitos z == 9 = [z]\n                       | otherwise              = []\n    where z = head [y | n <- [2..], \n                        let y = producto x [1..n], \n                        numeroDeDigitos y >= 9]\n\n-- (producto x ys) es el producto de x por ys. Por ejemplo,\n--    producto 2 [3,2,5]  ==  6410\nproducto :: Integer -> [Integer] -> Integer\nproducto x = read . concatMap (show . (x*))\n\n-- (numeroDeDigitos x) es el n\u00famero de d\u00edgitos de x. Por ejemplo,\n--    numeroDeDigitos 425  ==  3\nnumeroDeDigitos :: Integer -> Int\nnumeroDeDigitos = length . show\n\n-- (esPandigital x) se verifica si x es pandigital. Por ejemplo,\n--    esPandigital 192384576   ==  True\n--    esPandigital 192314576   ==  False\n--    esPandigital 1923145761  ==  False\nesPandigital :: Integer -> Bool\nesPandigital n = sort (show n) == \"123456789\"\n\n-- La lista de los pandigitales m\u00faltiplos se calcula por\n--    ghci> pandigitalesMultiplos\n--    [123456789, 192384576, 219438657, 273546819, 327654981, 672913458,\n--     679213584, 692713854, 726914538, 729314586, 732914658, 769215384,\n--     792315846, 793215864, 918273645, 926718534, 927318546, 932718654] \n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Un n\u00famero pandigital es un n\u00famero que contiene todos los d\u00edgitos del 1 al 9 s\u00f3lo una vez. Por ejemplo, 192384576 es un n\u00famero pandigital. El producto de un n\u00famero natural x por una lista de n\u00fameros naturales ys es el n\u00famero obtenido concatenando los productos de x por cada uno de los elementos de&#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,58,71,28,11,95,33,14],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1295"}],"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=1295"}],"version-history":[{"count":5,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1295\/revisions"}],"predecessor-version":[{"id":1297,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1295\/revisions\/1297"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=1295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=1295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=1295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}