编写一个可以置换所有可能的n元组的元组函数

时间:2013-11-13 17:12:29

标签: clojure clojure-contrib

我正在努力建立一个元组函数,它接受集合和参数n。参数指定生成的向量应具有的索引数。然后,该函数会置换集合中所有可能的n元组元素。

到目前为止,我一直在尝试组合来自tuples.core和math.combinatoris的函数, 即元组和排列。

  (defn Tuples [& args]
        (combo/permutations (tuple args))) 

示例)

输入:(0,1)n = 3

输出:[[0,0,0] [0,0,1] [0,1,0] [1,0,0] [0,1,1] [1,1,0] [1 ,0,1] [1,1,1]]

1 个答案:

答案 0 :(得分:1)

您要找的是clojure.math.combinatorics/selections

(require '[clojure.math.combinatorics :as c])

(c/selections [0 1] 3)
;=> ((0 0 0) (0 0 1) (0 1 0) (0 1 1) (1 0 0) (1 0 1) (1 1 0) (1 1 1))