Obtendo todas as combinações possíveis de uma lista de números

Estou procurando uma maneira eficiente de conseguir isso:

você tem uma lista de números 1 ..... n (normalmente: 1..5 ou 1..7 ou mais - razoavelmente pequeno, mas pode variar de caso para caso)

você precisa de todas as combinações de todos os comprimentos para esses números, por exemplo todas as combinações de apenas um número ({1}, {2}, .... {n}), depois todas as combinações de dois números distintos ({1,2}, {1,3}, {1,4}). .... {n-1, n}), então todas as combinações para três desses números ({1,2,3}, {1,2,4}) e assim por diante

Basicamente, dentro do grupo, a ordem é irrelevante, então {1,2,3} é equivalente a {1,3,2} - é apenas uma questão de obter todos os grupos de números x dessa lista

Parece que deveria haver um algoritmo simples para isso - mas eu procurei em vão até agora. A maioria dos algoritmos combinatórios e de permutação parece a) levar em consideração a ordem (por exemplo, 123 não é igual a 132) e sempre parece operar em uma única sequência de caracteres ou números ...

Alguém tem um ótimo, bom algoritmo rápido na manga?

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion