如何在ruby中对附近的数字进行分组?

如何在ruby中对附近的数字进行分组?,ruby,numbers,Ruby,Numbers,如何对最大差值为2的数字进行分组 [1.5, 7, 3, 3.1, 3.3, 2.5, 6, 6.5, 5.4, 9, 10, 8] 通常情况下,Ruby有一个用于此目的的工具: [1.3, 3, 3.1, 3.3, 2.5] [6, 6.5, 5.4, 7] [8, 9, 10] 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[[1.5],[7],[3,3.1,3.3

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

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

通常情况下,Ruby有一个用于此目的的工具:

[1.3, 3, 3.1, 3.3, 2.5]

[6, 6.5, 5.4, 7]

[8, 9, 10]
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[[1.5],[7],[3,3.1,3.3,2.5],[6,6.5,5.4],[9,10,8]]

该方法采用两个值,前一个值和当前值。当该块返回一个逻辑上为假的值时,它就会分裂。

通常情况下,Ruby有一个用于此的工具:

[1.3, 3, 3.1, 3.3, 2.5]

[6, 6.5, 5.4, 7]

[8, 9, 10]
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[[1.5],[7],[3,3.1,3.3,2.5],[6,6.5,5.4],[9,10,8]]


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

这些是数组中的吗?
1.3
来自哪里?为什么订单有时会改变,而不是其他时间?7不是在8和9的2范围内吗?是的,我用近似的方法来计算,但这是不可行的。十进制1.3,3.1似乎希望将数组的元素分组到数组中,每个数组都具有这样的属性:如果
a
b
是它的任意一对元素,
(a-b).abs这些是数组吗?
1.3
来自哪里?为什么订单有时会改变,而不是其他时间?7不是在8和9的2范围内吗?是的,我用近似的方法来计算,但这是不可行的。十进制1.3,3.1似乎希望将数组的元素分组到数组中,每个数组都具有这样的属性:如果
a
b
是它的任意一对元素,
(a-b).abs我认为您需要在处理chunk_之前对数组进行排序。@Mohanraj这是一个选项,但不清楚这是否是目的。它们可能在某种时间序列中。可能会附加
.reject(&:one?
以删除非块。此外,
chunk\u while
返回枚举数。除非在{prev,val |(val-prev)时对a
结果调用
a.chunk\u,否则无法获得显示的数组.abs一个答案提出的方法返回的值与OP所需的值不同,这是很少见的,当该答案被授予greenie时,返回的值会加倍!尽管如此,我仍然可以看到您是如何对该问题做出解释的。我认为您需要在处理chunk_之前对数组进行排序。@Mohanraj这是一个选项,但不清楚这是否是目的。它们可能是以某种时间顺序出现的。可能会添加
。拒绝(&:one?
)以删除非块。此外,
chunk\u while
返回一个枚举数。除非对结果调用
a
,否则无法获得显示的数组:
a.chunk\u while{| prev,val |(val-prev).abs很少看到一个答案提出了一种返回与OP所需值不同的值的方法,当该答案被授予greenie奖时,这种情况会加倍!不过,我可以看到你是如何对这个问题做出解释的,从而使它可以回答的。:-)