2015-09-07 69 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