{"id":5202,"date":"2019-12-03T05:30:14","date_gmt":"2019-12-03T03:30:14","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=5202"},"modified":"2022-03-25T20:06:10","modified_gmt":"2022-03-25T18:06:10","slug":"multiplos-con-ceros-y-unos","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/multiplos-con-ceros-y-unos\/","title":{"rendered":"M\u00faltiplos con ceros y unos"},"content":{"rendered":"<p>Se observa que todos los primeros n\u00fameros naturales tienen al menos un m\u00faltiplo no nulo que est\u00e1 formado solamente por ceros y unos. Por ejemplo, 1&#215;10=10, 2&#215;5=10, 3&#215;37=111, 4&#215;25=100, 5&#215;2=10, 6&#215;185=1110; 7&#215;143=1001; 8X125=1000; 9&#215;12345679=111111111.<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   multiplosCon1y0 :: Integer -> [Integer] \n<\/pre>\n<p>tal que (multiplosCon1y0 n) es la lista de los m\u00faltiplos de n cuyos d\u00edgitos son 1 \u00f3 0. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   take 4 (multiplosCon1y0 3)      ==  [111,1011,1101,1110]\n   take 3 (multiplosCon1y0 23)     ==  [110101,1011011,1101010]\n   head (multiplosCon1y0 1234658)  ==  110101101101000000110\n<\/pre>\n<p>Comprobar con QuickCheck que todo entero positivo tiene alg\u00fan m\u00faltiplo cuyos d\u00edgitos son 1 \u00f3 0.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Test.QuickCheck\n\n-- 1\u00aa definici\u00f3n\n-- =============\n\nmultiplosCon1y0 :: Integer -> [Integer]\nmultiplosCon1y0 n = [x | x <- multiplos n\n                       , todos1y0 x]\n\n-- (multiplos n) es la lista de los m\u00faltiplos de n. Por ejemplo, \n--    take 12 (multiplos 5)  ==  [5,10,15,20,25,30,35,40,45,50,55,60]\nmultiplos :: Integer -> [Integer]\nmultiplos n = [n,2*n..]\n\n-- (todos1y0 n) se verifica si todos los d\u00edgitos de n son el 1 o el\n-- 0. Por ejmplo,\n--    todos1y0 1101110  ==  True\n--    todos1y0 1102110  ==  False\ntodos1y0 :: Integer -> Bool\ntodos1y0 n = all (`elem` \"01\") (show n)\n\n-- 2\u00aa definici\u00f3n\n-- =============\n    \nmultiplosCon1y0b :: Integer -> [Integer] \nmultiplosCon1y0b n = \n    [x | x <- numerosCon1y0\n       , x `rem` n == 0] \n\n-- numerosCon1y0 es la lista de los n\u00fameros cuyos d\u00edgitos son 1 \u00f3 0. Por\n-- ejemplo,  \n--    ghci> take 15 numerosCon1y0\n--    [1,10,11,100,101,110,111,1000,1001,1010,1011,1100,1101,1110,1111]\nnumerosCon1y0 :: [Integer]\nnumerosCon1y0 = 1 : concat [[10*x,10*x+1] | x <- numerosCon1y0]\n\n-- Comparaci\u00f3n de eficiencia\n-- =========================\n\n--    \u03bb> head (multiplosCon1y0 9)\n--    111111111\n--    (7.70 secs, 10,853,320,456 bytes)\n--    \u03bb> head (multiplosCon1y0b 9)\n--    111111111\n--    (0.01 secs, 167,992 bytes)\n                        \n-- Comprobaci\u00f3n de la propiedad\n-- ============================\n                        \n-- La propiedad es\nprop_existe_multiplosCon1y0 :: Integer -> Property\nprop_existe_multiplosCon1y0 n = \n    n > 0 ==> (not . null) (multiplosCon1y0b n)\n\n-- La comprobaci\u00f3n es\n--    \u03bb> quickCheck prop_existe_multiplosCon1y0\n--    +++ OK, passed 100 tests.\n<\/pre>\n<h4>Pensamiento<\/h4>\n<blockquote><p>\nHuye del triste amor, amor pacato,<br \/>\nsin peligro, sin venda ni aventura,<br \/>\nque espera del amor prenda segura,<br \/>\nporque en amor locura es lo sensato.<\/p>\n<p>Antonio Machado\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Se observa que todos los primeros n\u00fameros naturales tienen al menos un m\u00faltiplo no nulo que est\u00e1 formado solamente por ceros y unos. Por ejemplo, 1&#215;10=10, 2&#215;5=10, 3&#215;37=111, 4&#215;25=100, 5&#215;2=10, 6&#215;185=1110; 7&#215;143=1001; 8X125=1000; 9&#215;12345679=111111111. Definir la funci\u00f3n multiplosCon1y0 :: Integer -> [Integer] tal que (multiplosCon1y0 n) es la lista de los m\u00faltiplos de n cuyos&#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":[41,8,12,26,415,11,31],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5202"}],"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=5202"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5202\/revisions"}],"predecessor-version":[{"id":5246,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5202\/revisions\/5246"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=5202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=5202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=5202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}