Class: Array

Inherits:
Object
  • Object
show all
Defined in:
lib/reduce_ranges.rb

Instance Method Summary collapse

Instance Method Details

#reduce_rangesObject

Raises:

  • (TypeError)


4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/reduce_ranges.rb', line 4

def reduce_ranges
  raise TypeError unless all? { |el| el.is_a?(Fixnum) }

  arr = self.dup
  arr.each_with_index do |el, index|
    range_index = index + 1
    prev = el
    while arr[range_index] == prev + 1 do
      prev = arr[range_index]
      range_index += 1
    end
    arr[index..range_index-1] = (arr[index]..arr[range_index-1]) unless index == range_index - 1
  end
end