Код:
def get_plural_and_singular_arrays(races_array)
singular_array, plural_array = [], []
# algorithm here
races_array.group_by { |race| [race.way, race.track_id] }.each do |key, values|
if values.size == 1
singular_array << values[0]
else
plural_array += values
end
end
return plural_array, singular_array
end
Тест:
irb(main):025:0> Race = Struct.new(:way, :track_id)
=> Race
irb(main):026:0> r1 = Race.new(1, 2)
=> #<struct Race way=1, track_id=2>
irb(main):027:0> r2 = Race.new(1, 2)
=> #<struct Race way=1, track_id=2>
irb(main):028:0> r3 = Race.new(3, 4)
=> #<struct Race way=3, track_id=4>
irb(main):029:0> r4 = Race.new(3, 5)
=> #<struct Race way=3, track_id=5>
irb(main):030:0> get_plural_and_singular_arrays([r1, r2, r3, r4])
=> [[#<struct Race way=1, track_id=2>, #<struct Race way=1, track_id=2>], [#<str
uct Race way=3, track_id=4>, #<struct Race way=3, track_id=5>]]
irb(main):031:0>