gpt4 book ai didi

algorithm - 如何在 Clojure 中区分/减去两个列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:45:17 27 4
gpt4 key购买 nike

例子:

1 1 1 3 3 4 4 5 5 6  L1
1 3 3 4 5 L2
1 1 4 5 6 Res

约束:

  1. diff/subtract 定义为 L1 减去 (∖) L2 的元素“集合”
  2. L2 始终是 L1 的子集 (⊆)
  3. L1和L2中的元素可以有重复
  4. 元素是基本类型(int、string)并且都是同一类型

(clojure.set/difference) 由于 (3) 在这里没有帮助。

最佳答案

(defn diff [s1 s2]
(mapcat
(fn [[x n]] (repeat n x))
(apply merge-with - (map frequencies [s1 s2]))))

例如给定

(def L1  [1 1 1 3 3 4 4 5 5 6])
(def L2 [1 3 3 4 5 ])

然后

(diff L1 L2)
;(1 1 4 5 6)

关于algorithm - 如何在 Clojure 中区分/减去两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23199295/

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