Вы капитан линкора. В этом году инженерный отдел занимался разработкой дизайна, поэтому корабль, на котором вы находитесь, принимает форму простого треугольника.
Вы выходите на палубу и наслаждаетесь морским бризом ... хотя и ненадолго. Враг выстрелил в тебя! - но ударит ли выстрел?
вход
Вы можете написать либо функцию, либо полную программу для этой задачи.
Ваша программа будет принимать 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).
Что такое хит?
Выстрел противника представляет собой отрезок прямой длины R от (e x , e y ) в направлении (a x , a y ). Если этот отрезок линии перекрывает любую часть внутренней части вашего треугольного линкора, то это считается ударом. В противном случае это не хит.
Выстрелы, которые пасутся вдоль или достигают границы треугольника, не считаются попаданием.
Примеры
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
.