Class: Dicey::SumFrequencyCalculators::BaseCalculator Abstract
- Inherits:
-
Object
- Object
- Dicey::SumFrequencyCalculators::BaseCalculator
- Defined in:
- lib/dicey/sum_frequency_calculators/base_calculator.rb
Overview
This class is abstract.
Base frequencies calculator.
Direct Known Subclasses
Constant Summary collapse
- RESULT_TYPES =
Possible values for
result_typeargument in #call. i[frequencies probabilities].freeze
Instance Method Summary collapse
-
#call(dice, result_type: :frequencies) ⇒ Hash{Numeric => Numeric}
Frequencies of each sum.
-
#valid_for?(dice) ⇒ Boolean
Whether this calculator can be used for the list of dice.
Instance Method Details
#call(dice, result_type: :frequencies) ⇒ Hash{Numeric => Numeric}
Returns frequencies of each sum.
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/dicey/sum_frequency_calculators/base_calculator.rb', line 17 def call(dice, result_type: :frequencies) unless RESULT_TYPES.include?(result_type) raise DiceyError, "#{result_type} is not a valid result type!" end # Short-circuit for a degenerate case. return {} if dice.empty? raise DiceyError, "#{self.class} can not handle these dice!" unless valid_for?(dice) frequencies = calculate(dice) verify_result(frequencies, dice) frequencies = sort_result(frequencies) transform_result(frequencies, result_type) end |
#valid_for?(dice) ⇒ Boolean
Whether this calculator can be used for the list of dice.
35 36 37 |
# File 'lib/dicey/sum_frequency_calculators/base_calculator.rb', line 35 def valid_for?(dice) dice.is_a?(Enumerable) && dice.all?(AbstractDie) && validate(dice) end |