class StableMatching::Member
Attributes
accepted_proposal_from[R]
name[R]
preference_list[W]
received_proposals_from[R]
Public Class Methods
new(name)
click to toggle source
# File lib/stable-matching/member.rb, line 11 def initialize(name) @name = name @accepted_proposal_from = nil end
Public Instance Methods
accept_proposal_from!(member)
click to toggle source
# File lib/stable-matching/member.rb, line 47 def accept_proposal_from!(member) @accepted_proposal_from = member end
accepted_proposal?()
click to toggle source
# File lib/stable-matching/member.rb, line 38 def accepted_proposal? !current_proposer.nil? end
current_acceptor()
click to toggle source
# File lib/stable-matching/member.rb, line 32 def current_acceptor preference_list.detect do |member| member.accepted_proposal_from == self end end
current_proposer()
click to toggle source
# File lib/stable-matching/member.rb, line 28 def current_proposer @accepted_proposal_from end
first_preference()
click to toggle source
# File lib/stable-matching/member.rb, line 59 def first_preference preference_list.first end
last_preference()
click to toggle source
# File lib/stable-matching/member.rb, line 67 def last_preference preference_list.last end
preference_list()
click to toggle source
# File lib/stable-matching/member.rb, line 20 def preference_list if @preference_list.nil? raise "preference list not set for member: #{name}" end @preference_list end
reject!(member)
click to toggle source
# File lib/stable-matching/member.rb, line 51 def reject!(member) @accepted_proposal_from = nil if current_proposer == member # Delete each member from the other member's preference list preference_list.delete(member) member.preference_list.delete(self) end
second_preference()
click to toggle source
# File lib/stable-matching/member.rb, line 63 def second_preference preference_list[1] end
to_s()
click to toggle source
# File lib/stable-matching/member.rb, line 16 def to_s name end
would_prefer?(new_proposer)
click to toggle source
# File lib/stable-matching/member.rb, line 42 def would_prefer?(new_proposer) return true unless accepted_proposal? preference_of(new_proposer) > preference_of(current_proposer) end
Private Instance Methods
preference_of(member)
click to toggle source
# File lib/stable-matching/member.rb, line 73 def preference_of(member) index = preference_list.index(member) return if index.nil? # Return the preference as the inverse of the index so a smaller index # has a greater preference preference_list.size - index end