{"id":5235,"date":"2019-12-12T05:30:24","date_gmt":"2019-12-12T03:30:24","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=5235"},"modified":"2019-12-19T07:38:18","modified_gmt":"2019-12-19T05:38:18","slug":"evaluacion-de-arboles-de-expresiones-aritmeticas","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/evaluacion-de-arboles-de-expresiones-aritmeticas\/","title":{"rendered":"Evaluaci\u00f3n de \u00e1rboles de expresiones aritm\u00e9ticas"},"content":{"rendered":"<p>Las expresiones aritm\u00e9ticas se pueden representar como \u00e1rboles con n\u00fameros en las hojas y operaciones en los nodos. Por ejemplo, la expresi\u00f3n \u00ab9-2*4\u00bb se puede representar por el \u00e1rbol<\/p>\n<pre lang=\"text\">\n     - \n    \/ \\\n   9   *\n      \/ \\\n     2   4\n<\/pre>\n<p>Definiendo el tipo de dato Arbol por<\/p>\n<pre lang=\"text\">\n   data Arbol = H Int | N (Int -> Int -> Int) Arbol Arbol\n<\/pre>\n<p>la representaci\u00f3n del \u00e1rbol anterior es<\/p>\n<pre lang=\"text\">\n   N (-) (H 9) (N (*) (H 2) (H 4))\n<\/pre>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   valor :: Arbol -> Int\n<\/pre>\n<p>tal que (valor a) es el valor de la expresi\u00f3n aritm\u00e9tica correspondiente al \u00e1rbol a. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   valor (N (-) (H 9) (N (*) (H 2) (H 4)))    ==  1\n   valor (N (+) (H 9) (N (*) (H 2) (H 4)))    ==  17\n   valor (N (+) (H 9) (N (div) (H 4) (H 2)))  ==  11\n   valor (N (+) (H 9) (N (max) (H 4) (H 2)))  ==  13\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\ndata Arbol = H Int | N (Int -> Int -> Int) Arbol Arbol\n\nvalor :: Arbol -> Int\nvalor (H x)     = x\nvalor (N f i d) = f (valor i) (valor d)\n<\/pre>\n<h4>Pensamiento<\/h4>\n<blockquote><p>\nEn cierto modo, las matem\u00e1ticas no son el arte de responder preguntas matem\u00e1ticas, es el arte de hacer las preguntas correctas, las preguntas que te dan una idea, las que te gu\u00edan en direcciones interesantes, las que se conectan con muchas otras preguntas interesantes, las que tienen hermosas respuestas. ~ Gregory Chaitin\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Las expresiones aritm\u00e9ticas se pueden representar como \u00e1rboles con n\u00fameros en las hojas y operaciones en los nodos. Por ejemplo, la expresi\u00f3n \u00ab9-2*4\u00bb se puede representar por el \u00e1rbol &#8211; \/ \\ 9 * \/ \\ 2 4 Definiendo el tipo de dato Arbol por data Arbol = H Int | N (Int -> Int&#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":[6,133],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5235"}],"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=5235"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5235\/revisions"}],"predecessor-version":[{"id":5277,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5235\/revisions\/5277"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=5235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=5235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=5235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}