es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    def combinaciones(a, b):
        if len(a) == 0 or len(b) == 0:
            return [[]]
        final = []
        for i in combinaciones(a[:-1], b):
            final += [i + [a[-1], x] for x in b]
        return final
    

    Aquí, a y b son las listas de entrada. Iteramos a través de todas las combinaciones de a[:-1] y b, y concatenamos cada combinación con el último elemento de a y cada elemento de b. 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] y b = [0, 255]:

    resultado = combinaciones([0, 255], [0, 255])
    print(resultado)  # [[0, 0], [0, 255], [255, 0], [255, 255]]
    

    Esto debería darte la salida que deseas.

Comments are closed.