Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
introalg:taller07_3 [2007/04/24 23:24] – factorial problema, fromInteger aclaracion nicolasw | introalg:taller07_3 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1 |
---|
| |
<code> | <code> |
fib n = fib (n-1) + fib (n-2) | fib (n+2) = fib (n+1) + fib n |
</code> | </code> |
| |
| |
Notar que en las funciones de tipo "map" toman siempre a una lista como argumento y devuelven una lista como resultado; la lista de resultado se obtiene de **concatenar** el resultado de aplicar una función dada a cada uno de los elementos de la lista argumento. | Notar que en las funciones de tipo "map" toman siempre a una lista como argumento y devuelven una lista como resultado; la lista de resultado se obtiene de **concatenar** el resultado de aplicar una función dada a cada uno de los elementos de la lista argumento. |
| |
| |
| |
Main> emparejar ["Pepa","Lola","Juan","Pili","Pedro"] | Main> emparejar ["Pepa","Lola","Juan","Pili","Pedro"] |
[("Pepa","Lola"),("Juan","Pili"),("Pedro","Pedro")] | [("Pepa","Lola"),("Juan","Pili"),("Pedro","Pedro")] |
| |
| |
===== Ejercicios ===== | ===== Ejercicios ===== |
probar con [345,20,46,0], [] y [3]. | probar con [345,20,46,0], [] y [3]. |
| |
* Generalizar la función //veintePorCiento// definiendo //porCiento.n.xs//, //porCiento : Int -> [Float] -> [Float]// que dado un número //n// y una lista, devuelve el //n// por ciento de cada uno de los elementos de la lista. Ejemplo: //porCiento 10 [200,87,6] = [20,8.7,0.6]// \\ | * Generalizar la función //veintePorCiento// definiendo //porCiento.n.xs//, //porCiento : Int -> [Float] -> [Float]// que dado un número //n// y una lista, devuelve el //n// por ciento de cada uno de los elementos de la lista. Ejemplo: //porCiento 10 [200,87,6] = [20,8.7,0.6]//. Puede ser útil la función ''fromIntegral'' que transforma un ''Int'' en ''Float''. |
Puede ser útil la funcion ''fromInteger'' que transforma un ''Int'' en ''Float''. | |
| |
* Generalizar la función //duplicar// definiendo //multiplicar.n.xs//, //multiplicar : Int -> [Int] -> [Int]// que dada un número //n// y una lista, multiplica cada uno de los elementos por //n//. Ejemplo: //multiplicar.3.[3,0,-2] = [9,0,-6]//. | * Generalizar la función //duplicar// definiendo //multiplicar.n.xs//, //multiplicar : Int -> [Int] -> [Int]// que dada un número //n// y una lista, multiplica cada uno de los elementos por //n//. Ejemplo: //multiplicar.3.[3,0,-2] = [9,0,-6]//. |
=== Miscelánea === | === Miscelánea === |
| |
* Escribir la función que calcula la Sucesión de Fibonacci, //fib.n//, //fib : Int -> Int//, que se define así: //fib n = fib (n-1) + fib (n-2)//. | * Escribir la función que calcula la Sucesión de Fibonacci, //fib.n//, //fib : Int -> Int//, que se define así: //fib (n+2) = fib (n+1) + fib n//. |
| |
probar con 4, 3, 2, 1 y 0. | probar con 4, 3, 2, 1 y 0. |
probar con [(1,1)], [] y [(2,1),(1,2)]. | probar con [(1,1)], [] y [(2,1),(1,2)]. |
| |
* Definir la función //todos0y1.xs//, //todos0y1 : [Int] -> Bool// que dada una lista devuelve //True// si ésta consiste sólo de 0s y 1s. | * Definir la función //todos0y1.xs//, //todos0y1 : [Int] -> Bool// que dada una lista devuelve //True// si ésta consiste sólo de 0s y 1s. Ayuda: para construir el Booleano del resultado no pueden usar el constructor de listas ":", sino que tienen que usar algún operador que dé como resultado un Booleano. |
| |
probar con [0], [], [1], [0,0,0,0], [0,1,0,1], [1,2,3], ['a','b','c'] | probar con [0], [], [1], [0,0,0,0], [0,1,0,1], [1,2,3], ['a','b','c'] |