Учитывая искусство двух векторов в 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
? Какая граница между Севером и Северо-Западом?