З огляду на ASCII мистецтво двох векторів, знайдіть величину і ступінь отриманого вектора.
Вхідні дані
Це можна отримати через STDIN, прочитати з локального файлу або надати через виклик функції. Ось приклад двовекторного вводу:
^------>
|
|
|
x
Це означає зміну 4 одиниць на північ і 7 одиниць на схід. Кожна початкова точка введення буде представлена x
(десятковою 120
).
Усі вектори мають горизонтальну або вертикальну лінії.
Кожен вектор має одну з цих чотирьох кінцевих точок:,
^v<>
і складається з тире (-
десятковий 45) або вертикальної смуги (|
десятковий 124).Порожні точки на площині заповнюються пробілами (
, десятковий 32).
Вхід може бути одиничним
x
.Суміжні вектори завжди перпендикулярні один одному.
Усі вектори перебувають у напрямку до хвоста.
Вихідні дані
Це буде зміщення отриманої точки (відстань від початкової точки) та ступінь, до якої вона перемістилася, відносно початкової точки.
Для вищевказаного вводу вихід повинен бути 8.06
одиницями та 60.3
градусами. Кожен повинен мати рівно 3 значущі цифри. Ось кілька прикладів чисел з 3 значущими цифрами:
- 1.00
- 60.1
- 453
- 7.08
- 4,50
- 349
Всі одиниці вимірювань будуть <= 999
.
Ці цифри слід виводити у форматі нижче. Для цього використовуються числа зверху.
8.06 units @ 60.3 degrees
За цим може супроводжуватися єдиний пробіл або новий рядок.
Якщо вхід є одиничним x
, без зміщення і, отже, немає кута переміщення, вихід повинен бути або порожнім рядком (єдиний символ нового рядка), або у наступному форматі:
0 units @ - degrees
Якщо ви намагаєтеся отримати право на бонус, напрям повинен бути -
також.
У випадку, якщо бонуси 2, 3 або обидва виконані, вихід повинен відповідати наведеній нижче моделі та дотримуватися тих же обмежень, що і вище.
8.06 units @ 60.3 degrees NE
Градуси слід вимірювати відповідно до стандартної площини.
90
135 | 45
\|/
180 ---x---- 0
/|\
225 | 315
270
0
градусів - схід, 1 - 89
градусів - північний схід, 90
північ тощо.
Бонуси
Наступні коштують в цілому -50%.
Візьміть бонус -10% за кожен додатковий вектор, який можна обробити. Цей бонус можна застосувати до 3 разів. Вектори ніколи не перетинаються і не перетинаються.
Візьміть бонус -10%, якщо ваш результат включає кардинальний напрямок кута (північ, південь, схід, захід).
Візьміть бонус -10%, якщо ваш вихід включає проміжні напрямки кута (північний схід, північний захід, південний схід, південний захід).
Приклади
В:
x---->
|
v
Вийшов:
5.39 units @ 338 degrees
За бажанням SE
В:
<--------------^
|
|
x
Вийшов:
15.3 units @ 169 degrees
За бажанням NW
В:
x
|
|<-----^
| |
v------>
Вийшов:
2.24 units @ 297 degrees
За бажанням SE
Приклади (кілька векторів)
В:
x--->
|
|
v----------->
Вийшов:
16.3 units @ 349 degrees
За бажанням SE
В:
<-------^
| |
| |
v |
|
|
x
Вийшов:
8.54 units @ 159 degrees
За бажанням NW
В:
^-->
| |
| v
|
<--------x
Вийшов:
6.32 units @ 162 degrees
За бажанням NW
x-->
. Чи можуть перетинатися вектори?
x
. Їх може бути більше двох (якщо намагаються заповнити бонус), але не менше. Я працюю над прикладами для декількох векторних входів. У жодних входах не будуть перетинатися вектори. @ThomasKwa
x
? Яка межа між Північчю та Північним Заходом?