小编Mar*_* tM的帖子

按Clojure中的比率减少列表值

我在Clojure中尝试解决一个编程小问题。

说,我有一个带有整数值的列表(它们也包括零)。这些值有一个总和,我想减少一定值。为了获得较低的总和,我想按比例减小列表中的值。

说,我有以下列表:[0,10,30,40,20,0]。总和为100,我想将总和减少为90。我想按比例减少值,因此新列表将为[0,9,27,36,18,0]。

但是,当数字变成小数时,这将成为问题。当您对数字进行四舍五入时(无论是四舍五入,最小或最小),最终的总和都将减少1或2。我似乎找不到完美的解决方案。我得到的一切都包括一次遍历所有值,然后返回以修复偏移量。有任何想法吗?

编辑

为了弄清楚我想看到的行为,四舍五入的方式对我来说并不重要,只要总和正确且数字的比率大致相同即可。我不在乎总错误是最小的还是最大的舍入。

附加要求是仅允许数字保持相等或降低,数字应> = 0,并且结果数字列表应为整数。

clojure

1
推荐指数
1
解决办法
160
查看次数

标签 统计

clojure ×1