{"id":5535,"date":"2020-02-10T05:30:13","date_gmt":"2020-02-10T03:30:13","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=5535"},"modified":"2020-02-17T08:21:33","modified_gmt":"2020-02-17T06:21:33","slug":"conjetura-de-collatz-generalizada","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/conjetura-de-collatz-generalizada\/","title":{"rendered":"Conjetura de Collatz generalizada"},"content":{"rendered":"<p>Sea p un n\u00famero primo. Toma un n\u00famero natural positivo, si es divisible entre un n\u00famero primo menor que p div\u00eddelo entre el menor de dicho divisores, y en otro caso multipl\u00edcalo por p y s\u00famale uno; si el resultado no es igual a uno, repite el proceso. Por ejemplo, para p = 7 y empezando en 42 el proceso es<\/p>\n<pre lang=\"text\">\n   42\n   -> 21   [= 42\/2]\n   -> 7    [= 21\/3]\n   -> 50   [= 7*7+1]\n   -> 25   [= 50\/5]\n   -> 5    [= 25\/5]\n   -> 1    [= 5\/5]\n<\/pre>\n<p>La <strong>conjetura de Collatz generalizada<\/strong> afirma que este proceso siempre acaba en un  n\u00famero finito de pasos.<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   collatzGeneral :: Integer -> Integer -> [Integer]\n<\/pre>\n<p>tal que (collatzGeneral p x) es la sucesi\u00f3n de los elementos obtenidos en el proceso anterior para el primo p enpezando en x. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   take 15 (collatzGeneral 7 42) == [42,21,7,50,25,5,1,8,4,2,1,8,4,2,1]\n   take 15 (collatzGeneral 3  6) == [6,3,10,5,16,8,4,2,1,4,2,1,4,2,1]\n   take 15 (collatzGeneral 5  6) == [6,3,1,6,3,1,6,3,1,6,3,1,6,3,1]\n   take 15 (collatzGeneral 7  6) == [6,3,1,8,4,2,1,8,4,2,1,8,4,2,1]\n   take 15 (collatzGeneral 9  6) == [6,3,1,10,5,1,10,5,1,10,5,1,10,5,1]\n<\/pre>\n<p>Comprobar con QuickCheck que se verifica la conjetura de Collatz generalizada; es decir, para todos enteros positivos n, x si p es el primo n-\u00e9simo entonces 1 pertenece a (collatzGeneral p x).<\/p>\n<p><strong>Nota<\/strong>: El ejercicio et\u00e1 basado en el art\u00edculo <a href=\"http:\/\/bit.ly\/36VcShl\">Los primos de la conjetura de Collatz<\/a> publicado la semana pasada por Francisco R. Villatoro en su blog <a href=\"https:\/\/francis.naukas.com\/\">La Ciencia de la Mula Francis<\/a>.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Numbers.Primes (primeFactors, primes)\nimport Test.QuickCheck\n\ncollatzGeneral :: Integer -> Integer -> [Integer]\ncollatzGeneral p x =\n  iterate (siguiente p) x\n\nsiguiente :: Integer -> Integer -> Integer\nsiguiente p x \n  | null xs   = p * x + 1\n  | otherwise = x `div` head xs\n  where xs = takeWhile (<p) (primeFactors x)\n\nprop_collatzGeneral :: Int -> Integer -> Property\nprop_collatzGeneral n x =\n  n > 0 && x > 0 ==>\n  1 `elem` collatzGeneral p x\n  where p = primes !! n \n\n-- La comprobaci\u00f3n es\n--    \u03bb> quickCheck prop_collatzGeneral\n--    +++ OK, passed 100 tests.\n<\/pre>\n<h4>Otras soluciones<\/h4>\n<ul>\n<li>Se pueden escribir otras soluciones en los comentarios.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=\u00bbhaskell\u00bb&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n<h4>Pensamiento<\/h4>\n<blockquote><p>\n\u00abLas matem\u00e1ticas son la ciencia que utiliza palabras f\u00e1ciles para ideas dif\u00edciles.\u00bb<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Edward_Kasner\">Edward Kasner<\/a> y <a href=\"https:\/\/en.wikipedia.org\/wiki\/James_R._Newman\">James R. Newman<\/a><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Sea p un n\u00famero primo. Toma un n\u00famero natural positivo, si es divisible entre un n\u00famero primo menor que p div\u00eddelo entre el menor de dicho divisores, y en otro caso multipl\u00edcalo por p y s\u00famale uno; si el resultado no es igual a uno, repite el proceso. Por ejemplo, para p = 7 y&#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":[30,26,71,50,141,11,247,173,6,34,146],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5535"}],"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=5535"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5535\/revisions"}],"predecessor-version":[{"id":5581,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5535\/revisions\/5581"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=5535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=5535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=5535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}