{"id":6249,"date":"2018-10-03T15:49:04","date_gmt":"2018-10-03T13:49:04","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=6249"},"modified":"2018-10-04T12:50:36","modified_gmt":"2018-10-04T10:50:36","slug":"i1m2018-ejercicios-de-definiciones-por-composicion-sobre-numeros-y-listas-1","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2018-ejercicios-de-definiciones-por-composicion-sobre-numeros-y-listas-1\/","title":{"rendered":"I1M2018: Ejercicios de definiciones por composici\u00f3n sobre n\u00fameros y listas (1)"},"content":{"rendered":"<p>En la clase de hoy del curso de <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-18\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> hemos comentado soluciones de los 8 primeros ejercicios de la 1\u00aa relaci\u00f3n sobre definiciones por composici\u00f3n de funciones sobre n\u00fameros, listas y booleanos.<\/p>\n<p>En el comentario de algunos ejercicios se ha indicado:<\/p>\n<ul>\n<li>el <em>uso creativo del fallo<\/em>; es decir, c\u00f3mo a partir de una definici\u00f3n incorrecta se puede obtener otra correcta y<\/li>\n<li>la comparaci\u00f3n de eficiencia de soluciones, activando las estad\u00edsticas con :set +s<\/li>\n<\/ul>\n<p>Los ejercicios y su soluci\u00f3n se muestran a continuaci\u00f3n<br \/>\n<!--more--><\/p>\n<pre lang=\"haskell\">\n-- ---------------------------------------------------------------------\n-- Introducci\u00f3n                                                       --\n-- ---------------------------------------------------------------------\n\n-- En esta relaci\u00f3n se plantean ejercicios con definiciones de funciones \n-- por composici\u00f3n sobre n\u00fameros, listas y booleanos.\n-- \n-- Para solucionar los ejercicios puede ser \u00fatil el manual de\n-- funciones de Haskell que se encuentra en http:\/\/bit.ly\/1uJZiqi y su\n-- resumen en http:\/\/bit.ly\/ZwSMHO\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 1. Definir la funci\u00f3n media3 tal que (media3 x y z) es\n-- la media aritm\u00e9tica de los n\u00fameros x, y y z. Por ejemplo, \n--    media3 1 3 8     ==  4.0\n--    media3 (-1) 0 7  ==  2.0\n--    media3 (-3) 0 3  ==  0.0\n-- ---------------------------------------------------------------------\n\nmedia3 x y z = (x+y+z)\/3\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 2. Definir la funci\u00f3n sumaMonedas tal que \n-- (sumaMonedas a b c d e) es la suma de los euros correspondientes a \n-- a monedas de 1 euro, b de 2 euros, c de 5 euros, d 10 euros y\n-- e de 20 euros. Por ejemplo,\n--    sumaMonedas 0 0 0 0 1  ==  20\n--    sumaMonedas 0 0 8 0 3  == 100\n--    sumaMonedas 1 1 1 1 1  ==  38\n-- ---------------------------------------------------------------------\n\nsumaMonedas a b c d e = 1*a+2*b+5*c+10*d+20*e\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 3. Definir la funci\u00f3n volumenEsfera tal que \n-- (volumenEsfera r) es el volumen de la esfera de radio r. Por ejemplo,\n--    volumenEsfera 10  ==  4188.790204786391\n-- Indicaci\u00f3n: Usar la constante pi.\n-- ---------------------------------------------------------------------\n\nvolumenEsfera r = (4\/3)*pi*r**3\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 4. Definir la funci\u00f3n areaDeCoronaCircular tal que \n-- (areaDeCoronaCircular r1 r2) es el \u00e1rea de una corona circular de\n-- radio interior r1 y radio exterior r2. Por ejemplo,\n--    areaDeCoronaCircular 1 2 == 9.42477796076938\n--    areaDeCoronaCircular 2 5 == 65.97344572538566\n--    areaDeCoronaCircular 3 5 == 50.26548245743669\n-- ---------------------------------------------------------------------\n\nareaDeCoronaCircular r1 r2 = pi*(r2**2 -r1**2) \n\n-- ---------------------------------------------------------------------\n-- Ejercicio 5. Definir la funci\u00f3n ultimaCifra tal que (ultimaCifra x)\n-- es la \u00faltima cifra del n\u00famero x. Por ejemplo,\n--    ultimaCifra 325  ==  5\n-- Indicaci\u00f3n: Usar la funci\u00f3n rem\n-- ---------------------------------------------------------------------\n\nultimaCifra x = rem x 10\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 6. Definir la funci\u00f3n maxTres tal que (maxTres x y z) es\n-- el m\u00e1ximo de x, y y z. Por ejemplo,\n--    maxTres 6 2 4  ==  6\n--    maxTres 6 7 4  ==  7\n--    maxTres 6 7 9  ==  9\n-- Indicaci\u00f3n: Usar la funci\u00f3n max.\n-- ---------------------------------------------------------------------\n\nmaxTres x y z = max x (max y z)\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 7. Definir la funci\u00f3n rota1 tal que (rota1 xs) es la lista\n-- obtenida poniendo el primer elemento de xs al final de la lista. Por\n-- ejemplo, \n--    rota1 [3,2,5,7]  ==  [2,5,7,3]\n-- ---------------------------------------------------------------------\n\nrota1 xs = tail xs ++ [head xs]\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 8. Definir la funci\u00f3n rota tal que (rota n xs) es la lista\n-- obtenida poniendo los n primeros elementos de xs al final de la\n-- lista. Por ejemplo, \n--    rota 1 [3,2,5,7]  ==  [2,5,7,3]\n--    rota 2 [3,2,5,7]  ==  [5,7,3,2]\n--    rota 3 [3,2,5,7]  ==  [7,3,2,5]\n-- ---------------------------------------------------------------------\n\nrota n xs = drop n xs ++ take n xs \n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la clase de hoy del curso de Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas hemos comentado soluciones de los 8 primeros ejercicios de la 1\u00aa relaci\u00f3n sobre definiciones por composici\u00f3n de funciones sobre n\u00fameros, listas y booleanos. En el comentario de algunos ejercicios se ha indicado: el uso creativo del fallo; es decir, c\u00f3mo&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","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":[320],"tags":[270,321],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/6249"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/comments?post=6249"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/6249\/revisions"}],"predecessor-version":[{"id":6251,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/6249\/revisions\/6251"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=6249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=6249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=6249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}