Враховуючи рядок N, S, E і W, виведіть підшипник (кут за годинниковою стрілкою від півночі в градусах), виправте 5 знаків після коми.
У традиційних позначеннях компаса рядок складається лише з двох цих символів (наприклад, NNW або ESE). Тут ви також повинні прийняти рядки, які містять усі 4 (наприклад, WNNNSE) . Використання лише двох символів дозволяє людині інтуїтивно зрозуміти значення. Якщо дозволити 4 символи, це стає жахливим для читання, але дозволяє коротші способи опису підшипника до заданої точності.
(Як зазначено в коментарі по user2357112 , виявляється, можна довести , що для будь-якого даного підшипника, рядок 4 символу буде точно такої ж довжини , як рядок 2 символи, тому я на основі цього завдання на помилковій передумові. Сподіваємось, ця відсутність практичної мети не погіршує вашу насолоду від виклику ...)
Точний метод описаний нижче і еквівалентний традиційним позначенням (він розширюється на ньому, а не змінюється).
Вхідні дані
- Вхід - це один рядок, що містить лише символи
NESW. - Якщо ви хочете, вхід може представляти собою послідовність символів, якщо це не включає попередню обробку. Наприклад,
[N, [E, [S, [W]]]]забороняється брати вкладений список, який допоможе впорядкувати обробку. - Використання різних символів заборонено. Ви не можете взяти рядок
1234замістьNESW.
Вихідні дані
- Вихід повинен бути десятковим числом або рядковим поданням одного (а не раціонального / дробу).
- Задні нулі не потрібно відображати. Якщо підшипник є
9.00000, то вихід9також вважається правильним до 5 знаків після коми. - Вихід знаходиться в діапазоні [0, 360). Тобто, включаючи 0, але виключаючи 360.
- Правильність перевіряється округленням результату до 5 знаків після коми. Якщо підшипник 0,000005, це закруглюється до 0,00001. Результати 0,00001 та 0,000005 є правильними.
- Вихід у наукових позначеннях для деяких матеріалів є прийнятним. Наприклад,
1e-5замість0.00001.
Перетворення
- Одиничний символ компас точки
N,E,SіWвідповідають 0, 90, 180 і 270 градусів відповідно. - Попередження одного з них до рядка призводить до підшипника, яке розбиває підшипник одиничного символу та опору вихідної струни.
- Вибирається найближчий з двох можливих підрізних підшипників, так що NE представляє 45 градусів, а не 225 градусів.
- Це однозначно, за винятком випадків, коли кут, який слід розрізати, становить 180 градусів. Тому
NS,SN,WEіEWвідповідають невизначеним підшипників, а вхід ніколи не закінчаться ні в одному з них. Однак вони можуть з’являтися деінде у вхідному рядку, оскільки це не викликає двозначності. - Якщо два останніх символи однакові, остаточний символ буде надлишковим, оскільки бісекція поверне той самий підшипник. Оскільки це нічого не додає до позначень, ваш код не потребує цього. Тому
NN,EE,SSіWWвідповідають невизначеним підшипників, а вхід ніколи не закінчаться ні в одному з них. Однак вони можуть з’являтися деінде у вхідному рядку.
Приклади
N: 0
E: 90
S: 180
SE: halfway between S and E: 135
NSE: halfway between N and SE: 67.5
NNSE: halfway between N and NSE: 33.75
NNNSE: halfway between N and NNSE: 16.875
NNNNSE: halfway between N and NNNSE: 8.4375
Тестові справи
Подання є дійсним лише в тому випадку, якщо воно дає правильний результат для всіх тестових випадків. Зауважте, що тестові випадки піднімаються до меж того, що можна обробляти з подвійною точністю. Для мов, які за замовчуванням мають одну точність, вам, ймовірно, доведеться витратити байти, щоб вказати подвійну точність, щоб отримати правильні результати.
Результати тестових випадків показані округлими до 5 знаків після коми, а також з довільною точністю. Обидва є дійсними результатами.
WNE 337.5 337.5
WEN 337.5 337.5
WEWEWEWEWEWEWEWEWEWEWEN 330.00001 330.000007152557373046875
NESWNESWNESWNESWNESWNESWNESW 90 89.99999932944774627685546875
NNNNNNNNNNNNNNNNNNNNNNNE 0.00001 0.0000107288360595703125
NNNNNNNNNNNNNNNNNNNNNNNW 359.99999 359.9999892711639404296875
SNNNNNNNNNNNNNNNNNNNNNNNE 90.00001 90.00000536441802978515625
SNNNNNNNNNNNNNNNNNNNNNNNW 269.99999 269.99999463558197021484375
Оцінка балів
Це код-гольф . Оцінка - це довжина вихідного коду в байтах, і найкоротший виграш.
Педантність
Я допустив помилку, думаючи, що "Північ на північний захід" - дійсний компас. Щаслива помилка, оскільки вона призвела до виклику ідеї, але я потім виявив на сторінці Вікіпедії :
"Назва фільму Альфреда Хічкока 1959 року на північ від Північного Заходу насправді не напрямна точка 32-вітрового компаса, а фільм містить посилання на Northwest Airlines ".
Також виявляється, що метод, який використовується для цього завдання, узгоджується лише з традиційними точками компаса до 16-ти точкового компаса. 32-вітровий компас, описаний на цій сторінці, є дещо іншим, і я зручно не помітив його існування для цього завдання.
Нарешті, для тих, хто думає, що я повинен використовувати "Південно-Східний" замість "Південний Схід",.
WNNNSEбуде вихід 323.4375. Дивіться приклад розділу щодо покрокової інструкції, яка б аналогічно стосувалася і цього випадку.
f(N,N,N,S,E)добре введення даних ?
WNNNSE<= що буде результатом для цього прикладного запису на початку вашої публікації? це звучить для мене недійсно, але важко сказати.