I have this discontinuous array:
a = [1, 2, 3, 7, 8, 10, 11, 12]
I need it to be an array of continuous arrays:
[[1,
2,
3],
[7,
8],
[10,
11,
12]]
method 1:
a = [1, 2, 3, 7, 8, 10, 11, 12]
prev = a[0] - 1
a.slice_before { |cur| [prev + 1 != cur, prev = cur][0] }.to_a
# => [[1, 2, 3], [7, 8], [10, 11, 12]]
method 2:
a = [1, 2, 3, 7, 8, 10, 11, 12]
prev = a.first
p a.slice_before { |e|
prev, prev2 = e, prev
prev2 + 1 != e
}.to_a
method 3:
([a[0]] + a).each_cons(2).slice_before{|k, l| k + 1 != l}.map{|a| a.map(&:last)}