【问题标题】:Searching through arrays in Ruby using a range使用范围在 Ruby 中搜索数组
【发布时间】:2011-10-10 04:24:02
【问题描述】:

我已经看到很多其他问题都涉及到这个主题,但没有任何一个主题可以为我的特定问题提供答案。有没有办法在给定范围内搜索数组并返回值... 为清楚起见,我有一个数组 = [0,5,12] 我想使用一系列数字将数组与另一个数组(array2)进行比较。 使用 array[0] 作为起点,我将如何从 array2 +/- 4 of array[0] 返回所有值。

在这种特殊情况下,array2 返回的数字将在 -4 和 4 的范围内。

感谢忍者的帮助。

【问题讨论】:

    标签: ruby arrays search numbers range


    【解决方案1】:

    构建一个作为目标 ±4 的 Range,然后使用 Enumerable#select(记住 Array 包括 Enumerable)和 Range#include?

    例如,让我们在包含 1 到 100(含)之间的整数的数组中查找 11±4:

    a = (1..100).to_a
    r = 11-4 .. 11+4
    a.select { |i| r.include?(i) }
    # [7, 8, 9, 10, 11, 12, 13, 14, 15]
    

    如果您不关心在输出中保留顺序并且您的数组中没有任何重复项,您可以这样做:

    a & (c-w .. c+w).to_a
    

    c 是区间的中心,w 是区间的宽度。使用 Array#& 会将数组视为集合,因此它会删除重复项,并且不能保证保留顺序。

    【讨论】:

    • 太棒了!感谢您的帮助。
    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多