我遇到了一个问题,明确要求我不要使用numpy或panda
问题:
给定两组数据点的元组列表形式,如
Red =[(R11,R12),(R21,R22),(R31,R32),(R41,R42),(R51,R52),..,(Rn1,Rn2)]
Blue=[(B11,B12),(B21,B22),(B31,B32),(B41,B42),(B51,B52),..,(Bm1,Bm2)]
和直线方程组(字符串格式,即字符串列表)
Lines = [a1x+b1y+c1,a2x+b2y+c2,a3x+b3y+c3,a4x+b4y+c4,..,K lines]
注意:你需要在这里做字符串解析,得到x,y和截距的系数。
你在这里的任务是为每一行打印“YES”/“NO”。如果所有的红点都在该行的一边,蓝点在该行的另一边,你应该打印YES,否则你应该打印NO。
Ex:
Red= [(1,1),(2,1),(4,2),(2,4), (-1,4)]
Blue= [(-2,-1),(-1,-2),(-3,-2),(-3,-1),(1,-3)]
Lines=["1x+1y+0","1x-1y+0","1x+0y-3","0x+1y-0.5"]
Output:
YES
NO
NO
YES
从数学上讲,你用直线方程S
Suppose S(x)(y) = 1x+1y+0
Now take points (1,1) and (-6,-1)
S(1)(1) = 1(1)+ 1(1) = 2 >0
S(-6)(-1) = 1(-6)+(1)(-1) = -7 <0
因此,我们可以得出结论,(1,1)和(-6,-1)位于线S的不同侧。
在这个问题中,给定一个方程S,所有的红色应该在方程的一边,蓝色在另一边。
这里的问题是,我不知道如何用python替换以字符串形式给出的方程中列表中的点的值。
此外,我没有拿出一个逻辑(如何使用循环根据我们的要求)的代码来解决上述问题。
希望你能对这个问题有深刻的见解。先谢了。
9条答案
按热度按时间mutmk8jj1#
使用your_string.replace()和eval()函数,将x和y字符替换为它的值,eval()将字符串作为等式执行
drkbr07n2#
假设字符串的形式总是
(in那个订单),你可以写
9njqaruj3#
Python3程序检查两个点是否位于同一侧
驱动程序代码
lokaqttq4#
@赫曼特·拉瓦瓦拉普,关于分裂(x|y)将基于x或y分裂线方程,即,如果你给予空间,那么它将基于空间分裂,同样,在这里,它也在找到x或y的地方分裂。
5lhxktic5#
fsi0uk1n6#
对于字符串解析:
输出:
ljo96ir57#
输出:
eufgjt7s8#
6tqwzwtp9#