0

对于这些数组:

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

我想知道b中的每个值是否都在a中的值范围内。

这里的结果应该是true因为 14 和 45 都在 13 和 50 之间。

4

3 回答 3

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
于 2013-09-04T18:55:20.043 回答
3

我会做如下: -

a = [50,13,25, 35, 45]
b = [13,45]
min_max_a = a.minmax
b.all? {|num| num.between?(*min_max_a) }
# => true
于 2013-09-04T19:15:56.750 回答
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
于 2013-09-04T18:45:48.743 回答