Генерация комбинаций - PullRequest
13 голосов
/ 27 апреля 2011

Каждый раз, когда мне нужно сделать это, я «изобретаю» другой способ.Время стандартизировать.Я подозреваю, что есть какая-то команда по умолчанию, которую я пропустил, готовая сделать это, поэтому заранее прошу прощения, если вопрос слишком тривиален.

Какой лучший (память, производительность) способ получить:

 combinations[{1,2,3},2] = {{1,2},{1,3},{2,3}}

с произвольными элементами в списке ввода, конечно.

Ответы [ 2 ]

17 голосов
/ 27 апреля 2011
Subsets[{1, 2, 3}, {2}]

- это встроенный способ.

7 голосов
/ 28 апреля 2011

До добавления Subsets в качестве основной функции была доступна функция Combinatorica KSubsets.

Needs["Combinatorica`"]

KSubsets[{1, 2, 3}, 2]

(*  {{1, 2}, {1, 3}, {2, 3}}  *)

Combinatorica по-прежнему предоставляет дополнительные функции, такие как NextKSubset:

NextKSubset[{1, 2, 3}, {1, 3}]

(*  {2, 3}  *)

Эта последняя функция может быть очень полезна для управления памятью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...