计算重叠的位置

The*_*Cat 2 python algorithm

如果你有两对值,开始和结束 - 你如何计算它们的重叠位置?

即,如果开始和结束值对是

[10,20],[15,20]

在这种情况下compute_overlap((15,20),(10,20))应该返回,(15,20)因为这是重叠的地方.

做这个的最好方式是什么?

Fre*_*Foo 7

如果您的间隔是a, bc, d,即

(a, b), (c, d) = [10, 20], [15, 20]
Run Code Online (Sandbox Code Playgroud)

然后重叠间隔是

x, y = max(a, c), min(b, d)
if x > y:  # no overlap
    x, y = None, None
Run Code Online (Sandbox Code Playgroud)

并且重叠量是y - xy - x + 1,取决于您的间隔是关闭还是半关闭(假设这里是整数).