Clojure: Как мне получить список комбинаций «координат»? - PullRequest
9 голосов
/ 30 октября 2009

скажем, у меня есть функция, которая принимает координаты, х и у.

Для 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]]

Существует ли существующая функция для чего-то подобного?

1 Ответ

20 голосов
/ 30 октября 2009
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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...