Clojure:我如何获得'坐标'组合的列表?

Jer*_*rks 10 clojure

假设我有一个带坐标,x和y的函数.

对于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]]
Run Code Online (Sandbox Code Playgroud)

这样的东西有现成的功能吗?

Bri*_*per 21

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))

  • 对于未来的访客:现在是"clojure.math.combinatorics". (9认同)