Jesteś kapitanem pancernika. W tym roku dział inżynierii robi postępy, więc statek, na którym płyniesz, ma kształt prostego trójkąta.
Wychodzisz na pokład i rozkoszujesz się morską bryzą ... choć nie na długo. Wróg strzelił do ciebie! - ale czy strzał trafi?
Wejście
Możesz napisać funkcję lub pełny program dla tego wyzwania.
Twój program przyjmie 11 liczb całkowitych, z których dziesięć jest sparowanych:
Pierwsze trzy pary liczb całkowitych (x 1 , y 1 ), (x 2 , y 2 ), (x 3 , y 3 ) określą wierzchołki twojego statku. Utworzony trójkąt będzie miał niezerowe pole.
Kolejna para liczb całkowitych (e x , e y ) określa lokalizację działa przeciwnika. Działo wroga nigdy nie będzie leżeć ani w granicach twojego statku. *
Para ( x , y ) po tym określa, dokąd skierowany jest wróg. Będzie to różnić się od (e x , e y ).
Ostateczna dodatnia liczba całkowita R określa zasięg strzału wroga
* Byłbyś okropnym kapitanem, gdybyś nawet tego nie zauważył!
Wynik
Musisz wydrukować / zwrócić prawdziwą wartość (np. Prawda, 1), jeśli pancernik zostanie trafiony, w przeciwnym razie wartość fałszu (np. Fałsz, 0).
Co to jest hit?
Strzał wroga to odcinek linii prostej o długości R od (e x , e y ) w kierunku (a x , y y ). Jeśli ten segment linii pokrywa się z dowolną częścią wnętrza twojego trójkątnego pancernika, liczy się to jako trafienie. W przeciwnym razie nie jest to hit.
Strzały, które pasą się lub sięgają tylko do granicy trójkąta, nie liczą się jako trafienie.
Przykłady
0 0 0 1 1 0
1 1
0 0
2
Trafienie: wróg strzelił prosto w środek twojego statku!
2 0 0 2 4 4
0 0
1 1
1
Bez trafienia: zasięg wroga jest zbyt krótki, więc jesteś bezpieczny.
0 0 1 2 3 0
-4 0
0 0
8
Bez trafienia: wróg zranił bok twojego statku, więc nie liczy się to jako trafienie. Szczęściarz!
0 0 -1 3 4 -1
-3 -4
3 4
5
Bez trafienia: Strzał wroga zatrzymuje się tuż przed statkiem, więc jesteś bezpieczny. Gdyby działo przeciwnika miało nawet nieco lepszy zasięg, trafiłbyś w cel! Uff!
-2 -3 -3 6 7 -2
-6 2
1 -4
7
Trafienie: Mimo że strzał nie przeszedł na drugą stronę, nadal jest to trafienie.
-3 2 2 -4 7 -3
-3 -4
-3 0
10
Bez trafienia: Dla przypomnienia jest to kolejny bliski traf .
Dodatkowe przypadki testowe
0 0 6 0 6 8
-6 -8
6 8
20
Bez trafienia: to kolejny pas, ale pod kątem.
0 0 -2 -5 5 3
-3 4
0 0
6
Trafienie: Strzał wszedł przez wierzchołek statku.
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach. Obowiązują standardowe luki .
0 0 -1 3 4 -1 -3 -4 3 4 6
.