Gere 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 lista. Ordene a lista em ordem lexicográfica crescente.

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

  • Ordem lexicográfica: Compare o primeiro elemento: [1, 2] aparecerá antes de [2, 4]. Se ambas tiverem o mesmo primeiro elemento, compare o segundo: [1, 2] aparece antes de [1, 3], e assim por diante.
  • Retorne uma lista vazia [] se n exceder o tamanho da lista.
  • Retorne [[]] se n for 0 (veja o exemplo nº 4). (Isso ocorre porque existe apenas uma combinação de tamanho 0: uma lista vazia).