Я пытаюсь создать коллекцию всех 2 ^ N - 1 возможных комбинаций заданного списка длины N. Коллекция сопоставит количество элементов в комбинации с упорядоченным списком комбинаций, содержащих комбинации определенной длины. Например, для списка:
[A, B, C, D]
Я хочу создать карту:
{
1 -> [{A}, {B}, {C}, {D}]
2 -> [{A, B}, {A, C}, {A, D}, {B, C}, {B, D}, {C, D}]
3 -> [{A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}]
4 -> [{A, B, C, D}]
}
Сгенерированная база данных должна поддерживать исходный порядок (где []
представляет упорядоченную серию (List
), а {}
представляет неупорядоченную группу (Set
)) и работать как можно быстрее.
Я боролся с каким-то рекурсивным кодом весь день (я знаю, что реализация должна быть рекурсивной), но не смог докопаться до сути.
Есть ли ссылка, я могу использовать/готовую реализацию такого алгоритма?