Source code for dicetables.dicepool

from typing import Dict, Tuple

from dicetables.eventsbases.protodie import ProtoDie
from dicetables.tools.orderedcombinations import ordered_combinations_of_events


[docs]class DicePool(object): def __init__(self, input_die: ProtoDie, pool_size: int): if pool_size < 1: raise ValueError("Minimum DicePool size is 1") self._input_die = input_die self._pool_size = pool_size self._rolls = ordered_combinations_of_events(input_die, pool_size) @property def die(self) -> ProtoDie: return self._input_die @property def size(self) -> int: return self._pool_size @property def rolls(self) -> Dict[Tuple[int, ...], int]: return self._rolls.copy() def __eq__(self, other): if not isinstance(other, DicePool): return False return (self.die, self.size) == (other.die, other.size) def __hash__(self): return hash((self.die, self.size)) def __repr__(self): return "{}({!r}, {})".format(self.__class__.__name__, self.die, self.size)