Я преподаватель университета, пытаясь получить удовольствие от Clojure и вычислить мои оценки в одно и то же время. Я сделал список всех моих студентов чисел с соответствующими сортов в то, что выглядит следующим образом:сопоставление каждого элемента в деструктурированном списке векторов в clojure
(def grades-1 (let [s18129 [100 70 85 71 85]
s18121 [80 75 85 81 85]
r18131 [75 60 80 56 75] ...])
;; r before the number is shorthand for repeater
;; and not important to this question
Я хотел бы ранги быть adusted так, что первый, второй, третий, четвертый и пятый классы в этих векторах взвешены до 10%, 20%, 15%, 25% и 30% соответственно. Для того, чтобы помочь мне решить эту задачу, я создал вспомогательную функцию:
(defn percentify
"adjust raw score to weighted percentile"
[raw percentile]
(* (/ raw 100) percentile))
Я хочу, чтобы создать другую функцию, которая будет отображать над списком классов и применить percentify функции сортов каждого студента на specfic веса для каждого элемента вектор, основанный на его положении. Это то, с чем я сейчас работаю, но я не могу заставить его работать в реплике. Я думаю, что это связано с тем, как я структурировал данные своего класса или, возможно, я смущен об использовании println.
(defn finalize [grades-list]
(let [[[student] [a b c d e]] grades-list]
(println
(percentify a 10.0)
(percentify b 20.0)
(percentify c 15.0)
(percentify d 25.0)
(percentify e 30.0))))
Затем я хочу вызвать эту функцию, чтобы вернуть итоговые оценки с числом студентов в читаемом виде. Может кто-нибудь, пожалуйста, помогите мне поставить меня на правильный путь?
Спасибо, что потратили столько внимания на мою проблему. В итоге я решил упростить подход, основанный на ответе Майкла Марчика, но это действительно потрясающе и изначально то, что я просил. – kurofune