根据数据中的关系切片数组(在Ruby中)

Mor*_*eu5 2 ruby arrays slice chunks

我有这种形式的数组:[1, 2, 1, 4, 5, 4, 1, 7, 7, 6]我需要将它们切成类似的东西[[1, 2, 1], [4, 5, 4], [1], [7, 7, 6]],其中断点由连续对之间的绝对差异大于1确定.

在Ruby中有一些我可以利用的魔法,还是我不得不编写一个简单的旧迭代代码?

Ste*_*fan 8

你可以使用Enumerable#slice_when:

a = [1, 2, 1, 4, 5, 4, 1, 7, 7, 6]
a.slice_when { |i, j| (i - j).abs > 1 }.to_a
#=> [[1, 2, 1], [4, 5, 4], [1], [7, 7, 6]]
Run Code Online (Sandbox Code Playgroud)