Generar combinaciones de tamaño N a partir de una lista

Crea una función que devuelva todas las combinaciones de tamaño n de una colección ya ordenada. Conserva el orden de entrada dentro de cada combinación y devuelve las combinaciones en orden lexicográfico ascendente. Los elementos pueden ser números, cadenas o cualquier otro tipo de elemento compatible con el código inicial proporcionado.

Ejemplos

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) ➞ [[]]

Notas

  • El orden lexicográfico compara primero los primeros elementos: [1, 2] va antes que [2, 4]. Cuando los primeros elementos coinciden, se comparan los segundos elementos: [1, 2] va antes que [1, 3], y así sucesivamente.
  • Devuelve una colección exterior vacía si n supera la longitud de la entrada.
  • Devuelve una única combinación vacía si n es 0, porque existe exactamente una combinación de longitud cero.