gpt4 book ai didi

抑制 TRIE 的嵌套 Maps 的 Clojure Zipper

转载 作者:行者123 更新时间:2023-12-02 09:33:58 24 4
gpt4 key购买 nike

如果键是字母,如何为 TRIE 创建 Clojure zipper (由嵌套映射表示)?

类似这样的:

{\b {\a {\n {\a {\n {\a {'$ '$}}}}}} \a {\n {\a {'$ '$}}}}

表示一个包含 2 个单词“banana”和“ana”的 trie。 (如有必要,可以在 map 中进行一些更改..)

我尝试过传递 map ? vals assoc 分别作为 zipper 的 3 个功能。但似乎不起作用..

我应该使用哪 3 个函数?

基于 zipper 的 insert-into-trie 会是什么样子?

最佳答案

map? vals #(zipmap (keys %1) %2) 可以,但不支持插入/删除子项(由于子项只是值,因此您不知道要删除/添加哪个键)。

下面的map-zipper确实支持插入/删除,因为节点是[k v]对(除了作为映射的根)。

(defn map-zipper [m]
(z/zipper
(fn [x] (or (map? x) (map? (nth x 1))))
(fn [x] (seq (if (map? x) x (nth x 1))))
(fn [x children]
(if (map? x)
(into {} children)
(assoc x 1 (into {} children))))
m))

关于抑制 TRIE 的嵌套 Maps 的 Clojure Zipper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013458/

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