我正在寻找将带间隙的数字数组转换为Ruby中多个范围的数组。
每个范围应确定序列中的差距:
[1,2,3,5,6,8,9,10,11,12]
预期结果将是:
[1-3, 5-6, 8-12]
我还没有想出任何好的办法来解决这个问题。我该如何解决呢?
我将使用以下方法Enumerable#slice_before
:
a = [1,2,3,5,6,8,9,10,11,12]
prev = a[0]
p a.slice_before { |e|
prev, prev2 = e, prev
prev2 + 1 != e
}.map{|b,*,c| c ? (b..c) : b }
# >> [1..3, 5..6, 8..12]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句