gpt4 book ai didi

clojure - 如何在分隔符上拆分向量

转载 作者:行者123 更新时间:2023-12-01 09:57:14 25 4
gpt4 key购买 nike

我有一个包含数字的向量。向量的结构如下:

  1. 任意长度的项目
  2. 项目之间的分隔符 [0 0 0 0 0](0 重复 5 次)

我想写一个函数 split 来检索项目列表(没有分隔符):它类似于 string/split .

例如:

(split [123 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 199])
; => [[123 0 1] [1 1] [1 0 1] [0 0 1 199]]

注意:代码必须有效,因为向量的长度在100万左右。

感谢您的帮助。

最佳答案

这里:

(defn the-split [coll] 
(let [part (partition-by identity coll)
ppart (partition-by #(= [0 0 0 0 0] %) part)
almost (map #(apply concat %) ppart)]
(filter (partial not= [0 0 0 0 0]) almost)))


(the-split [123 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 199])
=> ((123 0 1) (1 1) (1 0 1) (1 199))

关于clojure - 如何在分隔符上拆分向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23550888/

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