检查X轴上的两条线A(x1,x2)和B(x3,x4)是否重叠
isover10的Python项目详细描述
检查x轴上的两条线(x1,x2)和(x3,x4)是否重叠或不
如果它们重叠,则返回true,否则返回false
例如,(1,5)和(2,6)重叠,而不是(1,5)和(6,8)。
解决方案基于以下架构:
A0------------------A1
B0------B1 B0------B1
if B1<A0 OR B0>A1 then
Line B does NOT overlap Line A
else
Line B DOES ovelap Line A
因此,我们需要确保A和B已订购:
def swap(X):
'''
this function does make sure the pair is
ordered (a,b) where a<b
(10, -5) would become (-5, 10)
'''
if X[0]>X[1]:
return (X[1],X[0])
return X
A, B = swap(A), swap(B)
建议的解决方案:
定义Isbovera(a,b):
# Return True if A Line overlaps B Line; False otherwise
A, B = swap(A), swap(B)
return not (B[1]<A[0] or B[0]>A[1])
要调用此函数,请查看testoverlav0.py
(venv)c:\工作\vanhack\venv\quiz\test_a>;python testoverlav0.py
<这个程序接受x轴上的两行(x1,x2)和(x3,x4)并返回 它们是否重叠(真)或不重叠(假)输入要检查的行总数,默认值为1对
请添加1行待检查-使用逗号
(1,2),(3,4)应键入1,2,3,4
1,5,2,6
(1.0,5.0)(2.0,6.0)正确
真平均(1,2)和(5,6)do重叠
让我们检查下面的一对(1,5)和(6,8)
(1,5)和(6,8)应输入如下:
1,5,6,8
(1.0,5.0)(6.0,8.0)错误
假平均值(1,2)和(6,8)不重叠
注: 我们使用的是float,但没有提到它-set/intersection也可以处理它,但仅限于int图形
要将其作为批处理模块运行,应创建一个包含n对(逗号分隔)的文本文件,如下所示:
第一行,要检查的对数 第二行下一对要检查 等等
示例:
4
13,-6,-8,3
-15、-6、4、-11
-4、-2、0、-20
-18、9、10、12
**请检查testsample.txt**
python testoverlav0.py<;testsample.txt
<这个程序接受x轴上的两行(x1,x2)和(x3,x4)并返回它们是否重叠。 输入要检查的行总数,默认值为1对 请添加100行待检查-使用逗号 (1,2),(3,4)应键入1,2,3,4(13.0,-6.0)(8.0,3.0)真值
(-15.0,-6.0)(4.0,-11.0)正确
(-4.0,-2.0)(0.0,-20.0)真值
(-18.0,9.0)(10.0,12.0)错误