Vous êtes le capitaine d'un cuirassé. Le département d'ingénierie a pris les devants avec des designs cette année, donc le navire sur lequel vous êtes prend la forme d'un simple triangle.
Vous sortez sur le pont et profitez de la brise marine ... mais pas pour longtemps. Un ennemi vous a tiré dessus! - mais le coup va-t-il frapper?
Contribution
Vous pouvez écrire une fonction ou un programme complet pour ce défi.
Votre programme comprendra 11 entiers, dont dix sont jumelés:
Les trois premières paires d'entiers (x 1 , y 1 ), (x 2 , y 2 ), (x 3 , y 3 ) spécifieront les sommets de votre vaisseau. Le triangle formé aura une aire non nulle.
La prochaine paire d'entiers (e x , e y ) spécifie l'emplacement du canon ennemi. Le canon ennemi ne reposera jamais sur ou à l'intérieur des limites de votre navire. *
La paire (a x , a y ) après cela spécifie où l'ennemi visait. Ce sera différent de (e x , e y ).
Le dernier entier positif R spécifie la portée du tir de l'ennemi
* Vous seriez un terrible capitaine si vous ne l'aviez même pas remarqué!
Production
Vous devez imprimer / retourner une valeur véridique (par exemple true, 1) si le cuirassé sera touché, sinon une valeur falsifiée (par exemple false, 0).
Qu'est-ce qu'un hit?
Le tir ennemi est un segment de ligne droite de longueur R de (e x , e y ) dans la direction de (a x , a y ). Si ce segment de ligne chevauche une partie de l' intérieur de votre cuirassé triangulaire, cela compte comme un coup. Sinon, ce n'est pas un succès.
Les coups qui frôlent le long du triangle ou atteignent seulement la limite du triangle ne comptent pas comme un coup.
Exemples
0 0 0 1 1 0
1 1
0 0
2
Hit: l'ennemi a tiré à travers le centre de votre vaisseau!
2 0 0 2 4 4
0 0
1 1
1
Aucun coup sûr : la portée de l'ennemi est trop courte, vous êtes donc en sécurité.
0 0 1 2 3 0
-4 0
0 0
8
Aucun coup sûr: l'ennemi a effleuré le côté de votre vaisseau, donc cela ne compte pas comme un coup sûr. Chanceux!
0 0 -1 3 4 -1
-3 -4
3 4
5
Aucun coup sûr : le tir ennemi s'arrête juste devant le navire, vous êtes donc en sécurité. Si le canon ennemi avait une portée encore légèrement meilleure, alors vous auriez été touché! Phew!
-2 -3 -3 6 7 -2
-6 2
1 -4
7
Coup: Même si le tir n'a pas pénétré de l'autre côté, c'est toujours un coup.
-3 2 2 -4 7 -3
-3 -4
-3 0
10
Pas de succès: Pour mémoire, il s'agit d'un autre coup sûr.
Cas de test supplémentaires
0 0 6 0 6 8
-6 -8
6 8
20
Pas de coup: c'est un autre pâturage, mais en biais.
0 0 -2 -5 5 3
-3 4
0 0
6
Coup: Le tir est entré via un sommet du navire.
Notation
Il s'agit de code-golf , donc le code le plus court en octets l'emporte. Des échappatoires standard s'appliquent.
0 0 -1 3 4 -1 -3 -4 3 4 6
.