gpt4 book ai didi

clojure - 在clojure中对一系列 bool 值进行分组?

转载 作者:行者123 更新时间:2023-12-01 08:18:04 24 4
gpt4 key购买 nike

我想转换以下序列:

(def boollist [true false false false true false true])

进入以下内容:
[[true] [false false false true] [false true]]

我的代码导致 Stackoverflow:
(defn sep [boollst]
(loop [lst boollst
separated [[]]
[left right] (take 2 lst)]
(if (nil? left) separated)
(recur (next lst)
(if (false? left)
(conj (last separated) left)
(conj separated [left]))
(take 2 (next lst)))))

有没有一种优雅的方式来改变它?

最佳答案

可能有一种更优雅的方式,但这就是我想出的:

(defn f 
([xs] (f xs [] []))
([[x & xs :as all] acc a]
(if (seq all)
(if x
(recur xs [] (conj a (conj acc x)))
(recur xs (conj acc x) a))
a)))

它只是遍历跟踪当前错误向量的序列,以及到目前为止所有内容的大累加器。

关于clojure - 在clojure中对一系列 bool 值进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451643/

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