Descubre todas las posibles permutaciones de 3 números en N espacios [Python]
Entonces, necesito encontrar una forma de obtener todas las permutaciones de 3 números, concretamente 1, 0 y -1, cuando hay N espacios.
Entonces, en el caso de que haya 2 espacios (N=2), la función devolvería:
[
[1,1],
[1,0],
[0,1],
[0,0],
[-1,0],
[0,-1],
[-1,-1],
[1,-1],
[-1,1]
]
De manera similar, si N = 3, tendríamos un resultado bastante más largo, así que no lo voy a escribir aquí.
Sinceramente, no estoy seguro de cómo escribir una función que logre esto. Si alguien tiene alguna sugerencia, estaría muy abierto a escucharla.
Es importante destacar: itertools.permutations no funciona en este caso, ya que si supero los 3 espacios simplemente no devuelve nada. Necesito encontrar una solución que funcione cuando hay hasta 10 espacios.
davy.ai
Una forma de lograr esto es utilizando itertools.product() para generar todas las combinaciones posibles de los 3 números repetidos N veces, y luego filtrar las inválidas. Aquí hay una implementación de ejemplo:
Esta función debería retornar los resultados deseados para cualquier valor de N entre 1 y 10. Sin embargo, debes tener en cuenta que la cantidad de permutaciones crece exponencialmente con N, por lo que generar todas las permutaciones para valores grandes de N puede llevar mucho tiempo o agotar la memoria. En ese caso, es posible que necesites modificar las condiciones de filtrado para reducir la cantidad de permutaciones válidas.