Biorąc pod uwagę sztukę ASCII dwóch wektorów, znajdź wielkość i stopień uzyskanego wektora.
Wejście
Można to odebrać przez STDIN, odczytać z lokalnego pliku lub dostarczyć poprzez wywołanie funkcji. Oto przykład wejścia dwóch wektorów:
^------>
|
|
|
x
Oznacza to zmianę o 4 jednostki na północ i 7 jednostek na wschód. Punkt początkowy każdego wejścia będzie reprezentowany przez x(dziesiętny 120).
Wszystkie wektory są liniami poziomymi lub pionowymi.
Każdy wektor ma jeden z tych czterech punktów końcowych:
^v<>i składa się z myślnika (-dziesiętnie 45) lub pionowego paska (|dziesiętnie 124).Puste punkty na płaszczyźnie są wypełnione spacjami (
dziesiętnie 32).Dane wejściowe mogą być pojedyncze
x.Sąsiadujące wektory są zawsze prostopadłe do siebie.
Wszystkie wektory są od końca do końca.
Wynik
Będzie to przemieszczenie wynikowego punktu (odległość od punktu początkowego) i stopień, w jakim się przesunął, względem punktu początkowego.
Dla powyższego wejścia dane wyjściowe powinny być 8.06jednostkami i 60.3stopniami. Każda powinna mieć dokładnie 3 znaczące liczby. Oto kilka przykładów liczb z 3 cyframi znaczącymi:
- 1,00
- 60,1
- 453
- 7,08
- 4.50
- 349
Wszystkie pomiary jednostkowe będą <= 999.
Liczby te powinny być wyprowadzane w poniższym formacie. To używa liczb z góry.
8.06 units @ 60.3 degrees
Po tym może następować pojedyncza spacja lub znak nowej linii.
Jeśli dane wejściowe są pojedyncze x, bez przesunięcia, a tym samym bez kąta przesunięcia, dane wyjściowe powinny być pustą linią (pojedynczy znak nowej linii) lub mieć następujący format:
0 units @ - degrees
Jeśli próbujesz zakwalifikować się do premii, kierunek powinien również być -.
W przypadku, gdy bonusy 2, 3 lub oba zostaną zrealizowane, wynik powinien być zgodny z poniższym modelem i podlegać takim samym ograniczeniom jak powyżej.
8.06 units @ 60.3 degrees NE
Stopnie należy mierzyć zgodnie ze standardową płaszczyzną.
90
135 | 45
\|/
180 ---x---- 0
/|\
225 | 315
270
0stopnie to wschód, 1 - 89stopnie to północny wschód, 90to północ, itd.
Bonusy
Poniższe są warte łącznie -50%.
Odbierz premię -10% za każdy dodatkowy wektor, który można obsłużyć. Premię tę można zastosować maksymalnie 3 razy. Wektory nigdy się nie nakładają ani nie krzyżują.
Weź bonus -10%, jeśli twój wynik zawiera główny kierunek kąta (północ, południe, wschód, zachód).
Odbierz premię -10%, jeśli twój wynik zawiera pośrednie kierunki kąta (północny wschód, północny zachód, południowy wschód, południowy zachód).
Przykłady
W:
x---->
|
v
Na zewnątrz:
5.39 units @ 338 degrees
Opcjonalnie SE
W:
<--------------^
|
|
x
Na zewnątrz:
15.3 units @ 169 degrees
Opcjonalnie NW
W:
x
|
|<-----^
| |
v------>
Na zewnątrz:
2.24 units @ 297 degrees
Opcjonalnie SE
Przykłady (wiele wektorów)
W:
x--->
|
|
v----------->
Na zewnątrz:
16.3 units @ 349 degrees
Opcjonalnie SE
W:
<-------^
| |
| |
v |
|
|
x
Na zewnątrz:
8.54 units @ 159 degrees
Opcjonalnie NW
W:
^-->
| |
| v
|
<--------x
Na zewnątrz:
6.32 units @ 162 degrees
Opcjonalnie NW
x-->. Czy wektory mogą się krzyżować?
x. Może być ich więcej niż dwa (przy próbie uzupełnienia bonusu), ale nie mniej. Pracuję nad przykładami dla wielu wektorów. W żadnym wejściu wektory się nie krzyżują. @ThomasKwa
x? Jaka jest granica między północą a północnym zachodem?