数组的元素是否在另一个数组的范围内

时间:2013-09-04 18:42:07

标签: ruby

对于这些数组:

array_a = [50,13,25, 35, 45]
array_b = [14,45]

我想知道b中的每个值是否与a。中的值范围有关。

此处的结果应为true,因为14和45都在13到50之间。

3 个答案:

答案 0 :(得分:3)

a = [50,13,25, 35, 45]
b = [13,45]

mina, maxa = a.minmax
result = b.all? {|num| mina <= num and num <= maxa }
puts result

--output:--
true

或者纳入阿德里安的想法:

a = [50, 13, 25, 35, 45]
b = [13, 45]

mina, maxa = a.minmax
minb, maxb = b.minmax

result = (mina <= minb and maxb <= maxa)
puts result

--output:--
true

答案 1 :(得分:3)

我会这样做: -

a = [50,13,25, 35, 45]
b = [13,45]
min_max_a = a.minmax
b.all? {|num| num.between?(*min_max_a) }
# => true

答案 2 :(得分:2)

array_a = [50,13,25,35,45]
array_b = [14,45]
array_a.max >= array_b.max && array_a.min <= array_b.min
# => true

编辑:我认为Babai的解决方案稍微快一点,更优雅。

编辑:所以最有效的解决方案是:

array_a = [50,13,25,35,45]
array_b = [14,45]
min,max = array_a.minmax
array_b.all? {|num| num<=max && num>=min }
# => true