Class: StableMatching::Roommate::PhaseIRunner

Inherits:
PhaseRunner
  • Object
show all
Defined in:
lib/stable-matching/roommate/phase_i_runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(preference_table, opts = {}) ⇒ PhaseIRunner

Returns a new instance of PhaseIRunner.



84
85
86
87
# File 'lib/stable-matching/roommate/phase_i_runner.rb', line 84

def initialize(preference_table, opts = {})
  @preference_table = preference_table
  @logger = opts.fetch(:logger)
end

Instance Method Details

#runObject



89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/stable-matching/roommate/phase_i_runner.rb', line 89

def run
  while @preference_table.unmatched.any?
    ensure_table_is_stable!

    member = @preference_table.unmatched.first
    top_choice = member.first_preference

    simulate_proposal(member, top_choice)
  end

  # Check once more since final iteration may have left the table unstable
  ensure_table_is_stable!
end