【发布时间】:2014-02-14 10:04:10
【问题描述】:
我是一名大学讲师,我想在享受 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
我希望调整成绩,以便这些向量中的一、二、三、四和五年级的权重分别为 10%、20%、15%、25% 和 30%。为了帮助我完成这项任务,我创建了一个辅助函数:
(defn percentify
"adjust raw score to weighted percentile"
[raw percentile]
(* (/ raw 100) percentile))
我想创建另一个函数,该函数将映射到成绩列表,并根据向量中每个元素的位置,以特定权重将百分比函数应用于每个学生的成绩。这就是我现在正在使用的东西,但我无法让它在 repl 中工作。我认为这与我如何构建班级数据有关,或者我对 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))))
然后我想调用这个函数来以可读的形式返回带有学生人数的最终成绩。有人可以帮助我走上正轨吗?
【问题讨论】:
标签: data-structures vector clojure mapping destructuring