Generar combinaciones de tamaño N a partir de una lista
Crea un método genérico que devuelva todas las combinaciones de tamaño n de una colección que ya está ordenada. Conserva el orden de los elementos 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
Program.combo(List.of(1, 2, 3, 4), 1) ➞ List.of(List.of(1), List.of(2), List.of(3), List.of(4))
Program.combo(List.of(1, 2, 3, 4), 2) ➞ List.of(List.of(1, 2), List.of(1, 3), List.of(1, 4), List.of(2, 3), List.of(2, 4), List.of(3, 4))
Program.combo(List.of(1, 2, 3, 4), 5) ➞ List.of()
Program.combo(List.of(1, 2, 3, 4), 0) ➞ List.of(List.of())Notas
- El orden lexicográfico compara primero los primeros elementos:
[1, 2]aparece antes que[2, 4]. Cuando los primeros elementos coinciden, se comparan los segundos:[1, 2]aparece antes que[1, 3], y así sucesivamente. - Devuelve una colección externa vacía si
nsupera la longitud de la entrada. - Devuelve una combinación vacía si
nes0, porque existe exactamente una combinación de longitud cero.