Last active
August 29, 2015 14:21
-
-
Save gastonprieto/11c9e7dee0320b913f52 to your computer and use it in GitHub Desktop.
parcial_fun_candidatos
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
nombre (n,_,_,_) = n | |
-- Punto 1 | |
-- 1.a | |
facha edad sexAppeal = (40 - edad) + sexAppeal * 3 | |
-- 1.b | |
liderazgo edad _ = edad * 10 | |
-- 1.c | |
riqueza edad sexAppeal = sexAppeal * 2 + edad * 3 | |
-- 1.d | |
morocho _ _ = 300 | |
-- 1.e | |
corrupto _ _= -100 | |
-- Punto 2 | |
tieneCapacidadInutil (_, edad, sexAppeal, capacidades) = any (\capacidad -> esInutil(capacidad edad sexAppeal)) capacidades | |
esInutil capacidad = capacidad < 0 | |
sumaCapacidades (_, edad, sexAppeal, capacidades) = (sum.map (\capacidad -> capacidad edad sexAppeal)) capacidades | |
-- Punto 3 | |
evaluarCandidato candidato | sumaCapacidades candidato > 0 = (nombre candidato, sumaCapacidades candidato) | |
| otherwise = (nombre candidato, 0) | |
-- Punto 4 | |
elMejor criterio elemento otroElemento | criterio elemento >= criterio otroElemento = elemento | |
| otherwise = otroElemento | |
-- Punto 5 | |
votacion votantes candidatos = map (\candidato -> (nombre candidato, cantidadVotos candidato)) candidatos | |
where totalConvencimientoCapacidades = (fromIntegral . sum . map convencimiento) candidatos | |
cantidadVotos candidato = votantes * fromIntegral(convencimiento candidato) / totalConvencimientoCapacidades | |
convencimiento = snd.evaluarCandidato | |
-- Punto 6 | |
mejor criterio lista = foldl1 (elMejor criterio) lista | |
-- 6.a | |
ganador candidatos votantes = (mejor snd . votacion votantes) candidatos | |
-- 6.b | |
elMasFachero candidatos = mejor fachaDeUnCandidato candidatos | |
fachaDeUnCandidato (_, edad, sexAppeal, _) = facha edad sexAppeal | |
-- 6.c | |
elMasMolestoDeNombrar candidatos = mejor (length.nombre) candidatos | |
-- Punto 7 | |
wWinner candidatos votantes = ((=="obaca") . fst . ganador candidatos) votantes |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment