{"id":938,"date":"2015-01-09T06:00:36","date_gmt":"2015-01-09T04:00:36","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=938"},"modified":"2015-11-30T19:35:08","modified_gmt":"2015-11-30T17:35:08","slug":"triangulos-de-heron","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/triangulos-de-heron\/","title":{"rendered":"Tri\u00e1ngulos de Her\u00f3n"},"content":{"rendered":"<p>Un <a href=\"http:\/\/bit.ly\/1vUnUte\">tri\u00e1ngulo de Her\u00f3n<\/a> es un tri\u00e1ngulo tal que sus lados y su \u00e1rea son n\u00fameros enteros. Su nombre se debe al matem\u00e1tico griego Her\u00f3n de Alejandr\u00eda que descubri\u00f3 la f\u00f3rmula para calcular el \u00e1rea de un tri\u00e1ngulo a partir de sus lados.<\/p>\n<p>La f\u00f3rmula de Her\u00f3n dice que el \u00e1rea de un tri\u00e1ngulo cuyos lados miden a, b y c es<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Csqrt%7Bs%28s-a%29%28s-b%29%28s-c%29%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;sqrt{s(s-a)(s-b)(s-c)}\" class=\"latex\" \/><br \/>\ndonde s es el semiper\u00edmetro del tri\u00e1ngulo; es decir,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=s+%3D+%5Cdisplaystyle+%5Cfrac%7Ba%2Bb%2Bc%7D%7B2%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"s = &#92;displaystyle &#92;frac{a+b+c}{2}\" class=\"latex\" \/><\/p>\n<p>Un ejemplo de tri\u00e1ngulo de Her\u00f3n es el tri\u00e1ngulo de lados 3, 4 y 5 cuya \u00e1rea es 6. Se puede observar que cualquier tri\u00e1ngulo cuyos lados sean m\u00faltiplos de 3, 4 y 5 tambi\u00e9n es de Her\u00f3n; por ejemplo, el de lados 6, 8 y 10 tambi\u00e9n lo es.<\/p>\n<p>Se dice que un tri\u00e1ngulo de Her\u00f3n es primitivo si el m\u00e1ximo com\u00fan divisor de sus lados es 1. Por ejemplo, el de lados 3, 4 y 5 es primitivo; pero el de lados 6, 8 y 10 no lo es.<\/p>\n<p>Definir la sucesi\u00f3n<\/p>\n<pre lang=\"text\">\n   triangulosHeronPrimitivos :: [(Int,Int,Int)]\n<\/pre>\n<p>tal que sus elementos son los tri\u00e1ngulos de Her\u00f3n primitivos ordenados por su per\u00edmetro. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   ghci> take 7 triangulosHeronPrimitivos\n   [(3,4,5),(5,5,6),(5,5,8),(5,12,13),(4,13,15),(10,13,13),(9,10,17)]\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\ntriangulosHeronPrimitivos :: [(Int,Int,Int)]\ntriangulosHeronPrimitivos =\n    [(a,b,c) | n <- [3..], \n               c <- [1..n], \n               b <- [1..c], \n               let a = n-b-c, \n               0 < a, a <= b,\n               esTrianguloHeronPrimitivo a b c]\n\n-- (esTrianguloHeronPrimitivo a b c) se verifica si a, b y c \n-- (con a <= b <= c) son los lados de un tri\u00e1ngulo de Her\u00f3n\n-- primitivo. Por ejemplo,  \n--    esTrianguloHeronPrimitivo 3 4  5  ==  True\n--    esTrianguloHeronPrimitivo 1 1  2  ==  False\n--    esTrianguloHeronPrimitivo 6 8 10  ==  False\nesTrianguloHeronPrimitivo :: Int -> Int -> Int -> Bool\nesTrianguloHeronPrimitivo a b c =\n    esTriangulo a b c && \n    mcd a b c == 1 &&\n    p `mod` 2 == 0 && \n    esCuadrado (s*(s-a)*(s-b)*(s-c))\n    where p = a+b+c\n          s = p `div` 2\n\n-- (esTriangulo a b c) se verifica si los n\u00fameros a, b y c (con a <= b <= c)\n-- pueden ser los lados de un tri\u00e1ngulo (es decir, cada uno es menor que\n-- la suma de los otros dos). Por ejemplo,\n--    esTriangulo 3 4 5  ==  True\n--    esTriangulo 1 1 2  ==  False\nesTriangulo :: Int -> Int -> Int -> Bool\nesTriangulo a b c = c < a+b\n\n-- (esCuadrado n) se verifica si n es un cuadrado perfecto. Por ejemplo, \n--    esCuadrado 25  ==  True\n--    esCuadrado 26  ==  False\nesCuadrado :: Int -> Bool\nesCuadrado n = x*x == n\n    where x = round (sqrt (fromIntegral n))\n\n-- (mcd a b c) es el m\u00e1ximo com\u00fan divisor de a, b y c. Por ejemplo, \n--    mcd 3 4 5   ==  1\n--    mcd 6 8 10  ==  2\nmcd :: Int -> Int -> Int -> Int\nmcd a b c = gcd a (gcd b c)\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Un tri\u00e1ngulo de Her\u00f3n es un tri\u00e1ngulo tal que sus lados y su \u00e1rea son n\u00fameros enteros. Su nombre se debe al matem\u00e1tico griego Her\u00f3n de Alejandr\u00eda que descubri\u00f3 la f\u00f3rmula para calcular el \u00e1rea de un tri\u00e1ngulo a partir de sus lados. La f\u00f3rmula de Her\u00f3n dice que el \u00e1rea de un tri\u00e1ngulo 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":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/938"}],"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=938"}],"version-history":[{"count":12,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/938\/revisions"}],"predecessor-version":[{"id":1804,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/938\/revisions\/1804"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}