基于截止值的数组的Ruby代码哈希

Kpa*_*gee 0 ruby arrays hash

我有一系列浮动数字和一定的截止值:

myData = [1.3,1.5,1.7,1.7,16.7,18.4,19.2,19.5,19.6,20.2,20.8,58.4,60.7,
          61.2,61.2,116.4,121.2,122.7,123.2,123.2,138.5,149.5,149.5]
myBin = 5.3
Run Code Online (Sandbox Code Playgroud)

我想构建一个数组哈希,以便最后一个元素和数组的第一个元素之间的减法差异小于或等于myBin(5.3)

myHash = {
'hap_1' => [1.3,1.5,1.7],
'hap_2' => [16.8, 18.4,19.2,19.5,19.6,20.2,20.8],
'hap_3' => [58.4,60.7,61.2,61.2],
'hap_4' => [116.4,121.2],
'hap_5' => [122.7,123.2,123.2],
'hap_6' => [138.5],
'hap_7' => [149.5,149.5]}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的时间和有用的帮助.干杯

Ily*_*lya 6

Enumerable#slice_before 可以解决你的问题:

first = myData[0]
myData.slice_before { |e| first = e if e - first > myBin }.to_a
#=> [[1.3, 1.5, 1.7, 1.7],
#    [16.7, 18.4, 19.2, 19.5, 19.6, 20.2, 20.8],
#    [58.4, 60.7, 61.2, 61.2],
#    [116.4, 121.2],
#    [122.7, 123.2, 123.2],
#    [138.5],
#    [149.5, 149.5]]
Run Code Online (Sandbox Code Playgroud)

  • @ sagarpandya82这是一个很好的"练习留给读者". (3认同)