Podjąłem to wyzwanie niezależnie, ale okazało się, że jest odwrotnością tego wyzwania Doorknob . Ponieważ bardzo podoba mi się jego specyfikacja, postanowiłem ukraść jej duże części zamiast gotować własne wyjaśnienia.
Wyzwanie
Biorąc pod uwagę skrót jednego z 32 punktów na kompasie, wydrukuj odpowiednie stopnie. Jeśli nie jesteś zainteresowany wyjaśnieniem 32 punktów, możesz przejść do poniższej tabeli.
Oto pełny kompas:
Autor: Denelson83 (praca własna) [ GFDL lub CC-BY-SA-3.0 ], za pośrednictwem Wikimedia Commons
Każdy kierunek jest o 11,25 (360/32) stopni dalej niż poprzedni. Na przykład N (północ) wynosi 0 stopni, NbE (północ na wschód) wynosi 11,25 stopni, NNE (północno-północny wschód) wynosi 22,5 stopnia itp.
Szczegółowo nazwy są przypisywane w następujący sposób:
- 0 stopni to N, 90 stopni to E, 180 stopni to S, a 270 stopni to W. Są to tak zwane kierunki kardynalne.
- Punkty w połowie drogi między głównymi kierunkami są po prostu głównymi kierunkami, które znajdują się między połączonymi. N lub S zawsze są pierwsze, a W lub E zawsze są drugie. Są to tak zwane kierunki porządkowe. Kierunki porządkowy i kardynalny razem tworzą główne wiatry.
- Punkty w połowie drogi między głównymi wiatrami to kierunki, które łączą je ze sobą. Kierunki kardynalne idą pierwsze, porządkowe drugie. Są to tak zwane pół wiatry.
- Punkty w połowie drogi między wiatrem głównym a połowicznym to sąsiedni wiatr główny „o” najbliższym kierunku kardynalnym od wiatru głównego. Jest to oznaczone symbolem
b
. Są to tak zwane wiatry ćwiartkowe.
Powoduje to następujący wykres:
# Degrees Abbrv. Name
1 0 N North
2 11.25 NbE North by east
3 22.5 NNE North-northeast
4 33.75 NEbN Northeast by north
5 45 NE Northeast
6 56.25 NEbE Northeast by east
7 67.5 ENE East-northeast
8 78.75 EbN East by north
9 90 E East
10 101.25 EbS East by south
11 112.5 ESE East-southeast
12 123.75 SEbE Southeast by east
13 135 SE Southeast
14 146.25 SEbS Southeast by south
15 157.5 SSE South-southeast
16 168.75 SbE South by east
17 180 S South
18 191.25 SbW South by west
19 202.5 SSW South-southwest
20 213.75 SWbS Southwest by south
21 225 SW Southwest
22 236.25 SWbW Southwest by west
23 247.5 WSW West-southwest
24 258.75 WbS West by south
25 270 W West
26 281.25 WbN West by north
27 292.5 WNW West-northwest
28 303.75 NWbW Northwest by west
29 315 NW Northwest
30 326.25 NWbN Northwest by north
31 337.5 NNW North-northwest
32 348.75 NbW North by west
Oto bardziej szczegółowa tabela i być może lepsze wyjaśnienie punktów kompasu.
Twoim zadaniem jest pobranie jednego z 32 skrótów z trzeciej kolumny i wypisanie odpowiednich stopni w drugiej kolumnie.
Możesz założyć, że wejście zawsze będzie dokładnie jednym z tych 32 ciągów (i możesz opcjonalnie, ale konsekwentnie oczekiwać pojedynczego nowego wiersza). Dane wyjściowe należy również podawać dokładnie tak, jak podano powyżej, chociaż dozwolone są zera końcowe Opcjonalnie możesz wypisać jeden końcowy znak nowej linii.
Możesz napisać program lub funkcję, pobierając dane wejściowe przez STDIN (lub najbliższą alternatywę), argument wiersza poleceń lub argument funkcji i wypisując wynik przez STDOUT (lub najbliższą alternatywę), wartość zwracaną funkcji lub parametr funkcji (wyjściowej).
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach).
źródło
n
ale musiałem je ostrożnie wybierać.JavaScript (ES6), 153 bajty
Chciałem tylko, żeby piłka toczyła się z prostą.
Nie jest to szczególnie innowacyjne, ale działa, a być może istnieją pewne wskazówki, które można z niego wyciągnąć. Nie martw się, wymyślę inną (miejmy nadzieję lepszą) technikę.
źródło
CJam, 49 bajtów
Powyżej jest zrzut heksowy, który można odwrócić za pomocą
xxd -r -c 17 -g 1
.Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
Java, 653 (znaki)
Wiem, że Java nie może wygrać, ale i tak staram się.
Pobiera dane z wiersza poleceń i dane wyjściowe do konsoli. Wersja bez golfa:
Działa poprzez przypisanie 0-3 do NW (lub 4 dla N, jeśli zaangażowany jest W). Rozpoznaje 4 różne sytuacje:
W print () wartość jest mnożona przez 90, aby uzyskać rzeczywisty kąt.
źródło
C c=new C(r[0]);
? Możenew C(r[0]);
wystarczy?Python 3, 149 bajtów
Wypróbowałem rekurencyjne podejście algorytmiczne. Ćwiartkowe wiatry były trudniejsze do opanowania, niż początkowo myślałem, więc to rozwiązanie stało się stosunkowo długie.
Nie golfowany:
źródło
f("NbW")
zwraca34.875
zamiast348.75
)Haskell, 206 bajtów
Wygodny test:
źródło
PowerShell - 350
źródło
Julia,
151147142 bajtówNieco golfista:
W kodzie bez golfa liczę średnią dwóch wektorów , aby wektor nadal był znormalizowany. Jednak błędy wynikające z wydłużenia pierwszego wektora nie kumulują się przy tak małych dodatkach w naszej rekurencji, więc podczas gry w golfa krok normalizacji został usunięty, a obliczenia idą po prostu. Błędy mniejsze niż 1/64 pełnego koła są odfiltrowywane przez zaokrąglanie.
źródło