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.

Bucleando sobre múltiples bucles for, todas las posibilidades de un dado en Python.

Me gustaría imprimir todas las opciones posibles al lanzar n cantidad de dados.
Sé cómo hacer esto al codificar de manera rígida n cantidad de bucles for, sin embargo, ¿hay alguna forma de hacerlo sin codificar un bucle para cada dado? Preferiblemente sin utilizar bibliotecas externas.

Aquí está mi solución codificada para n = 3, los bucles for necesitan ser universalizados de alguna manera para cualquier número n:

dices = 3
a = [1]*dices
for a[0] in range(1,7):
    for a[1] in range(1,7):
        for a[2] in range(1,7):
            print(a)

¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay una forma de imprimir todas las opciones posibles cuando se lanzan “n” cantidad de dados sin codificar un bucle para cada dado utilizando la recursividad.

    Un enfoque es definir una función recursiva que tome como parámetros el número de dados y el dado actual que se está lanzando. En cada llamada recursiva, realizamos un bucle a través de todos los números posibles en el dado actual y llamamos a la función con el siguiente dado. Mantenemos un registro de los números lanzados en una lista y lo imprimimos cuando hayamos lanzado todos los dados.

    Aquí hay un ejemplo de implementación:

    def roll_dice(n, current_dice=1, current_roll=[]):
        # Caso base: se terminó de lanzar todos los dados
        if current_dice > n:
            print(current_roll)
            return
    
        # Caso recursivo: lanzar el dado actual y llamar a la función con el siguiente dado
        for i in range(1, 7):
            roll_dice(n, current_dice+1, current_roll+[i])
    

    Para imprimir todas las opciones posibles al lanzar 3 dados, deberíamos llamar a roll_dice(3).

    Esta implementación utiliza la recursividad en lugar de codificar un número fijo de bucles for, lo que la hace flexible para cualquier cantidad de dados. Además, no requiere ninguna biblioteca externa.

Comments are closed.