wandere ich nur, wenn es eine Reduzierung in Clojure, die das gleiche Ergebnis wie die unten Funktion geben kann, ohne Rekursionbekommen Kombinationen von Vektorelementen
die Funktion einen Vektor nehmen sollte und gibt Kombinationen der Elemente (zB geben [ 2 1 3] und kehrt zurück ((1 2 3) (1 2) (1 3) (1) (2 3) (2) (3) []))
(def combinations
"creates combinations of items for example [1 2 3]
will generate ((1 2 3) (1 2) (1 3) (1) (2 3) (2) (3) [])"
(memoize (fn[items]
(if (empty? items) [[]]
(let [els (combinations (rest items))]
(concat (map #(cons (first items) %)els) els))))))