Clojure=> (lex-permutations [1 2 3]) ([1 2 3] [1 3 2] [2 1 3] [2 3 1] [3 1 2] [3 2 1]) Clojure=> (lex-permutations [1 1 2]) ([1 1 2] [1 2 1] [2 1 1])
(defn lex-permutations
"Fast lexicographic permutation generator for a sequence of numbers"
[c]
(lazy-seq
(let [vec-sorted (vec (sort c))]
(if (zero? (count vec-sorted))
(list [])
(vec-lex-permutations vec-sorted)))))
Comments top
No comments for lex-permutations. Log in to add a comment.