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