07-05-2014, 01:26
Les dejo el enunciado del parcial que se tomó para el paradigma funcional.
[attachment=8770]
[attachment=8771]
Algunas resoluciones que me acuerdo (chequeadas que funcionan menos la 4a):
[attachment=8770]
[attachment=8771]
Algunas resoluciones que me acuerdo (chequeadas que funcionan menos la 4a):
Spoiler: Mostrar
-- 1a
esDeCalidad unMaterial = valor unMaterial > 20
valor (_,v) = v
-- 1b
disponibles unMaterial unaAldea = (length . filter (materialBuscado unMaterial)) (materialesAldea unaAldea)
materialBuscado unMaterial (n,_) = unMaterial == n
materialesAldea (_,m,_) = m
-- 1c
valorTotal unaAldea = valorTotalMaterialesDisponibles unaAldea + valorTotalMaterialesEdificios unaAldea
valorTotalMaterialesDisponibles unaAldea = (sum . map valor) (materialesAldea unaAldea)
valorTotalMaterialesEdificios unaAldea = (sum . map valor) (aplanar (materialesEdificios unaAldea))
aplanar lista = foldl (++) [] lista
materialesEdificios (_,_,e) = map snd e
-- 2a
tenerGnomito (p,m,e) = (p+1,m,e)
-- 2b
lustrarMaderas (p,materiales,e) = (p,map esMadera materiales,e)
esMadera (n,v) | (take 6 n) == "Madera" = (n,v+5)
| otherwise = (n,v)
-- 2c
recolectar unMaterial cantidad (p,materiales,e) = (p, [unMaterial | n <- [0..(cantidad-1)]] ++ materiales,e)
-- 4a - Este no funciona, pero la idea es algo asi masomenos
realizarLasQueCumplan tareas criterios unaAldea = foldl (.) id (tareasValidas tareas criterios) unaAldea
tareasValidas tareas criterios unaAldea = filter (cumpleCriterio (head criterios) unaAldea) tareas
cumpleCriterio criterios unaAldea tarea = criterios (tarea unaAldea)
poblacion (p,m,e) = p