如何将附近的数字分组为红宝石?

时间:2017-09-01 17:57:28

标签: ruby numbers

[1.5, 7, 3, 3.1, 3.3, 2.5, 6, 6.5, 5.4, 9, 10, 8]

如何对最大差异为2的数字进行分组?

[1.3, 3, 3.1, 3.3, 2.5]

[6, 6.5, 5.4, 7]

[8, 9, 10]

1 个答案:

答案 0 :(得分:4)

通常情况下,Ruby有一个工具:

a = [ 1.5,7,3,3.1,3.3,2.5,6,6.5,5.4,9,10,8 ]

a.chunk_while do |prev,val|
  (val - prev).abs <= 2
end

a.to_a
# => [[1.5], [7], [3, 3.1, 3.3, 2.5], [6, 6.5, 5.4], [9, 10, 8]]

chunk_while方法有两个值,前一个值和当前值。当该块返回逻辑错误值时,它会分裂。