Skip to content

Instantly share code, notes, and snippets.

@barelyknown
Created May 26, 2015 02:06
Show Gist options
  • Select an option

  • Save barelyknown/8f71f61cc2392e7cf847 to your computer and use it in GitHub Desktop.

Select an option

Save barelyknown/8f71f61cc2392e7cf847 to your computer and use it in GitHub Desktop.
Programming challenge: merging overlapping intervals
class IntervalMerger
def initialize(*intervals)
@intervals = intervals
end
def merge
@intervals.reduce([]) do |merged, i|
is_merged = false
merged.each_with_index do |m, index|
if i[0] <= m[1] && i[1] >= m[0]
merged[index] = [[i,m].map(&:first).min, [i,m].map(&:last).max]
is_merged = true
break
end
end
merged << i unless is_merged
merged
end
end
end
@svpino

svpino commented May 26, 2015

Copy link
Copy Markdown

Easy peasy :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment