class StableMatching::Roommate::PhaseIIRunner
Public Class Methods
new(preference_table, opts = {})
click to toggle source
# File lib/stable-matching/roommate/phase_ii_runner.rb, line 73 def initialize(preference_table, opts = {}) @preference_table = preference_table @logger = opts.fetch(:logger) end
Public Instance Methods
run()
click to toggle source
# File lib/stable-matching/roommate/phase_ii_runner.rb, line 78 def run @preference_table.members.each do |proposer| acceptor, rejections = determine_acceptor_and_their_rejections(proposer) @logger.debug( "#{proposer.name} accepted by #{acceptor.name}. "\ "#{acceptor.name} rejecting members less preferred than "\ "#{proposer.name}: #{rejections.map(&:name)}" ) rejections.each { |rejected| acceptor.reject!(rejected) } end end
Private Instance Methods
determine_acceptor_and_their_rejections(proposer)
click to toggle source
# File lib/stable-matching/roommate/phase_ii_runner.rb, line 95 def determine_acceptor_and_their_rejections(proposer) acceptor = proposer.current_acceptor current_proposer_index = acceptor.preference_list.index(proposer) rejections = acceptor.preference_list[current_proposer_index + 1..-1] [acceptor, rejections] end