{"id":5767,"date":"2017-09-29T19:00:52","date_gmt":"2017-09-29T17:00:52","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=5767"},"modified":"2018-10-04T12:34:38","modified_gmt":"2018-10-04T10:34:38","slug":"i1m2017-ejercicios-de-definiciones-por-composicion-sobre-numeros-y-listas","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2017-ejercicios-de-definiciones-por-composicion-sobre-numeros-y-listas\/","title":{"rendered":"I1M2017: Ejercicios de definiciones por composici\u00f3n sobre n\u00fameros y listas"},"content":{"rendered":"<p>En la segunda parte de la clase de hoy del curso de <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-17\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> hemos comentado soluciones de los 11 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 comentado:<\/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\u00edmero 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\n-- ---------------------------------------------------------------------\n-- Ejercicio 9. Definir la funci\u00f3n rango tal que (rango xs) es la\n-- lista formada por el menor y mayor elemento de xs.\n--    rango [3,2,7,5]  ==  [2,7]\n-- Indicaci\u00f3n: Se pueden usar minimum y maximum.\n-- ---------------------------------------------------------------------\n\nrango xs = [minimum xs, maximum xs]\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 10. Definir la funci\u00f3n palindromo tal que (palindromo xs) se\n-- verifica si xs es un pal\u00edndromo; es decir, es lo mismo leer xs de\n-- izquierda a derecha que de derecha a izquierda. Por ejemplo,\n--    palindromo [3,2,5,2,3]    ==  True\n--    palindromo [3,2,5,6,2,3]  ==  False\n-- ---------------------------------------------------------------------\n\npalindromo xs = xs == reverse xs\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 11. Definir la funci\u00f3n interior tal que (interior xs) es la\n-- lista obtenida eliminando los extremos de la lista xs. Por ejemplo,\n--    interior [2,5,3,7,3]  ==  [5,3,7]\n--    interior [2..7]       ==  [3,4,5,6]\n-- ---------------------------------------------------------------------\n\ninterior xs = tail (init xs)\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la segunda parte de la clase de hoy del curso de Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas hemos comentado soluciones de los 11 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 comentado: el uso creativo del&#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":[265],"tags":[270,316],"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\/5767"}],"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=5767"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/5767\/revisions"}],"predecessor-version":[{"id":6248,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/5767\/revisions\/6248"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=5767"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=5767"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=5767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}