gpt4 book ai didi

Clojure:减少三个参数

转载 作者:行者123 更新时间:2023-12-04 00:11:31 25 4
gpt4 key购买 nike

我经常发现自己需要一种扩展 reduce每当我必须在某个时间处理一个项目(如reduce)时,积累某种结果(如reduce)但根据序列的前一个项目进行处理(与reduce不同)。

例如(一个愚蠢的),如果当前项目和前一个项目都是偶数,则将累加器加 1,并减去其中一个是奇数。这只是一个愚蠢的案例,但我经常遇到这种问题。我一般做一个向量作为累加器,这样第一项是真正的聚合,第二项是前一项。这不是很优雅,当然也很冗长。

在这些情况下是否有核心功能可以提供帮助?处理此类问题的最惯用方法是什么?谢谢

最佳答案

partition到救援。

(reduce (fn [i [a b]]
(cond
(and (even? a) (even? b)) (inc i)
(and (odd? a) (odd? b)) (dec i)
:else i))
0 (partition 2 1 input))

或者更简洁一点:
(reduce (fn [i pair]
(condp every? pair
even? (inc i)
odd? (dec i)
i))
0 (partition 2 1 input))

关于Clojure:减少三个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11579804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com