Sobes.tech
Middle — Senior

¿Cómo cambiar la solución para calcular sumas y combinaciones de dados si el número de dados es un parámetro?

sobes.tech AI

Respuesta de la IA

Si la cantidad de dados se convierte en un parámetro, la solución para contar sumas y combinaciones debe ser dinámica y escalable.

Enfoques:

  1. Recorrido recursivo:

    • Para cada dado, recorrer todos los valores posibles (1–6).
    • Recursivamente sumar los valores y contar la cantidad de combinaciones para cada suma.
  2. Programación dinámica:

    • Usar un array o diccionario donde el índice sea la suma y el valor sea la cantidad de formas de obtener esa suma.
    • Inicialmente, para 0 dados, la cantidad de formas de obtener la suma 0 es 1.
    • Para cada dado, actualizar el array añadiendo la cantidad de formas para las nuevas sumas.

Ejemplo en Go con programación dinámica:

func diceSums(numDice int) map[int]int {
    dp := make(map[int]int)
    dp[0] = 1

    for i := 0; i < numDice; i++ {
        next := make(map[int]int)
        for sum, count := range dp {
            for face := 1; face <= 6; face++ {
                next[sum+face] += count
            }
        }
        dp = next
    }
    return dp
}

// Uso:
// sums := diceSums(3)
// fmt.Println(sums) // Mostrará la cantidad de combinaciones para cada suma con 3 dados

Este enfoque permite calcular eficazmente la cantidad de combinaciones para cualquier cantidad de dados sin recorrer manualmente todas las opciones.