Gerar combinações de tamanho N a partir de uma lista
Crie uma função que retorne todas as combinações de tamanho n de uma coleção já ordenada. Preserve a ordem de entrada dentro de cada combinação e retorne as combinações em ordem lexicográfica crescente. Os elementos podem ser números, cadeias de caracteres ou qualquer outro tipo de elemento compatível com o código inicial fornecido.
Exemplos
combo([1, 2, 3, 4], 1) ➞ [[1], [2], [3], [4]]
combo([1, 2, 3, 4], 2) ➞ [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
combo([1, 2, 3, 4], 5) ➞ []
combo([1, 2, 3, 4], 0) ➞ [[]]Observações
- A ordem lexicográfica compara primeiro os primeiros elementos:
[1, 2]vem antes de[2, 4]. Quando os primeiros elementos são iguais, os segundos elementos são comparados:[1, 2]vem antes de[1, 3], e assim por diante. - Retorne uma coleção externa vazia se
nexceder o tamanho da entrada. - Retorne uma única combinação vazia se
nfor0, pois existe exatamente uma combinação de tamanho zero.