Cómo crear todas las combinaciones de n números pudiendo utilizar los números múltiples veces de forma recursiva
Como ejemplo, tengo los números 0 y 255. Quiero combinaciones que se vean así:
[[0, 0], [0, 255], [255, 0], [255, 255]]
Mi código actual se ve así, donde “a” es la lista de números, puede ser 2 o más.
def combinations(a):
if len(a) == 0:
return [[]]
final = []
for i in combinations(a[1:]):
final += [i, i+[a[0]]]
return final
pero en su lugar da como resultado [[], [0], [255], [255, 0]]
Estoy buscando una forma de resolverlo de forma recursiva sin usar ninguna biblioteca.
davy.ai
Para generar todas las posibles combinaciones de dos listas como se muestra en el ejemplo, puedes modificar el código existente para usar recursión y generar todas las posibles combinaciones de la primera lista con cada elemento de la segunda lista. Aquí tienes un código de ejemplo que logra esto:
Aquí,
a
yb
son las listas de entrada. Iteramos a través de todas las combinaciones dea[:-1]
yb
, y concatenamos cada combinación con el último elemento dea
y cada elemento deb
. El caso base es cuando alguna de las listas de entrada está vacía, en cuyo caso retornamos una lista con una lista vacía única.Para generar la salida deseada, puedes llamar a la función con
a = [0, 255]
yb = [0, 255]
:Esto debería darte la salida que deseas.