使用范围在 Ruby 中搜索数组
我看到很多其他问题都涉及该主题,但没有任何问题能够为我的特定问题提供答案。有没有办法搜索数组并返回给定范围内的值... 为了清楚起见,我有一个数组 = [0,5,12] 我想使用一系列数字将数组与另一个数组(array2)进行比较。 使用 array[0] 作为起点,我将如何返回 array[0] 的 array2 +/- 4 中的所有值。
在这种特殊情况下,从 array2 返回的数字将在 -4 和 4 的范围内。
感谢忍者的帮助。
i've seen a lot of other questions touch on the subject but nothing as on topic as to provide an answer for my particular problem. Is there a way to search an array and return values within a given range...
for clarity I have one array = [0,5,12]
I would like to compare array to another array (array2) using a range of numbers.
Using array[0] as a starting point how would I return all values from array2 +/- 4 of array[0].
In this particular case the returned numbers from array2 will be within the range of -4 and 4.
Thanks for the help ninjas.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
构建一个目标 ±4 的范围,然后使用
Enumerable #select
(记住数组包括 Enumerable)和范围#include?
。
例如,让我们在包含 1 到 100(含)之间的整数的数组中查找 11±4:
如果您不关心在输出中保留顺序并且数组中没有任何重复项,您可以这样做:
其中
c
是间隔的中心,w
是间隔的宽度。使用Array#&
将数组视为集合,因此它将删除重复项,并且不保证保留顺序。Build a Range that is your target ±4 and then use
Enumerable#select
(remember that Array includes Enumerable) andRange#include?
.For example, let us look for 11±4 in an array that contains the integers between 1 and 100 (inclusive):
If you don't care about preserving order in your output and you don't have any duplicates in your array you could do it this way:
Where
c
is the center of your interval andw
is the interval's width. UsingArray#&
treats the arrays as sets so it will remove duplicates and is not guaranteed to preserver order.