2009-10-29 56 views
9

說我有一個函數,需要座標,x和y。Clojure:我如何獲得'座標'組合的列表?

對於x我有一個值的序列say [1 2 3],對於y我有另一個值序列[4 5 6]。

我如何得到這些所有組合的列表?

所以期望的結果會是這樣的:

(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]] 

有沒有這樣的事情現有的功能?

回答

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

對於未來的訪問者:現在是'clojure.math.combinatorics'。 – 2013-02-26 10:06:30