给定由起始点和终点(两个浮点数)定义的间隔,我想确定第二个间隔的交集范围。例如:获取两个非离散间隔的交集范围
int1 = [2. , 5.]
int2 = [2.2, 7.]
>>> desired_function(int1, int2)
2.8
应该处理所有交叉点的可能性(没有交点,部分相交,相交完成,也为负的范围等)。我的尝试是这样的:
def intersection(int1, int2):
#case 1: partial intersection over the left or right border
if (int2[0]<=int1[0] and int2[1]<=int1[1]) or (int2[0]>=int1[0] and int2[1]>=int1[1]):
return min(int1[1],int2[1]) - max(int1[0],int2[0])
#case 2: complete overlap of one interval by the other
elif (int2[0]>=int1[0] and int2[1]<=int1[1]) or (int2[0]<=int1[0] and int2[1]>=int1[1]):
return min (int2[1]-int2[0] , int1[1]-int1[0])
#case 3: no overlap at all
else:
return 0
问:我错过了一些东西,在那里,做类似的,因为要保持我的代码一样简单和尽快任何东西积聚在溶液中或包装?
谢谢!这实际上正是我的第一种情况的“return”声明,但是我以某种方式试图努力并且没有意识到这已经处理了所有可能性......'+ 1'用于多个间隔的解决方案 –