gpt4 book ai didi

Clojure 平面序列到树中

转载 作者:行者123 更新时间:2023-12-02 05:59:37 26 4
gpt4 key购买 nike

我有以下向量,[-1 1 2 -1 3 0 -1 2 -1 4 0 3 0 0]

代表树 [[1 2 [3] [2 [4] 3]]]

其中 -1 开始一个新分支,0 结束它。如何将原始向量转换为可用的树状 clojure 结构(嵌套向量、嵌套映射)?我认为 clojure.zip/zipper 可以做到,但我不确定如何构建这些函数参数。

最佳答案

zipper 是一个很好的工具:

(require '[clojure.zip :as zip])

(def in [-1 1 2 -1 3 0 -1 2 -1 4 0 3 0 0])
(def out [[1 2 [3] [2 [4] 3]]])

(defn deepen [steps]
(->> steps
(reduce (fn [loc step]
(case step
-1 (-> loc
(zip/append-child [])
(zip/down)
(zip/rightmost))
0 (zip/up loc)
(zip/append-child loc step)))
(zip/vector-zip []))
(zip/root)))

(assert (= (deepen in) out))

关于Clojure 平面序列到树中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31549430/

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