32-punktowy kompas jest ... co najmniej interesujący.
Autor: Denelson83 (praca własna) [ GFDL lub CC-BY-SA-3.0 ], za pośrednictwem Wikimedia Commons
Twoim zadaniem jest zmierzyć stopień i przekonwertować go na 32-punktowy kompas.
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.
Jeśli chodzi o sposób, w jaki należy uzyskać wskazówki,
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.
Punkty w połowie drogi między kierunkiem kardynalnym i porządkowym to kierunki, które są pomiędzy połączonymi, ponownie, z „-” pomiędzy nimi. Kierunki kardynalne idą pierwsze, porządkowe drugie.
- Są to tak zwane kierunki wtórno-międzysercowe.
Punkty w połowie drogi między kierunkami wtórnie międzysercowymi a innymi kierunkami są innymi kierunkami „o” kierunkiem kardynalnym, do którego są najbliżej (oczywiście innym niż kierunek bezpośrednio obok nich).
- Nie mam pojęcia, jak to się nazywa: P
Jeśli całe to wyjaśnienie boli mózg tak samo jak mój, możesz odnieść się do tej tabeli:
1 North N
2 North by east NbE
3 North-northeast NNE
4 Northeast by north NEbN
5 Northeast NE
6 Northeast by east NEbE
7 East-northeast ENE
8 East by north EbN
9 East E
10 East by south EbS
11 East-southeast ESE
12 Southeast by east SEbE
13 Southeast SE
14 Southeast by south SEbS
15 South-southeast SSE
16 South by east SbE
17 South S
18 South by west SbW
19 South-southwest SSW
20 Southwest by south SWbS
21 Southwest SW
22 Southwest by west SWbW
23 West-southwest WSW
24 West by south WbS
25 West W
26 West by north WbN
27 West-northwest WNW
28 Northwest by west NWbW
29 Northwest NW
30 Northwest by north NWbN
31 North-northwest NNW
32 North by west NbW
Oto bardziej szczegółowa tabela i być może lepsze wyjaśnienie punktów kompasu.
Twoim zadaniem jest przyjmowanie danych wejściowych w stopniach i podanie pełnej nazwy kierunku kompasu, któremu odpowiada, wraz ze skrótem.
Przypadki testowe:
Input Output
0 North N
23.97 North-northeast NNE
33.7 Northeast by north NEbN
73.12 East-northeast ENE
73.13 East by north EbN
219 Southwest by south SWbS
275 West W
276 West by north WbN
287 West-northwest WNW
Wszystkie wielkie litery muszą być zachowane, tak jak w przypadkach testowych. Maksymalna liczba miejsc po przecinku wynosi 2. Wszystkie liczby wejściowe będą większe lub równe 0 i mniejsze niż 360. Jeśli występuje przecinek dziesiętny, po obu stronach będą cyfry (nie musisz obsługiwać .1
ani 1.
).
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
Odpowiedzi:
Perl,
250 236 231 188187Edycja: Niektóre bajty nie wykorzystują symetrii (jak widziałem w rozwiązaniu @bazzargh)
+ Edycja: I niektóre złe sztuczki ...
+ Edycja : Powrót do miejsca, w którym zacząłem (praca z listą, a nie ciągiem) i wykorzystanie większej symetrii = 1 bajt off i dużo brzydsze.
Dość wydrukowane:
Wymagane 5.014 z powodu
r
modyfikatora.źródło
JavaScript
470453438434432421404Możesz skopiować ten kod do konsoli i go wykonać. Wyświetla monit o podanie stopni i podaje wynik za pomocą
alert();
Niegolfowane Javascript można znaleźć pod tym skrzypkiem: http://jsfiddle.net/AezL3/11
źródło
calcPoint(32)
to, co robi 0, abyś mógł to zrobić za pomocą%32
lub podobnego.var name = calcPoint(input % 32);
załatwia sprawęHaskell
415372347330317304301CSkończyło się zbieżność na rozwiązaniu takim jak @ VadimR (i powrót symetrii!). Zastosowanie:
h 219
wyjścia"Southwest by south SWbS"
Jeszcze 3 znaki, dzięki @shiona.
źródło
drop 1
jest taki sam jak ogon. Również, jeśli się nie mylę, możesz zrobić,e l@(x:_)=x:tail$d l
aby ogolić jeszcze jeden węgiel.Python 3.8 ,
482438424 bajtówWypróbuj online!
To właśnie otrzymałem po golfie odpowiedzi Tony'ego Goodwina ; opublikowany na własną odpowiedź z powodu zbyt długiego łącza TIO do komentarza. Jeśli zdecyduje się zaktualizować swoją odpowiedź na powyższe, usunę tę odpowiedź.
Zakładam, że dopuszczalne jest przesłanie funkcji jako rozwiązania, a nie pełnego programu. Jeśli nie, oto pełny program o 426 bajtach.
Oczekuję, że wiele można jeszcze zrobić, aby skrócić
b
.Edycja: Golfed off 44 bajtów, dzięki uprzejmości majestatycznego morsa. Nadal nie czuję,
b
że gra się w golfa.Edycja2: Ogoliłem kolejne 14, rozpakowując dykta zamiast używać
keys()
iitems()
.źródło
Python,
2103164711031034924889848 bajtówWiem bardzo późno. Dzięki za wyzwanie, ustawiam magnetometr dla kierunku wiatru za pomocą mojego Pi i chciałem 16-punktowego rozwiązania kompasu, aby włączyć się do algorytmów prognozowania pogody. Cały mój kod jest w Pythonie, więc tutaj jest wersja rozwiązania javascript już opublikowana w Pythonie, ale z dodatkowym zwrotem, że możesz określić 32, 16 lub 8 punktów kompasu w zmiennej j, a ja zmieniłem przesunięcie degHead w wyciągu przed nim, w zależności od liczby punktów. Użyłem zmodyfikowanego alogorytmu zmiany nazwy (i użyłem zmiennych, które mogłem zmienić bez zmieniania słów!), Aby upewnić się, że spełniłem wymagania dotyczące pytania.
Wiem, że to nie wygra, ponieważ Python jest bardziej niespokojny i ja też.
Krótka wersja:
Wyczyść wersję
źródło