class StableMatching::PreferenceTable
Attributes
name_to_member_mapping[R]
Public Class Methods
new(raw_preference_table)
click to toggle source
Calls superclass method
# File lib/stable-matching/preference_table.rb, line 16 def initialize(raw_preference_table) members = initialize_members_from(raw_preference_table) raw_preference_table.each do |name, raw_preference_list| generate_preference_list( find_member_by_name(name), raw_preference_list ) end super(members) end
Public Instance Methods
complete?()
click to toggle source
# File lib/stable-matching/preference_table.rb, line 47 def complete? # Does every member have only one preference remaining? counts = members.map { |member| member.preference_list.count } counts.uniq == [1] end
members()
click to toggle source
# File lib/stable-matching/preference_table.rb, line 53 def members __getobj__ end
print()
click to toggle source
# File lib/stable-matching/preference_table.rb, line 33 def print table = {} members.each { |m| table[m.name] = m.preference_list.map(&:name) } pp(table) end
to_s()
click to toggle source
# File lib/stable-matching/preference_table.rb, line 29 def to_s members.map { |m| "#{m.name} => #{m.preference_list}" }.join(", ") end
unmatched()
click to toggle source
# File lib/stable-matching/preference_table.rb, line 40 def unmatched have_accepted = members.select(&:accepted_proposal?) have_been_accepted = have_accepted.map(&:current_proposer) members - have_been_accepted end
Private Instance Methods
find_member_by_name(name)
click to toggle source
# File lib/stable-matching/preference_table.rb, line 59 def find_member_by_name(name) @name_to_member_mapping[name] end
generate_preference_list(member, raw_preference_list)
click to toggle source
# File lib/stable-matching/preference_table.rb, line 73 def generate_preference_list(member, raw_preference_list) member_list = raw_preference_list.map { |name| find_member_by_name(name) } member.preference_list = PreferenceList.new(member_list) end
initialize_members_from(raw_preference_table)
click to toggle source
# File lib/stable-matching/preference_table.rb, line 63 def initialize_members_from(raw_preference_table) @name_to_member_mapping = {} raw_preference_table.keys.each do |name| @name_to_member_mapping[name] = Member.new(name) end @name_to_member_mapping.values end