Spaces:
Sleeping
Sleeping
| """Утилиты для работы с бросанием монет""" | |
| from typing import Dict, List | |
| import math | |
| class CoinCombinations: | |
| """Предрасчет комбинаций для бросания монет""" | |
| 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) | |
| 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 |