Этот метод может использоваться для эффективного тестирования перекрытия между несколькими диапазонами:
def range_overlap?(ranges)
sorted_ranges = ranges.sort
sorted_ranges.each_cons(2).each do |r1, r2|
return true if r2.first <= r1.last
end
return false
end
def test(r)
puts r.inspect, range_overlap?(r)
puts '================'
r = r.reverse
puts r.inspect, range_overlap?(r)
puts '================'
end
test [[1,9], [10, 33]]
test [[1,10], [5, 8]]
test [[1,10], [10, 33]]