{"id":4469,"date":"2014-09-29T17:47:05","date_gmt":"2014-09-29T15:47:05","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=4469"},"modified":"2014-10-01T05:48:43","modified_gmt":"2014-10-01T03:48:43","slug":"i1m2014-ejercicios-de-definiciones-por-composicion-sobre-numeros-listas-y-booleanos","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2014-ejercicios-de-definiciones-por-composicion-sobre-numeros-listas-y-booleanos\/","title":{"rendered":"I1M2014: Ejercicios de definiciones por composici\u00f3n sobre n\u00fameros, listas y booleanos"},"content":{"rendered":"<p>En la clase de hoy del curso de <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-14\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> hemos comentado las soluciones de los ejercicios de la 1\u00aa relaci\u00f3n sobre definiciones por composici\u00f3n de funciones sobre n\u00fameros, listas y booleanos.<\/p>\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 |. 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\n-- ---------------------------------------------------------------------\n-- Ejercicio 12. Definir la funci\u00f3n finales tal que (finales n xs) es la\n-- lista formada por los n finales elementos de xs. Por ejemplo,\n--    finales 3 [2,5,4,7,9,6]  ==  [7,9,6]\n-- ---------------------------------------------------------------------\n \nfinales n xs = drop (length xs - n) xs \n \n-- ---------------------------------------------------------------------\n-- Ejercicio 13. Definir la funci\u00f3n segmento tal que (segmento m n xs) es\n-- la lista de los elementos de xs comprendidos entre las posiciones m y\n-- n. Por ejemplo,\n--    segmento 3 4 [3,4,1,2,7,9,0]  ==  [1,2]\n--    segmento 3 5 [3,4,1,2,7,9,0]  ==  [1,2,7]\n--    segmento 5 3 [3,4,1,2,7,9,0]  ==  []\n-- ---------------------------------------------------------------------\n \nsegmento m n xs = drop (m-1) (take n xs)\n \n-- ---------------------------------------------------------------------\n-- Ejercicio 14. Definir la funci\u00f3n extremos tal que (extremos n xs) es\n-- la lista formada por los n primeros elementos de xs y los n finales\n-- elementos de xs. Por ejemplo, \n--    extremos 3 [2,6,7,1,2,4,5,8,9,2,3]  ==  [2,6,7,9,2,3]\n-- ---------------------------------------------------------------------\n\nextremos n xs = take n xs ++ drop (length xs - n) xs\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 15. Definir la funci\u00f3n mediano tal que (mediano x y z) es el\n-- n\u00famero mediano de los tres n\u00fameros x, y y z. Por ejemplo,\n--    mediano 3 2 5  ==  3\n--    mediano 2 4 5  ==  4\n--    mediano 2 6 5  ==  5\n--    mediano 2 6 6  ==  6\n-- Indicaci\u00f3n: Usar maximum y minimum.\n-- ---------------------------------------------------------------------\n \nmediano x y z = x + y + z- minimum [x,y,z] - maximum [x,y,z]\n \n-- ---------------------------------------------------------------------\n-- Ejercicio 16. Definir la funci\u00f3n tresIguales tal que \n-- (tresIguales x y z) se verifica si los elementos x, y y z son\n-- iguales. Por ejemplo, \n--    tresIguales 4 4 4  ==  True\n--    tresIguales 4 3 4  ==  False\n-- ---------------------------------------------------------------------\n\ntresIguales x y z = x == y && y == z\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 17. Definir la funci\u00f3n tresDiferentes tal que \n-- (tresDiferentes x y z) se verifica si los elementos x, y y z son\n-- distintos. Por ejemplo, \n--    tresDiferentes 3 5 2  ==  True\n--    tresDiferentes 3 5 3  ==  False\n-- ---------------------------------------------------------------------\n\ntresDiferentes x y z = x \/= y && x \/= z && y \/= z\n\n-- ---------------------------------------------------------------------\n-- Ejercicio 18. Definir la funci\u00f3n cuatroIguales tal que \n-- (cuatroIguales x y z u) se verifica si los elementos x, y, z y u son\n-- iguales. Por ejemplo, \n--    cuatroIguales 5 5 5 5   ==  True\n--    cuatroIguales 5 5 4 5   ==  False\n-- Indicaci\u00f3n: Usar la funci\u00f3n tresIguales.\n-- ---------------------------------------------------------------------\n\ncuatroIguales x y z u = x == y && tresIguales y z u\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 las soluciones de los ejercicios de la 1\u00aa relaci\u00f3n sobre definiciones por composici\u00f3n de funciones sobre n\u00fameros, listas y booleanos. Los ejercicios y su soluci\u00f3n se muestran a continuaci\u00f3n<\/p>\n","protected":false},"author":2,"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":[238],"tags":[270,305],"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\/4469"}],"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=4469"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/4469\/revisions"}],"predecessor-version":[{"id":4470,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/4469\/revisions\/4470"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=4469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=4469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=4469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}