Вам потрібно створити випадкове поле для гольфу на 18 лунок.
Приклад виводу:
[3 4 3 5 5 4 4 4 5 3 3 4 4 3 4 5 5 4]
Правила:
- Ваша програма повинна вивести список довжин отворів рівно на 18 отворів
- Кожен отвір повинен мати довжину 3, 4 або 5
- Довжина отворів повинна складати до 72 за весь курс
- Ваша програма повинна бути здатна виробляти всі можливі конфігурації отворів з деякою ненульовою ймовірністю (ймовірності кожної конфігурації не повинні бути рівними, але сміливо вимагайте додаткових кудо, якщо це так)
4
, і єдині можливості 3
, 4
або 5
, можливо , класи рішень є { 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
}. Це можна обчислити по 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
. Це означає, що приблизно 11.4%
з усіх можливих комбінацій є допустимими рішеннями (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)
дає44152809L