你是一艘战舰的船长。工程部门今年一直在偷工减料,因此您所乘坐的船采用简单三角形的形状。
您走到甲板上享受海风……虽然时间不长。敌人向您开火!—但是会击中镜头吗?
输入值
您可以为此挑战编写函数或完整程序。
您的程序将使用11个整数,其中十个是成对的:
前三对整数(x 1,y 1),(x 2,y 2),(x 3,y 3)将指定您的飞船的顶点。形成的三角形将具有非零面积。
下一对整数(e x,e y)指定敌人的大炮的位置。敌方加农炮永远不会躺在您的飞船上或飞船的边界内。*
之后的对(a x,a y)指定了敌人的瞄准目标。这将不同于(e x,e y)。
最后的正整数R指定敌人的射程
*如果您甚至没有注意到发生的事情,您将是一个可怕的队长!
输出量
如果将要击中战列舰,则必须打印/返回真实值(例如,true,1),否则必须打印/返回虚假值(例如,false,0)。
什么是热门?
敌人的射击是从(e x,e y)开始沿(a x,a y)的长度为R的直线段。如果此线段与三角形战舰内部的任何部分重叠,则视为命中。否则,它不会受到打击。
沿三角形边界或仅达到三角形边界的镜头不算是命中。
例子
0 0 0 1 1 0
1 1
0 0
2
击中:敌人已从您的船中央射中了!
2 0 0 2 4 4
0 0
1 1
1
没有命中:敌人的射程太短,所以您很安全。
0 0 1 2 3 0
-4 0
0 0
8
不命中:敌人已经掠过了您舰船的侧面,因此这不算是命中。幸运!
0 0 -1 3 4 -1
-3 -4
3 4
5
没有命中:敌人的射门只是在飞船附近停了下来,所以你很安全。如果敌人的大炮的射程更好,那么您将被击中!!
-2 -3 -3 6 7 -2
-6 2
1 -4
7
命中:即使射击没有穿透到另一侧,这仍然是命中。
-3 2 2 -4 7 -3
-3 -4
-3 0
10
没有成功:记录下来,这是另一个亲密的小姐。
其他测试用例
0 0 6 0 6 8
-6 -8
6 8
20
没有命中:这是另一场轻食,但有一个角度。
0 0 -2 -5 5 3
-3 4
0 0
6
命中:通过船的顶点进入的镜头。
计分
0 0 -1 3 4 -1 -3 -4 3 4 6
。