Spaces:
Sleeping
Sleeping
File size: 1,514 Bytes
d2213a5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | """Утилиты для работы с бросанием монет"""
from typing import Dict, List
import math
class CoinCombinations:
"""Предрасчет комбинаций для бросания монет"""
@staticmethod
def binomial_coefficient(n: int, k: int) -> int:
"""
Вычисление биномиального коэффициента C(n,k)
Аргументы:
n: общее количество бросков
k: количество орлов
Возвращает:
int: количество комбинаций
"""
if k > n or k < 0:
return 0
return math.comb(n, k)
@staticmethod
def get_coin_combinations(max_flips: int = 5) -> Dict[int, Dict[int, int]]:
"""
Получение всех комбинаций для бросания монет
Аргументы:
max_flips: максимальное количество бросков
Возвращает:
словарь {количество_бросков: {орлов: количество_комбинаций}}
"""
result = {}
for num_flips in range(1, max_flips + 1):
combinations = {}
for heads in range(num_flips + 1):
combinations[heads] = CoinCombinations.binomial_coefficient(num_flips, heads)
result[num_flips] = combinations
return result |