Я придумал этот вызов самостоятельно, но он оказался обратным этому вызову от Doorknob . Поскольку мне действительно нравятся его характеристики, я решил украсть его большую часть вместо того, чтобы готовить свои собственные объяснения.
Соревнование
Учитывая сокращение одной из 32 точек на компасе, выведите соответствующие градусы. Не стесняйтесь переходить к таблице ниже, если вы не заинтересованы в объяснении 32 пунктов.
Вот полный компас:
По Denelson83 (собственная работа) [ GFDL или CC-BY-SA-3.0 ], через Wikimedia Commons
Каждое направление на 11,25 (360/32) градуса дальше предыдущего. Например, N (север) составляет 0 градусов, NbE (север на восток) составляет 11,25 градуса, NNE (север-северо-восток) составляет 22,5 градуса и т. Д.
Подробно имена присваиваются следующим образом:
- 0 градусов - это N, 90 градусов - это E, 180 градусов - это S, а 270 градусов - это W. Это так называемые основные направления.
- Точки на полпути между кардинальными направлениями - это просто кардинальные направления между ними. N или S всегда идут первыми, а W или E всегда вторыми. Они называются порядковыми направлениями. Порядковый и кардинальный направления вместе образуют главные ветры.
- Точки на полпути между основными ветрами - это направления, между которыми они соединены. Кардинальные направления идут первыми, порядковые вторыми. Они называются полу ветрами.
- Точки на полпути между основным и половинным ветрами являются смежным основным ветром «по» ближайшему кардинальному направлению от основного ветра. Это обозначено как
b
. Это так называемые четверть ветра.
Это приводит к следующей диаграмме:
# 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
Вот более подробный график и, возможно, лучшее объяснение точек компаса.
Ваша задача - взять в качестве входных данных одну из 32 аббревиатур из третьего столбца и вывести соответствующие градусы во второй столбец.
Вы можете предположить, что input всегда будет точно одной из этих 32 строк (и вы можете опционально, но последовательно ожидать единственного завершающего перевода строки). Вывод также должен быть дан точно так, как указано выше, хотя допускаются конечные нули. При желании вы можете вывести один завершающий символ новой строки.
Вы можете написать программу или функцию, принимая ввод через STDIN (или ближайшую альтернативу), аргумент командной строки или аргумент функции и выводя результат через STDOUT (или ближайшую альтернативу), возвращаемое значение функции или параметр функции (out).
Это код гольф, поэтому самый короткий ответ (в байтах) выигрывает.
источник
n
но мне пришлось выбирать их осторожно.Javascript (ES6), 153 байта
Просто хотел, чтобы мяч катился с простым.
Не особенно инновационный, но он работает, и, возможно, есть некоторые советы, которые можно извлечь из него. Не волнуйтесь, я подумаю о другой (надеюсь, лучше) технике.
источник
CJam, 49 байтов
Выше это hexdump, который можно изменить с помощью
xxd -r -c 17 -g 1
.Попробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
Ява, 653 (символы)
Я знаю, что Java не может победить, но мне все равно нравится прилагать усилия.
Он принимает ввод из командной строки и выводит на консоль. Безголовая версия:
Он работает, присваивая 0-3 NW (или 4 для N, если используется W). Он распознает 4 разные ситуации:
В print () значение умножается на 90, чтобы получить фактический угол.
источник
C c=new C(r[0]);
? Может бытьnew C(r[0]);
, достаточно?Python 3, 149 байт
Я попробовал рекурсивный алгоритмический подход. С четвертью ветром было сложнее справиться, чем я думал вначале, поэтому это решение росло относительно долго.
Ungolfed:
источник
f("NbW")
возвращается34.875
вместо348.75
)Haskell, 206 байт
Удобный тест:
источник
PowerShell - 350
источник
Юлия,
151147142 байтаНемного разгульный
В некоголенном коде я подсчитываю среднее значение двух векторов , чтобы вектор оставался нормализованным. Однако ошибки из-за удлинения первого вектора еще не накапливаются с таким небольшим количеством добавлений в нашей рекурсии, поэтому во время игры в гольф шаг нормализации был удален, и вычисление идет просто. Ошибки менее 1/64 полного круга отфильтровываются путем округления.
источник