{"id":936,"date":"2015-01-08T06:00:56","date_gmt":"2015-01-08T04:00:56","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=936"},"modified":"2015-11-30T19:37:36","modified_gmt":"2015-11-30T17:37:36","slug":"2015-y-los-numeros-pitagoricos","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/2015-y-los-numeros-pitagoricos\/","title":{"rendered":"2015 y los n\u00fameros pitag\u00f3ricos"},"content":{"rendered":"<p>Un <strong>n\u00famero pitag\u00f3rico<\/strong> es un n\u00famero natural cuyo cuadrado se puede escribir como la suma de los cuadrados de dos n\u00fameros naturales no nulos; es decir, el n\u00famero natural a es pitag\u00f3rico si existen dos n\u00fameros naturales b y c distintos de cero tales que a\u00b2 = b\u00b2+c\u00b2. Por ejemplo, 5 es un n\u00famero pitag\u00f3rico ya que 5\u00b2 = 3\u00b2+4\u00b2 y tambi\u00e9n lo es 2015 ya que 2015\u00b2 = 1612\u00b2+1209\u00b2.<\/p>\n<p>Definir la sucesi\u00f3n<\/p>\n<pre lang=\"text\">\n    pitagoricos :: [Integer]\n<\/pre>\n<p>cuyos elementos son los n\u00fameros pitag\u00f3ricos. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   ghci> take 20 pitagoricos\n   [5,10,13,15,17,20,25,26,29,30,34,35,37,39,40,41,45,50,51,52]\n<\/pre>\n<p>Calcular la posici\u00f3n de 2015 en la sucesi\u00f3n.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Test.QuickCheck\n\n-- 1\u00aa definici\u00f3n\n-- =============\n\npitagoricos :: [Integer]\npitagoricos = [n | n <- [1..], esPitagorico n]\n\n-- (esPitagorico n) se verifica si n es pitag\u00f3rico. Por ejemplo,\n--    esPitagorico 5  ==  True\n--    esPitagorico 6  ==  False\nesPitagorico :: Integer -> Bool\nesPitagorico n = not (null (ternasPitagoricas n))\n\n-- (ternasPitagoricas n) es la lista de las ternas (n,a,b) tales que \n-- n\u00b2 = a\u00b2+b\u00b2 con b < a < n. Por ejemplo,\n--    ghci> ternasPitagoricas 5\n--    [(5,4,3)]\n--    ghci> ternasPitagoricas 2015\n--    [(2015,1612,1209),(2015,1736,1023),(2015,1860,775),(2015,1953,496)]\nternasPitagoricas :: Integer -> [(Integer,Integer,Integer)]\nternasPitagoricas n = \n    [(n,a,b) | a <- [1..n-1],\n               let b2 = n^2-a^2,\n               let b = round (sqrt (fromIntegral b2)),\n               b < a,     \n               b^2 == b2]\n\n-- 2\u00aa definici\u00f3n\n-- =============\n\npitagoricos2 :: [Integer]\npitagoricos2 = [round (sqrt (fromIntegral a)) | \n                a <- cuadrados,\n                let xs = takeWhile (< a) cuadrados,\n                any (\\b -> a-b `elem` xs) xs]\n\n-- cuadrados es la lista de los cuadrados de los n\u00fameros naturales. Por\n-- ejemplo, \n--    take 10 cuadrados  ==  [1,4,9,16,25,36,49,64,81,100]\ncuadrados :: [Integer]\ncuadrados = [n*n | n <- [1..]]\n\n-- El c\u00e1lculo de la posici\u00f3n de 2015 es\n--    ghci> length (takeWhile (< 2015) pitagoricos)\n--    1195\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Un n\u00famero pitag\u00f3rico es un n\u00famero natural cuyo cuadrado se puede escribir como la suma de los cuadrados de dos n\u00fameros naturales no nulos; es decir, el n\u00famero natural a es pitag\u00f3rico si existen dos n\u00fameros naturales b y c distintos de cero tales que a\u00b2 = b\u00b2+c\u00b2. Por ejemplo, 5 es un n\u00famero pitag\u00f3rico&#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":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/936"}],"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=936"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/936\/revisions"}],"predecessor-version":[{"id":1805,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/936\/revisions\/1805"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}