Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
introalg:taller09_6 [2009/05/04 13:41] – laura | introalg:taller09_6 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1 |
---|
pares :: [Int] -> [Int] | pares :: [Int] -> [Int] |
pares [] = [] | pares [] = [] |
pares (x:xs) | mod x 2 == 0 = x : sumaPares xs | pares (x:xs) | mod x 2 == 0 = x : pares xs |
| otherwise = sumaPares xs | | otherwise = pares xs |
| |
suma :: [Int] -> Int | suma :: [Int] -> Int |
| |
* Definir la función **peliculasAccion**, //peliculasAccion :: [(String,Bool)] -> [String]//, que dada una lista de pares //(nombre,esAccion)//, devuelve una lista con solo los nombres de las películas de acción. | * Definir la función **peliculasAccion**, //peliculasAccion :: [(String,Bool)] -> [String]//, que dada una lista de pares //(nombre,esAccion)//, devuelve una lista con solo los nombres de las películas de acción. |
Ejemplo: peliculasAccion [(``Rambo'',True),(``E.T.'',False),(``Duro de Matar'',True)] = [``Rambo'',``Duro de Matar'']. | Ejemplo: peliculasAccion [("Rambo",True),("E.T.",False),("Duro de Matar",True)] = ["Rambo","Duro de Matar"]. |
| |
* Definir la función **cuadrados**, //cuadrados :: [Int] -> [Int]//, que dada una lista de enteros //xs// devuelve una lista con el cuadrado de cada uno de los miembros de //xs//. | * Definir la función **cuadrados**, //cuadrados :: [Int] -> [Int]//, que dada una lista de enteros //xs// devuelve una lista con el cuadrado de cada uno de los miembros de //xs//. |
| |
* Definir //iguales :: Eq a => [a] -> [a] -> Bool// que decide si dos listas son iguales. | * Definir //iguales :: Eq a => [a] -> [a] -> Bool// que decide si dos listas son iguales. |
| |
* Definir //encuentraEstafador': [Int] -> [Int] -> [Int]//, que opera sobre dos listas **ordenadas de menor a mayor**, y aprovecha este hecho para recorrerlas una sola vez. | * Definir //encuentraEstafador': [Int] -> [Int] -> [Int]//, que opera sobre dos listas **ordenadas de menor a mayor**, y aprovecha este hecho para recorrerlas una sola vez. |
| |
* Activar con '':set +s'' para que imprima el número de //pasos de reducción// que realizó para cada evaluación y comprobar que //encuentraEstafador// es **menos eficiente** que //encuentraEstafador'//. | * Activar con '':set +s'' para que imprima el número de //pasos de reducción// que realizó para cada evaluación y comprobar que //encuentraEstafador// es **menos eficiente** que //encuentraEstafador'//. |
| |
* Supongamos ahora que el listado de las personas que reciben subsidio por desempleo es una lista de tuplas //(dni,nombre,mesesDeDesempleo)//, con los siguientes tipos: //(Int,String,Int)// y el listado de personas que trabajan en la municipalidad, se aporta la siguiente información de cada persona: //(nombre,dni,fechaDeNacimiento)//, con los tipos: //(String,Int,String)//. Utilizando //map// y funciones auxiliares obtener el estafador de los siguientes listados: | * Supongamos ahora que el listado de las personas que reciben subsidio por desempleo es una lista de tuplas //(dni,nombre,mesesDeDesempleo)//, con los siguientes tipos: //(Int,String,Int)// y el listado de personas que trabajan en la municipalidad, se aporta la siguiente información de cada persona: //(nombre,dni,fechaDeNacimiento)//, con los tipos: //(String,Int,String)//. Utilizando //map// y funciones auxiliares obtener el estafador de los siguientes listados: |
<code> | <code> |