【问题标题】:Find pairs with distance in ruby array在 ruby​​ 数组中查找具有距离的对
【发布时间】:2013-05-05 22:36:11
【问题描述】:

我有一个包含一系列值的大数组。 检查位置 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

但它看起来很复杂,我想知道我是否可以让它更短更清晰

【问题讨论】:

    标签: arrays ruby ruby-2.0


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2016-05-07
      相关资源
      最近更新 更多