Получение всех возможных комбинаций из списка номеров

Я ищу эффективный способ добиться этого:

у вас есть список чисел 1 ..... n (обычно: 1..5 или 1..7 или около того - достаточно маленький, но может варьироваться от случая к случаю)

вам нужны все комбинации всех длин для этих чисел, например, все комбинации только одного числа ({1}, {2}, .... {n}), затем все комбинации двух разных чисел ({1,2}, {1,3}, {1,4}. .... {n-1, n}), затем все комбинации для трех из этих чисел ({1,2,3}, {1,2,4}) и т. д.

По сути, в группе порядок не имеет значения, поэтому {1,2,3} эквивалентно {1,3,2} - это просто вопрос получения всех групп по x чисел из этого списка.

Кажется, для этого должен быть простой алгоритм - но я тщетно искал до сих пор. Кажется, что большинство комбинаторных и перестановочных алгоритмов а) принимают во внимание порядок (например, 123 не равен 132), и они всегда, кажется, работают с одной строкой символов или чисел ....

У кого-нибудь есть отличный алгоритм nice'n'quick?

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос