Eres el capitán de un acorazado. El departamento de ingeniería ha estado cortando esquinas con diseños este año, por lo que el barco en el que estás toma la forma de un triángulo simple.
Sales a la terraza y disfrutas de la brisa marina ... aunque no por mucho tiempo. ¡Un enemigo te ha disparado! - ¿Pero el tiro golpeará?
Entrada
Puede escribir una función o un programa completo para este desafío.
Su programa tomará 11 enteros, diez de los cuales están emparejados:
Los primeros tres pares de enteros (x 1 , y 1 ), (x 2 , y 2 ), (x 3 , y 3 ) especificarán los vértices de tu nave. El triángulo formado tendrá un área distinta de cero.
El siguiente par de enteros (e x , e y ) especifica la ubicación del cañón del enemigo. El cañón enemigo nunca estará sobre, o dentro de los límites de tu nave. *
El par (a x , a y ) después de eso especifica dónde apuntó el enemigo. Esto será distinto de (e x , e y ).
El número entero positivo final R especifica el alcance del disparo del enemigo.
* ¡Serías un capitán terrible si ni siquiera te dieras cuenta de que eso está sucediendo!
Salida
Debe imprimir / devolver un Truthy valor (por ejemplo verdadera, 1) si el acorazado se verán afectados, de lo contrario un valor Falsy (por ejemplo falsa, 0).
¿Qué es un hit?
El disparo enemigo es un segmento de línea recta de longitud R desde (e x , e y ) en la dirección de (a x , a y ). Si este segmento de línea se superpone a cualquier parte del interior de su acorazado triangular, entonces esto cuenta como un golpe. De lo contrario, no es un éxito.
Los disparos que pastan o solo alcanzan el límite del triángulo no cuentan como un golpe.
Ejemplos
0 0 0 1 1 0
1 1
0 0
2
Golpe: ¡ El enemigo ha disparado a través del centro de tu nave!
2 0 0 2 4 4
0 0
1 1
1
Ningún golpe: el alcance del enemigo es demasiado corto, por lo que estás a salvo.
0 0 1 2 3 0
-4 0
0 0
8
Sin golpe: el enemigo ha rozado el costado de su nave, por lo que esto no cuenta como un golpe. ¡Suerte!
0 0 -1 3 4 -1
-3 -4
3 4
5
Ningún golpe: el disparo enemigo simplemente se detiene cerca de la nave, por lo que estás a salvo. Si el cañón del enemigo tuviera un alcance incluso ligeramente mejor, ¡entonces habrías sido golpeado! ¡Uf!
-2 -3 -3 6 7 -2
-6 2
1 -4
7
Golpe: Aunque el disparo no penetró al otro lado, sigue siendo un golpe.
-3 2 2 -4 7 -3
-3 -4
-3 0
10
Sin éxito: para el registro, esta es otra falta cercana.
Casos de prueba adicionales
0 0 6 0 6 8
-6 -8
6 8
20
Ningún golpe: esta es otra pasta, pero en ángulo.
0 0 -2 -5 5 3
-3 4
0 0
6
Impacto: el disparo ingresado a través de un vértice de la nave.
Puntuación
Este es el código de golf , por lo que gana el código más corto en bytes. Se aplican lagunas estándar .
0 0 -1 3 4 -1 -3 -4 3 4 6
.