class StableMatching::Marriage::PreferenceTable
Attributes
partner_table[RW]
Public Class Methods
initialize_pair(raw_preference_table_a, raw_preference_table_b)
click to toggle source
# File lib/stable-matching/marriage/preference_table.rb, line 13 def self.initialize_pair(raw_preference_table_a, raw_preference_table_b) table_a = new(raw_preference_table_a) table_b = new(raw_preference_table_b) table_a.partner_table = table_b table_b.partner_table = table_a [table_a, table_b] end
new(raw_preference_table)
click to toggle source
# File lib/stable-matching/marriage/preference_table.rb, line 23 def initialize(raw_preference_table) members = initialize_members_from(raw_preference_table) @raw_preference_table = raw_preference_table # Avoid calling the parent initializer, but we still need to set # the delegated object. Thankfully SimpleDelegator offers a method # to set this directly __setobj__(members) end
Public Instance Methods
partner_table=(partner_table)
click to toggle source
# File lib/stable-matching/marriage/preference_table.rb, line 34 def partner_table=(partner_table) @partner_table = partner_table @raw_preference_table.each do |name, raw_preference_list| generate_preference_list( find_member_by_name(name), raw_preference_list, partner_table ) end end
unmatched()
click to toggle source
# File lib/stable-matching/marriage/preference_table.rb, line 46 def unmatched have_accepted = partner_table.members.select(&:accepted_proposal?) have_been_accepted = have_accepted.map(&:current_proposer) members - have_been_accepted end
Private Instance Methods
generate_preference_list(member, raw_preference_list, partner_table)
click to toggle source
# File lib/stable-matching/marriage/preference_table.rb, line 55 def generate_preference_list(member, raw_preference_list, partner_table) member_list = raw_preference_list.map do |name| partner_table.name_to_member_mapping[name] end member.preference_list = PreferenceList.new(member_list) end