Znalezienie skarbu ukrytego przez piratów jest naprawdę łatwe. Wszystko, czego potrzebujesz, to mapa. Powszechnie wiadomo, że piraci ręcznie rysują mapy i opisują algorytm, aby znaleźć miejsce w następujący sposób: „Stań w pobliżu samotnej palmy, zrób 30 kroków w kierunku lasu, 15 w kierunku jeziora ...”
Podróż taką trasą jest zwykle świetną okazją do zobaczenia scenerii ... Jednak w dzisiejszych czasach nikt nie ma na to czasu. Dlatego poszukiwacze skarbów poprosili cię o napisanie programu, który określi dokładną lokalizację skarbu na podstawie danej mapy.
Wejście
Dane wejściowe składają się z wielu instrukcji <Direction> <Distance>
oddzielonych przecinkami (po których następuje jedna biała spacja).
Kierunek jest jednym z następujących:
N
- Północ, S
- Południe, E
- Wschód, W
- Zachód,
NE
- Północny wschód, - Północny NW
zachód, SE
- Południowy wschód, SW
- Południowy zachód.
Odległość jest liczbą całkowitą (od 1 do 1000).
Wynik
Rezultatem są współrzędne, w których kończysz po zakończeniu instrukcji, z trzema miejscami po przecinku, oddzielonymi przecinkiem i spacją. Lokalizacja początkowa ma zerowe współrzędne (0, 0).
Pierwsza współrzędna to X (wschód oznacza współrzędne większe niż zero, zachód oznacza mniej niż zero).
Druga współrzędna to Y (północ oznacza więcej niż zero, południe oznacza mniej niż zero).
Przykłady
1. N 3, E 1, N 1, E 3, S 2, W 1
3.000, 2.000
2) NW 10
-7.071, 7.071
3) NE 42, NW 42, SE 42, SW 42
0.000, 0.000
Źródło (w języku ukraińskim). Format wejściowy jest tam inny.
-3.000, 2.000
.(print (word (form xcor 4 3) ",) (form ycor 4 3))
. Ale nie jestem pewien, jak łatwe byłoby analizowanie danych wejściowych.Odpowiedzi:
Ruby 1.9,
175171162153130120117źródło
?i.to_c
można skrócić do1.i
-4 bajtów.Haskell (291)
źródło
C99 (319 znaków)
wejście
stdin
, uruchomienie testowe w ideone :)źródło
Python,
158154150 znakówźródło
D=dict(N=1j,E=1,S=-1j,W=-1)
[153] Wiersz 2: czyj
naprawdę jest potrzebny? [152] Wiersze 3-4: Jeśli przełączysz się na Python 3,raw_input
→input
i mimo że później będziesz musiał użyć nawiasówprint
, zapisujesz 2 znaki [150].real
i.imag
działać.imag
real
JavaScript,
179164170168158156153 znaki(E|W)
w wyrażeniu regularnym na(.)
d
n
zamiast nowej zmiennejd
153: Osobiście uważam, że ta edycja sprawia, że jest dziesięć razy brzydsza, ale jest o trzy znaki krótsza. Opiera się na niestandardowym zachowaniu, które można wywoływać obiektami RegExp jako funkcje:
/./g('string')
jest takie samo jak/./g.exec('string')
:for(p=prompt(X=Y=0),R=/(N|S)?(.)? (\d+)/g;[,y,x,n]=R(p)||0;X+=x?x<'W'?n:-n:0)n/=x&&y?Math.SQRT2:1,Y+=y?y<'S'?n:-n:0;alert(X.toFixed(3)+', '+Y.toFixed(3))
źródło
Haskell, 199 znaków
źródło
Scala (
367, 332)źródło
Java
(459) (445) (402) (382) (363)(352)wejście standardowe
źródło
PowerShell, 178
Prawdopodobnie może to stracić do 10 znaków, zmniejszając dokładność √2 / 2.
źródło
C (gcc) ,
155152 bajtów-3 bajty dzięki pułapce cat
Wypróbuj online!
źródło
Groovy (215)
odczytuje dane wejściowe jako argumenty programu. Przykład:
źródło
Perl 5
-n
, 122 bajtówWypróbuj online!
źródło
J , 93 bajty
Wypróbuj online!
źródło