如何计算Ruby中两个普通区间的交集?

Kon*_*tin 2 ruby arrays intersection intervals

间隔由它们的边界给出为数组[a,b]和[x,y].我想计算它们之间的交叉长度.根据这个页面:http://world.std.com/~swmcd/steven/tech/interval.html

我可以告诉它是0如果

(not (a < y && x < b)) 
Run Code Online (Sandbox Code Playgroud)

成立.

例如,间隔[1.2,4.3]和[2.1,5.5]交叉点长度为4.3-2.1 = 2.2

Car*_*and 6

这应该做到这一点.

def length(a,b,p)
  [[a.last,b.last].min - [a.first,b.first].max,0].max.round(p)
end
Run Code Online (Sandbox Code Playgroud)

例子

在此输入图像描述