I1M2015: Ejercicios de definiciones por composición sobre números, listas y booleanos
En la segunda parte e la clase de hoy del curso de Informática de 1º del Grado en Matemáticas hemos comentado las soluciones de los ejercicios de la 1ª relación sobre definiciones por composición de funciones sobre números, listas y booleanos.
Los ejercicios y su solución se muestran a continuación
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
-- --------------------------------------------------------------------- -- Introducción -- -- --------------------------------------------------------------------- -- En esta relación se plantean ejercicios con definiciones de funciones -- por composición sobre números, listas y booleanos. -- -- Para solucionar los ejercicios puede ser útil el manual de -- funciones de Haskell que se encuentra en http://bit.ly/1uJZiqi y su -- resumen en http://bit.ly/ZwSMHO -- --------------------------------------------------------------------- -- Ejercicio 1. Definir la función media3 tal que (media3 x y z) es -- la media aritmética de los números x, y y z. Por ejemplo, -- media3 1 3 8 == 4.0 -- media3 (-1) 0 7 == 2.0 -- media3 (-3) 0 3 == 0.0 -- --------------------------------------------------------------------- media3 x y z = (x+y+z)/3 -- --------------------------------------------------------------------- -- Ejercicio 2. Definir la función sumaMonedas tal que -- (sumaMonedas a b c d e) es la suma de los euros correspondientes a -- a monedas de 1 euro, b de 2 euros, c de 5 euros, d 10 euros y -- e de 20 euros. Por ejemplo, -- sumaMonedas 0 0 0 0 1 == 20 -- sumaMonedas 0 0 8 0 3 == 100 -- sumaMonedas 1 1 1 1 1 == 38 -- --------------------------------------------------------------------- sumaMonedas a b c d e = 1*a+2*b+5*c+10*d+20*e -- --------------------------------------------------------------------- -- Ejercicio 3. Definir la función volumenEsfera tal que -- (volumenEsfera r) es el volumen de la esfera de radio r. Por ejemplo, -- volumenEsfera 10 == 4188.790204786391 -- Indicación: Usar la constante pi. -- --------------------------------------------------------------------- volumenEsfera r = (4/3)*pi*r^3 -- --------------------------------------------------------------------- -- Ejercicio 4. Definir la función areaDeCoronaCircular tal que -- (areaDeCoronaCircular r1 r2) es el área de una corona circular de -- radio interior r1 y radio exterior r2. Por ejemplo, -- areaDeCoronaCircular 1 2 == 9.42477796076938 -- areaDeCoronaCircular 2 5 == 65.97344572538566 -- areaDeCoronaCircular 3 5 == 50.26548245743669 -- --------------------------------------------------------------------- areaDeCoronaCircular r1 r2 = pi*(r2^2 -r1^2) -- --------------------------------------------------------------------- -- Ejercicio 5. Definir la función ultimaCifra tal que (ultimaCifra x) -- es la última cifra del nímero x. Por ejemplo, -- ultimaCifra 325 == 5 -- Indicación: Usar la función rem -- --------------------------------------------------------------------- ultimaCifra x = rem x 10 -- --------------------------------------------------------------------- -- Ejercicio 6. Definir la función maxTres tal que (maxTres x y z) es -- el máximo de x, y y z. Por ejemplo, -- maxTres 6 2 4 == 6 -- maxTres 6 7 4 == 7 -- maxTres 6 7 9 == 9 -- Indicación: Usar la función max. -- --------------------------------------------------------------------- maxTres x y z = max x (max y z) -- --------------------------------------------------------------------- -- Ejercicio 7. Definir la función rota1 tal que (rota1 xs) es la lista -- obtenida poniendo el primer elemento de xs al final de la lista. Por -- ejemplo, -- rota1 [3,2,5,7] == [2,5,7,3] -- --------------------------------------------------------------------- rota1 xs = tail xs ++ [head xs] -- --------------------------------------------------------------------- -- Ejercicio 8. Definir la función rota tal que (rota n xs) es la lista -- obtenida poniendo los n primeros elementos de xs al final de la -- lista. Por ejemplo, -- rota 1 [3,2,5,7] == [2,5,7,3] -- rota 2 [3,2,5,7] == [5,7,3,2] -- rota 3 [3,2,5,7] == [7,3,2,5] -- --------------------------------------------------------------------- rota n xs = drop n xs ++ take n xs -- --------------------------------------------------------------------- -- Ejercicio 9. Definir la función rango tal que (rango xs) es la -- lista formada por el menor y mayor elemento de xs. -- rango [3,2,7,5] == [2,7] -- Indicación: Se pueden usar minimum y maximum. -- --------------------------------------------------------------------- rango xs = [minimum xs, maximum xs] -- --------------------------------------------------------------------- -- Ejercicio 10. Definir la función palindromo tal que (palindromo xs) se -- verifica si xs es un palíndromo; es decir, es lo mismo leer xs de -- izquierda a derecha que de derecha a izquierda. Por ejemplo, -- palindromo [3,2,5,2,3] == True -- palindromo [3,2,5,6,2,3] == False -- --------------------------------------------------------------------- palindromo xs = xs == reverse xs -- --------------------------------------------------------------------- -- Ejercicio 11. Definir la función interior tal que (interior xs) es la -- lista obtenida eliminando los extremos de la lista |. Por ejemplo, -- interior [2,5,3,7,3] == [5,3,7] -- interior [2..7] == [3,4,5,6] -- --------------------------------------------------------------------- interior xs = tail (init xs) -- --------------------------------------------------------------------- -- Ejercicio 12. Definir la función finales tal que (finales n xs) es la -- lista formada por los n finales elementos de xs. Por ejemplo, -- finales 3 [2,5,4,7,9,6] == [7,9,6] -- --------------------------------------------------------------------- finales n xs = drop (length xs - n) xs -- --------------------------------------------------------------------- -- Ejercicio 13. Definir la función segmento tal que (segmento m n xs) es -- la lista de los elementos de xs comprendidos entre las posiciones m y -- n. Por ejemplo, -- segmento 3 4 [3,4,1,2,7,9,0] == [1,2] -- segmento 3 5 [3,4,1,2,7,9,0] == [1,2,7] -- segmento 5 3 [3,4,1,2,7,9,0] == [] -- --------------------------------------------------------------------- segmento m n xs = drop (m-1) (take n xs) -- --------------------------------------------------------------------- -- Ejercicio 14. Definir la función extremos tal que (extremos n xs) es -- la lista formada por los n primeros elementos de xs y los n finales -- elementos de xs. Por ejemplo, -- extremos 3 [2,6,7,1,2,4,5,8,9,2,3] == [2,6,7,9,2,3] -- --------------------------------------------------------------------- extremos n xs = take n xs ++ drop (length xs - n) xs -- --------------------------------------------------------------------- -- Ejercicio 15. Definir la función mediano tal que (mediano x y z) es el -- número mediano de los tres números x, y y z. Por ejemplo, -- mediano 3 2 5 == 3 -- mediano 2 4 5 == 4 -- mediano 2 6 5 == 5 -- mediano 2 6 6 == 6 -- Indicación: Usar maximum y minimum. -- --------------------------------------------------------------------- mediano x y z = x + y + z- minimum [x,y,z] - maximum [x,y,z] -- --------------------------------------------------------------------- -- Ejercicio 16. Definir la función tresIguales tal que -- (tresIguales x y z) se verifica si los elementos x, y y z son -- iguales. Por ejemplo, -- tresIguales 4 4 4 == True -- tresIguales 4 3 4 == False -- --------------------------------------------------------------------- tresIguales x y z = x == y && y == z -- --------------------------------------------------------------------- -- Ejercicio 17. Definir la función tresDiferentes tal que -- (tresDiferentes x y z) se verifica si los elementos x, y y z son -- distintos. Por ejemplo, -- tresDiferentes 3 5 2 == True -- tresDiferentes 3 5 3 == False -- --------------------------------------------------------------------- tresDiferentes x y z = x /= y && x /= z && y /= z -- --------------------------------------------------------------------- -- Ejercicio 18. Definir la función cuatroIguales tal que -- (cuatroIguales x y z u) se verifica si los elementos x, y, z y u son -- iguales. Por ejemplo, -- cuatroIguales 5 5 5 5 == True -- cuatroIguales 5 5 4 5 == False -- Indicación: Usar la función tresIguales. -- --------------------------------------------------------------------- cuatroIguales x y z u = x == y && tresIguales y z u |