gpt4 book ai didi

clojure - 比较 clojure 中的两个向量,无论项目的顺序如何

转载 作者:行者123 更新时间:2023-12-03 04:59:35 25 4
gpt4 key购买 nike

我想比较两个向量并找出它们拥有的项目是否相同,无论项目的顺序如何。

所以..

现在在 Clojure 中:

(= [1 2 3] [3 2 1]) ;=> false

我想要:

(other_fun [1 2 3] [3 2 1]) ;=> true

(other_fun [1 2 3 4] [3 2 1]) ;=> false

我找不到像java中那样的containsAll

最佳答案

如果您确实关心重复项,您可以比较它们的频率图。这些是映射,其中每个集合元素作为键,出现次数作为值。您可以使用标准函数频率创建它们,如给定的示例所示。

不同的顺序,相同的重复次数:

(= (频率 [1 1 2 3 4])(频率 [4 1 1 2 3]))

评估true

不同的顺序,不同的重复次数:

(= (频率 [1 1 2 3 4])(频率 [4 1 2 3]))

评估

所以,你可以编写一个函数:

(defn other_fun [& colls]
(apply = (map frequencies colls)))

关于clojure - 比较 clojure 中的两个向量,无论项目的顺序如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8388352/

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