Skip to content

Instantly share code, notes, and snippets.

@gastonprieto
Last active August 29, 2015 14:21
Show Gist options
  • Save gastonprieto/11c9e7dee0320b913f52 to your computer and use it in GitHub Desktop.
Save gastonprieto/11c9e7dee0320b913f52 to your computer and use it in GitHub Desktop.
parcial_fun_candidatos
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