È necessario generare un campo da golf a 18 buche casuale.
Esempio di output:
[3 4 3 5 5 4 4 4 5 3 3 4 4 3 4 5 5 4]
Regole:
- Il programma deve generare un elenco di lunghezze dei fori esattamente per 18 fori
- Ogni foro deve avere una lunghezza di 3, 4 o 5
- Le lunghezze dei fori devono aggiungere fino a 72 per l'intero percorso
- Il tuo programma deve essere in grado di produrre ogni possibile configurazione di buche con qualche probabilità diversa da zero (le probabilità di ogni configurazione non devono essere uguali, ma sentiti libero di chiedere complimenti extra in questo caso)
4
, e le uniche possibilità sono 3
, 4
o 5
, la soluzione possibile classi sono { 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
}. Questo può essere calcolato da 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
. Ciò significa che approssimativamente 11.4%
di tutte le possibili combinazioni sono soluzioni valide (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)
dà44152809L