buenas, haciendo la guia de ejercicios no se como encarar este tipo de enunciado
Armar una función promedios/1, que dada una lista de listas me devuelve la lista de los
promedios de cada lista-elemento
ese lo hice con recursividad y con un map, pero seguro hay una forma mejor
promedio1lista (x:xs) = (x + sum xs) `div` (1 + length xs)
promedios = map promedio1lista
Pero en este
Definir la función mejoresNotas, que dada la información de un curso devuelve la lista con la
mejor nota de cada alumno. P.ej.
Como defino que sea una lista de listas para despues analizarla ?
Igual que una lista comun (x:xs) ?
gracias
No sé si entendí bien, pero si mapeás la lista de listas con un maximum no sale??? de esa forma no la tenés que abrir por pattern matching, directamente le ponés al parámetro cualquier nombre, total si la estás mapeando con un maximum se va a dar cuenta que espera una lista de lista
AHI TE VAN CAPO !!!! TE LOS DEJO TODO CON RECURSIVIDAD, SI O SI TENES QUE DOMINAR ESO MAS QUE MEZCLARLO CON UN MAP
ESPERO TE SIRVA LOCURA.
promedios [] = []
promedios (xs:xss) = promedioLista xs:promedios xss
promedioLista unaLista = sumatoria unaLista / longitud unaLista
sumatoria [] = 0
sumatoria (x:xs) = x + sumatoria xs
longitud [] = 0
longitud (_:xs) = 1 + longitud xs
mejoresNotas [] = []
mejoresNotas (xs:xss) = mejorNota xs:mejoresNotas xss
mejorNota [x] = x
mejorNota (x:xs) | x >= mejorNota xs = x
| otherwise = mejorNota xs
Para mí es mas importante orden superior (el map) que recursividad.
Para probar tu función podés hacer
notass = [[5,6,7], [4,10,5], [8,8,8]]
La podés tratar como cualquier otra lista, entiende los mismos mensajes.
Por ejemplo
>:t notass
[[Int]]
>head notass
[5,6,7]
Coincido con Ichiluk, yo le daría más importancia a hacer map que a hacerlo por recursividad..
(12-05-2013 12:44)La Tota escribió: [ -> ]AHI TE VAN CAPO !!!! TE LOS DEJO TODO CON RECURSIVIDAD, SI O SI TENES QUE DOMINAR ESO MAS QUE MEZCLARLO CON UN MAP
ESPERO TE SIRVA LOCURA.
promedios [] = []
promedios (xs:xss) = promedioLista xs:promedios xss
promedioLista unaLista = sumatoria unaLista / longitud unaLista
sumatoria [] = 0
sumatoria (x:xs) = x + sumatoria xs
longitud [] = 0
longitud (_:xs) = 1 + longitud xs
mejoresNotas [] = []
mejoresNotas (xs:xss) = mejorNota xs:mejoresNotas xss
mejorNota [x] = x
mejorNota (x:xs) | x >= mejorNota xs = x
| otherwise = mejorNota xs
Claro porque a la catedra le encanta que uses recursividad en vez de funciones de orden superior
Screw declarative programming!
igual yo dije dominar recursividad sin mezclarlo con map.no dije no darle bola al map, filter y todas esas.
chicos ya sabemos que es importante saber usar las funciones de orden superior, en todos los puntos podes usar orden superior.
En el parcial cuando te dicen USE SOLO RECURSIVIDAD creo que no esta demas saber usarla. me parece ...