Arrays 在ruby数组中查找具有距离的对

Arrays 在ruby数组中查找具有距离的对,arrays,ruby,ruby-2.0,Arrays,Ruby,Ruby 2.0,我有一个带有一系列值的大数组。 检查位置x上的值是否对位置x上的值+距离有影响 我想找到所有的配对 pair = [values[x], values[x+1]] 下面的代码可以工作 pairs_with_distance = [] values.each_cons(1+distance) do |sequence| pairs_with_distance << [sequence[0], sequence[-1]] end 将_与_距离配对=[] 值。每个|cons(1+

我有一个带有一系列值的大数组。 检查位置x上的值是否对位置x上的值+距离有影响 我想找到所有的配对

pair = [values[x], values[x+1]]
下面的代码可以工作

pairs_with_distance = []
values.each_cons(1+distance) do |sequence| 
  pairs_with_distance << [sequence[0], sequence[-1]]
end
将_与_距离配对=[]
值。每个|cons(1+距离)不按|顺序|

将_与_距离配对您可以直接使用
map
缩短代码:

pairs_with_distance = values.each_cons(1 + distance).map { |seq| 
  [seq.first, seq.last]
}
我更喜欢下面的例子,因为它有短的、可读的代码行,并且因为它将步骤分开——这种方法允许您为中间计算提供有意义的名称(
groups
)。根据应用程序的实际域,您可能会想出更好的名称

values   = [11,22,33,44,55,66,77]
distance = 2

groups = values.each_cons(1 + distance)
pairs  = groups.map { |seq| [seq.first, seq.last] }

p pairs