Last active
August 29, 2015 14:21
-
-
Save nihilismus/4bc82449c5e383a6f246 to your computer and use it in GitHub Desktop.
Captura de pantalla: https://www.dropbox.com/s/6gu4sfw94plxhku/eclipse-prueba.main-01.png?dl=0
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
(ns prueba.main) | |
(def alumnos | |
[{:nombre "A" :numero-de-control "12345" :calificaciones [80 70 80]} | |
{:nombre "B" :numero-de-control "23456" :calificaciones [90 70 0]} | |
{:nombre "C" :numero-de-control "34567" :calificaciones [100 70 70]} | |
{:nombre "D" :numero-de-control "45678" :calificaciones [100 100 90 90 70 70 80 80]} | |
{:nombre "E" :numero-de-control "56789" :calificaciones [100 70 70]} | |
{:nombre "F" :numero-de-control "67890" :calificaciones [100 90 100]} | |
{:nombre "G" :numero-de-control "78901" :calificaciones [100]} | |
]) | |
(defn numeros-de-control-con-promedios | |
"Dada una secuencia de alumnos, regresa un mapa con sus numeros de control | |
como llaves y el promedio de sus calificaciones como valores asociados a | |
sus numeros de control" | |
[alumnos] | |
(let [numero-de-control-del (fn [alumno] | |
(get alumno :numero-de-control)) | |
promedio-de-califiaciones-del (fn [alumno] | |
(let [numero-de-calificaciones (fn [xs] | |
(if (= (count xs) 0) | |
1 | |
(count xs)))] | |
(/ (reduce + 0 (get alumno :calificaciones)) | |
(* 1.0 (numero-de-calificaciones (get alumno :calificaciones)))))) | |
mapa-numero-de-control-promedio (fn [mapa alumno] | |
(assoc mapa | |
(numero-de-control-del alumno) | |
(promedio-de-califiaciones-del alumno)))] | |
(reduce mapa-numero-de-control-promedio {} alumnos))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment