Debe generar un campo de golf aleatorio de 18 hoyos.
Salida de ejemplo:
[3 4 3 5 5 4 4 4 5 3 3 4 4 3 4 5 5 4]
Reglas:
- Su programa debe generar una lista de longitudes de agujeros para exactamente 18 agujeros
- Cada hoyo debe tener una longitud de 3, 4 o 5
- La longitud del hoyo debe sumar 72 para todo el recorrido.
- Su programa debe ser capaz de producir todas las configuraciones de agujeros posibles con alguna probabilidad distinta de cero (las probabilidades de cada configuración no necesitan ser iguales, pero siéntase libre de reclamar felicitaciones adicionales si este es el caso)
4
, y las únicas posibilidades son 3
, 4
o 5
, la posible solución clases son { no 3's or 5's
, one 3 and one 5
, two 3's and two 5's
, ..., nine 3's and nine 5's
}. Esto se puede calcular por nCr(18,0)*nCr(18,0) + nCr(18,1)*nCr(17,1) + nCr(18,2)*nCr(16,2) + ... + nCr(18,9)*nCr(9,9) = 44,152,809
. Esto significa que aproximadamente 11.4%
todas las combinaciones posibles son soluciones válidas (44,152,809 / 3^18)
.
sum(factorial(18)/factorial(x)/factorial(y)/factorial(z) for x in range(25) for y in range(25) for z in range(25) if 3*x+4*y+5*z == 72 and x+y+z == 18)
da44152809L