Учитывая массив ary = [1, 1, 1, 3, 3, 3, 3, 3, 3, 1, 4, 4, 4]
, невозможно определить, какое целое число ведет, но вы можете найти индекс разрыва:
ary.each.with_index.with_object([]){ |(x, idx), o| o << idx + 1 if x != ary[idx + 1] }
#=> [3, 9, 10, 13]
Или это где первый элемент также рассматривается как разрыв:
ary.chunk_while { |a,b| a == b }.map(&:count).inject([0]) { |x, y| x + [x.last + y] }
#=> [0, 3, 9, 10, 13]