class FlirtChecker::Blood
Constants
- BLOOD_GROUP
Attributes
female[RW]
genotype[RW]
male[RW]
Public Class Methods
new(male, female, genotype: false)
click to toggle source
# File lib/flirt_checker/blood.rb, line 23 def initialize(male, female, genotype: false) @male = male @female = female @genotype = genotype end
Public Instance Methods
combo()
click to toggle source
# File lib/flirt_checker/blood.rb, line 37 def combo combo_with_rate.keys end
combo_with_rate()
click to toggle source
# File lib/flirt_checker/blood.rb, line 41 def combo_with_rate c = combination hash = c.reduce(Hash.new(0)){ |h,v| h[@genotype ? v : v.to_phenotype] += 1; h } hash.each_with_object({}) { |(k,v), h| h[k] = v.to_f / c.size } end
Private Instance Methods
combination()
click to toggle source
# File lib/flirt_checker/blood.rb, line 49 def combination #parameterize valid_blood_type? BLOOD_GROUP[male].product(BLOOD_GROUP[female]).map { |e| e.sort.join } end
valid_blood_type?()
click to toggle source
# File lib/flirt_checker/blood.rb, line 55 def valid_blood_type? raise ArgumentError, "Invalid Blood Type" unless BLOOD_GROUP.key?(male) && BLOOD_GROUP.key?(female) end