task_generator / utils /coin_utils.py
reginafeles's picture
Upload 40 files
d2213a5 verified
"""Утилиты для работы с бросанием монет"""
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