{"id":7198,"date":"2022-08-05T06:00:50","date_gmt":"2022-08-05T04:00:50","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=7198"},"modified":"2022-12-14T16:59:47","modified_gmt":"2022-12-14T14:59:47","slug":"numeros-de-pentanacci","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/numeros-de-pentanacci\/","title":{"rendered":"N\u00fameros de Pentanacci"},"content":{"rendered":"<p>Los n\u00fameros de Fibonacci se definen mediante las ecuaciones<\/p>\n<pre lang=\"text\">\n   F(0) = 0\n   F(1) = 1\n   F(n) = F(n-1) + F(n-2), si n > 1\n<\/pre>\n<p>Los primeros n\u00fameros de Fibonacci son<\/p>\n<pre lang=\"text\">\n   0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, ...\n<\/pre>\n<p>Una generalizaci\u00f3n de los anteriores son los n\u00fameros de Pentanacci definidos por las siguientes ecuaciones<\/p>\n<pre lang=\"text\">\n   P(0) = 0\n   P(1) = 1\n   P(2) = 1\n   P(3) = 2\n   P(4) = 4\n   P(n) = P(n-1) + P(n-2) + P(n-3) + P(n-4) + P(n-5), si n > 4\n<\/pre>\n<p>Los primeros n\u00fameros de Pentanacci son<\/p>\n<pre lang=\"text\">\n  0, 1, 1, 2, 4, 8, 16, 31, 61, 120, 236, 464, 912, 1793, 3525, ...\n<\/pre>\n<p>Definir la sucesi\u00f3n<\/p>\n<pre lang=\"text\">\n   pentanacci :: [Integer]\n<\/pre>\n<p>cuyos elementos son los n\u00fameros de Pentanacci. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> take 15 pentanacci\n   [0,1,1,2,4,8,16,31,61,120,236,464,912,1793,3525]\n   \u03bb> (pentanacci !! (10^5)) `mod` (10^30) \n   482929150584077921552549215816\n   231437922897686901289110700696\n   \u03bb> length (show (pentanacci !! (10^5)))\n   29357\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (zipWith5)\nimport Test.QuickCheck (NonNegative (NonNegative), quickCheckWith, maxSize, stdArgs)\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\npentanacci1 :: [Integer]\npentanacci1 = [pent n | n <- [0..]]\n\npent :: Integer -> Integer\npent 0 = 0\npent 1 = 1\npent 2 = 1\npent 3 = 2\npent 4 = 4\npent n = pent (n-1) + pent (n-2) + pent (n-3) + pent (n-4) + pent (n-5)\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\npentanacci2 :: [Integer]\npentanacci2 = \n  0 : 1 : 1 : 2 : 4 : zipWith5 f (r 0) (r 1) (r 2) (r 3) (r 4)\n  where f a b c d e = a+b+c+d+e\n        r n         = drop n pentanacci2\n\n-- 3\u00aa soluci\u00f3n\n-- ===========\n\npentanacci3 :: [Integer]\npentanacci3 = p (0, 1, 1, 2, 4)\n  where p (a, b, c, d, e) = a : p (b, c, d, e, a + b + c + d + e)\n\n-- 4\u00aa soluci\u00f3n\n-- ===========\n\npentanacci4 :: [Integer]\npentanacci4 = 0: 1: 1: 2: 4: p pentanacci4\n  where p (a:b:c:d:e:xs) = (a+b+c+d+e): p (b:c:d:e:xs)\n\n-- Comprobaci\u00f3n de equivalencia\n-- ============================\n\n-- La propiedad es\nprop_pentanacci :: NonNegative Int -> Bool\nprop_pentanacci (NonNegative n) =\n  all (== pentanacci1 !! n)\n      [pentanacci1 !! n,\n       pentanacci2 !! n,\n       pentanacci3 !! n]\n\n-- La comprobaci\u00f3n es\n--    \u03bb> quickCheckWith (stdArgs {maxSize=25}) prop_pentanacci\n--    +++ OK, passed 100 tests.\n\n-- Comparaci\u00f3n de eficiencia\n-- =========================\n\n-- La comparaci\u00f3n es\n--    \u03bb> pentanacci1 !! 25\n--    5976577\n--    (3.18 secs, 1,025,263,896 bytes)\n--    \u03bb> pentanacci2 !! 25\n--    5976577\n--    (0.00 secs, 562,360 bytes)\n--    \n--    \u03bb> length (show (pentanacci2 !! (10^5)))\n--    29357\n--    (1.04 secs, 2,531,259,408 bytes)\n--    \u03bb> length (show (pentanacci3 !! (10^5)))\n--    29357\n--    (1.00 secs, 2,548,868,384 bytes)\n--    \u03bb> length (show (pentanacci4 !! (10^5)))\n--    29357\n--    (0.96 secs, 2,580,065,520 bytes)\n<\/pre>\n<p>El c\u00f3digo se encuentra en <a href=\"https:\/\/github.com\/jaalonso\/Exercitium\/blob\/main\/src\/Numeros_de_Pentanacci.hs\">GitHub<\/a>.<\/p>\n<h4>Referencias<\/h4>\n<ul>\n<li>Tito III Piezas y Eric Weisstein, <a href=\"https:\/\/bit.ly\/3cPJGkF\">Pentanacci number<\/a>.<\/li>\n<li>N. J. A. Sloane, <a href=\"https:\/\/oeis.org\/A001591\">Sucesi\u00f3n A001591 de la OEIS<\/a>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Los n\u00fameros de Fibonacci se definen mediante las ecuaciones F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n-2), si n > 1 Los primeros n\u00fameros de Fibonacci son 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, &#8230; Una generalizaci\u00f3n de los anteriores son los n\u00fameros&#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":[521],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/7198"}],"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=7198"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/7198\/revisions"}],"predecessor-version":[{"id":7720,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/7198\/revisions\/7720"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=7198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=7198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=7198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}