gpt4 book ai didi

clojure - 在 Clojure 中按分隔符分割序列?

转载 作者:行者123 更新时间:2023-12-02 12:15:20 25 4
gpt4 key购买 nike

假设我在 clojure 中有一个序列,例如

'(1 2 3 6 7 8)

我想将其拆分,以便每当遇到可被 3 整除的元素时列表就会拆分,结果如下

'((1 2) (3) (6 7 8))

(编辑:我真正需要的是

[[1 2] [3] [6 7 8]]

,但我也会采用序列版本:)

在 Clojure 中执行此操作的最佳方法是什么?

partition-by 没有帮助:

(partition-by #(= (rem % 3) 0) '(1 2 3 6 7 8))
; => ((1 2) (3 6) (7 8))

split-with 关闭:

(split-with #(not (= (rem % 3) 0)) '(1 2 3 6 7 8))
; => [(1 2) (3 6 7 8)]

最佳答案

类似这样的吗?

(defn partition-with
[f coll]
(lazy-seq
(when-let [s (seq coll)]
(let [run (cons (first s) (take-while (complement f) (next s)))]
(cons run (partition-with f (seq (drop (count run) s))))))))

(partition-with #(= (rem % 3) 0) [1 2 3 6 7 8 9 12 13 15 16 17 18])
=> ((1 2) (3) (6 7 8) (9) (12 13) (15 16 17) (18))

关于clojure - 在 Clojure 中按分隔符分割序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42881750/

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