Add Gemfile
Add implementation and spec stubs
Rename SeatingPlan to Seating as it is not really a plan. Also implement 1:A case
Implement '1:Aa'
1:AB case passes without any code changes
Correct 1:AB test to 2:AB. Implement 2:AaB
Move variables into methods
2:AZa case passes without code changes
2:AZz case passes without code changes
Rename method
Extract seat updates to separate methods
Add pry and pry-nav to gemfiles for step debugging
Change occupy_seat method to be aware of neighboring seats
Split seat occupy logic into finding the best seat and occupying that
seat.
Nasty implementation of 3:ABC
Refactor best_available_seat to pass a condition block instead of
repeating logic
Simplify matching_seat method and conditions passed to it
Cases up to 4:ABCD need no code changes
Add vacate! method to Seat
Change variable naming in best_available_seat