Clojure 如何在多个集合的所有组合中测试给定的和?
我在4Clojure网站上工作 我可以添加什么样的“for”语句来组合检查这些集合中的每一个集合,以查找总和为0的项的子集 我在这里特别有几个问题:Clojure 如何在多个集合的所有组合中测试给定的和?,clojure,Clojure,我在4Clojure网站上工作 我可以添加什么样的“for”语句来组合检查这些集合中的每一个集合,以查找总和为0的项的子集 我在这里特别有几个问题: 是否有任何clojure函数接受任意数量的集合 如果是这样,我如何生成所有子集并对这些子集求和而不向代码中添加额外的Clojure,或者我弄错了 我需要填写这个部分 (= true (__ #{-1 1 99} #{-2 2 888} #{-3 3 7777})) 你是说集合(而不是地图)?但
(= true (__ #{-1 1 99}
#{-2 2 888}
#{-3 3 7777}))
例如,接受一个参数,但您可以创建接受任意数量参数的匿名函数。
((fn[&args](映射计数args)){-1199}{-2888}{-337777})
或
(#(映射计数%&){-1199}{-2888}{-337777})
combinationics
contrib生成所有子集,然后使用+
#(映射(部分减少+)(子集%)
(defn sums [s]
(set (map #(reduce + %) (rest (subsets s)))))
(defn cmp [& sets]
(not (empty? (apply intersection (map sums sets)))))
我无法使
4clojure
从contrib导入库,因此我将其保持原样。非常有用,但这不会回答4clojure的问题。。。。。还有其他的尝试吗?上面提到的,再加上创建集合的所有子集的机制,应该足以让您找到答案。@jayunit100:您可能想先解决这个问题。功率集(减去空集)正是另一种机制。