gpt4 book ai didi

graph - 嵌套映射到表示 Clojure 中的边的元组序列

转载 作者:行者123 更新时间:2023-12-04 18:44:15 26 4
gpt4 key购买 nike

如何在惯用的 Clojure 中表达以下转换?

(def m
{:a {:b {:c nil
:d nil}
:e nil}})


(map->edges m) ; =>


([:a :b] [:b :c] [:b :d] [:e nil] [:d nil] [:a :e] [:e nil])

我不关心向量在结果中出现的顺序,所以深度优先或呼吸优先搜索策略都可以。

最佳答案

您可以使用 for 相当简洁地表达这一点和 tree-seq :

(defn map->edges [m]
(for [entry m
[x m] (tree-seq some? val entry)
y (or (keys m) [m])]
[x y]))

例子:

(map->edges m)
;;=> ([:a :b] [:a :e] [:b :c] [:b :d] [:c nil] [:d nil] [:e nil])

关于graph - 嵌套映射到表示 Clojure 中的边的元组序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45699736/

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