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