2009-10-29 1 views
9

좌표 x, y를 취하는 함수가 있다고합시다.Clojure : '좌표'의 조합 목록을 얻으려면 어떻게해야합니까?

x의 경우 값의 시퀀스는 [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'입니다. –