2009-10-29 13 views
9

Angenommen, ich habe eine Funktion, die Koordinaten x und y verwendet.Clojure: Wie bekomme ich eine Liste von Kombinationen von 'Koordinaten'?

Für x habe ich eine Folge von Werten sagen [1 2 3] und für y habe ich eine andere Folge von Werten sagen [4 5 6].

Wie würde ich eine Liste mit allen Kombinationen dieser erhalten? wie diese

(myfn [1 2 3] [4 5 6]) => [[1 4] [1 5] [1 6] [2 4] [2 5] [2 6] [3 4] [3 5] [3 6]] 

Gibt es eine bestehende Funktion für etwas:

So das gewünschte Ergebnis wäre so etwas wie sein?

Antwort

20
data> (for [x [1 2 3] y [4 5 6]] (vector x y)) 
([1 4] [1 5] [1 6] [2 4] [2 5] [2 6] [3 4] [3 5] [3 6]) 

...or... 

user> (use 'clojure.contrib.combinatorics) 
nil 
user> (cartesian-product [1 2 3] [4 5 6]) 
((1 4) (1 5) (1 6) (2 4) (2 5) (2 6) (3 4) (3 5) (3 6))
+7

Für zukünftige Besucher: es ist 'clojure.math.combinatorics' jetzt. –

Verwandte Themen