Herramientas de usuario

Herramientas del sitio


introalg:taller07_3

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
introalg:taller07_3 [2007/04/21 02:51] lauraintroalg:taller07_3 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1
Línea 35: Línea 35:
 factorial :: Int -> Int factorial :: Int -> Int
 factorial 0     = 1                     -- caso base factorial 0     = 1                     -- caso base
-factorial (n+1) = n * factorial (n-1)   -- caso inductivo+factorial (n+1) = (n+1) * factorial n   -- caso inductivo
 </code> </code>
  
Línea 68: Línea 68:
  
 <code> <code>
-fib n = fib (n-1) + fib (n-2)+fib (n+2) = fib (n+1) + fib n
 </code> </code>
  
Línea 171: Línea 171:
  
 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.
 +
  
  
Línea 236: Línea 237:
   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 =====
Línea 245: Línea 247:
   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''.
  
    * 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]//.
Línea 274: Línea 276:
 === 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.
Línea 282: Línea 284:
   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']
introalg/taller07_3.1177123917.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)