2015-09-07 55 views
1

我有一个查询。我有两个整数范围,例如100-500和600-800。这是他们如何看:匹配整数

范围1

start_range = 100 
end_range = 500 

范围2

start_range_new = 600 
end_range_new = 800 

我想在我可以匹配两个范围(范围1和范围内的方法的逻辑2)使这两个范围完全排斥,这意味着这两个范围不相交。

如果两个范围相交,则将局部变量设为true,如果不是,则局部变量应为false

+1

为什么标记为[c]? – Michael

+0

什么具有u尝试至今,发表您的逻辑在这里 – Bijendra

+0

@迈克尔 - 这是错误 – user4965201

回答

8

如果您使用Rails的(或的ActiveSupport),你可以使用Range#overlaps?方法:

# Compare two ranges and see if they overlap each other 

# (1..5).overlaps?(4..6) # => true 
# (1..5).overlaps?(7..9) # => false 

如果你不想使用的ActiveSupport,可以实现它自己的帮手功能:

# Compare two ranges and see if they overlap each other 
# overlaps?(1..5, 4..6) # => true 
# overlaps?(1..5, 7..9) # => false 
def overlaps?(one, another) 
    one.cover?(other.first) || other.cover?(one.first) 
end 
4
variable = !((start_range_new > end_range) || (start_range > end_range_new)) 
+0

start_range = 100,end_range = 500,start_range_new = 400,end_range_new = 800,这里400点在于范围1,但你的回答给变量假 – user4965201

+0

你是对的,它应该返回相反的值:)编辑。 –

0
a = (0..20) 
b = (15..30) 

def exclusive?(x,y) 
    return x.first > y.last || x.last < y.first 
end 

exclusive?(a,b) //False