En un famoso foro de intercambio legal de información legĆtima y software aprobado por la ley, se quiere hacer un agregado al sistema de puntuación. Hay tres niveles de usuarios (newbie, intermedio y avanzado) y todos pueden puntuar. Los usuarios newbies otorgan como mĆ”ximo 1 punto, los intermedios como mĆ”ximo 5 puntos, y los avanzados como mĆ”ximo 10 puntos.
Algunos ejemplos de usuarios:
("george", 2012)
("sexy99", 2011)
("boca_cabj", 2010)
("jroman", 2009)
(āadminā, 2008)
anioActual :: Int -- Magia negra si usan WinHugs, no pregunten, sólo pónganlo. Con GHC no hace falta.
anioActual = 2012
Se pide definir las funciones para los siguientes requerimientos. Se muestran algunos ejemplos de consulta:
1) La antigüedad de un usuario
> antiguedad ("sexy99", 2011)
1
2) Los puntos base de un usuario, sabiendo que se calculan como la antigüedad por la longitud del nombre.
> puntosBase ("sexy99", 2011)
6
3) El nivel de un usuario, sabiendo que si tiene menos de un aƱo de antigüedad es ānewbieā, si tiene menos de 50 puntos base es āintermedioā, y sino es āavanzadoā.
> nivel ("sexy99", 2011)
"intermedio"
4) Si un usuario puede otorgar cierta cantidad de puntos. Ćsto es cierto si no es el usuario de nombre āadminā, y los puntos a otorgar no superan el mĆ”ximo otorgable para ese usuario segĆŗn su nivel.
> puedeOtorgar ("sexy99", 2011) 8
False -- (Ya que sexy99 es intermedio, y no puede otorgar mƔs de 5 puntos)
Para el martes que viene traer impreso el .hs con las funciones para resolver los puntos mencionados junto con las consultas que usaron para probar el correcto funcionamiento.