task_generator / utils /dice_utils.py
reginafeles's picture
Upload 40 files
d2213a5 verified
"""Утилиты для работы с игральными костями"""
from typing import Dict, List, Tuple
from collections import defaultdict
import itertools
class DiceCombinations:
"""Предрасчет комбинаций для игральных костей"""
@staticmethod
def get_two_dice_combinations() -> Dict[int, int]:
"""
Получение количества комбинаций для сумм двух костей
Возвращает:
словарь {сумма: количество_комбинаций}
"""
combinations = defaultdict(int)
for die1 in range(1, 7):
for die2 in range(1, 7):
combinations[die1 + die2] += 1
return dict(combinations)
@staticmethod
def get_three_dice_combinations() -> Dict[int, int]:
"""
Получение количества комбинаций для сумм трех костей
Возвращает:
словарь {сумма: количество_комбинаций}
"""
combinations = defaultdict(int)
for die1 in range(1, 7):
for die2 in range(1, 7):
for die3 in range(1, 7):
combinations[die1 + die2 + die3] += 1
return dict(combinations)
@staticmethod
def get_all_dice_combinations(max_dice: int = 3) -> Dict[int, Dict[int, int]]:
"""
Получение всех комбинаций для костей
Аргументы:
max_dice: максимальное количество костей
Возвращает:
словарь {количество_костей: {сумма: количество_комбинаций}}
"""
result = {}
for num_dice in range(1, max_dice + 1):
combinations = defaultdict(int)
for dice in itertools.product(range(1, 7), repeat=num_dice):
combinations[sum(dice)] += 1
result[num_dice] = dict(combinations)
return result