Эта задача происходит в сетке.
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
Это 10 х 10, но это может быть любой прямоугольной формы.
На этой сетке четыре направления. Вверх, вниз, влево и вправо.
Задача состоит в том, чтобы нарисовать путь, начинающийся с заглавной буквы. В этом примере будет идти прямо вверх от U.
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
Путь будет идти вверх и будет состоять из символов полной остановки (.), Пока он не коснется стены, а завершится звездочкой (*).
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
В дополнение к запускам траектории есть также переключатели направлений, представленные строчными буквами начального направления.
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
Кроме того, верхний регистр X - это препятствие, которое прекратит путь.
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
правила
- Входные данные представляют собой строку, состоящую из кадра (состоящего из символов |, - и +), содержащего символы, обозначающие начало пути, переключатели направления и препятствия.
- Ваш код должен добавлять символы полной остановки, чтобы следовать пути, описанному при запуске и переключателях направления, и звездочку, когда / если путь встречает стену или препятствие.
- Может быть несколько стартов пути.
- Код будет по-прежнему завершаться без ошибок, если путь описывает цикл.
- Если путь встречается с началом пути, он действует как переключатель направления.
- Это код гольфа, код младшего байта и никаких стандартных лазеек, пожалуйста.
- Я всегда предпочитаю ссылки на онлайн переводчика.
Тестовые случаи
1: Простой
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
2: правый поворот
+----------+
| |
| |
| |
| r |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
3: Перекресток
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . r..d |
| . . . |
| u....l |
| . |
| . |
| U |
+----------+
4: 4 Пересекающиеся пути
+----------+
| D |
| |
| |
|R |
| |
| L|
| |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| . . |
|R........*|
| . . |
|*........L|
| . . |
| . . |
| U * |
+----------+
5: Первый цикл
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r..d |
| . . |
| u..l |
| . |
| . |
| U |
+----------+
6: Стартер как изменитель
+----------+
| |
| |
| |
| L |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
|*..L |
| . |
| . |
| . |
| . |
| U |
+----------+
7: прямой цикл
+----------+
| |
| |
| |
| |
| r l |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r..l |
| . |
| . |
| . |
| U |
+----------+
8: узкий узел
+----------+
| |
| |
| |
| d l |
| r u |
| r u |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| d..l |
| .r.u |
| r.u |
| . |
| . |
| U |
+----------+
9: препятствие
+----------+
| |
| |
| |
| |
| r X |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
Форма 10: S
+----------+
|r d |
| |
| XXXXXXXX|
| d l |
|ul |
|XXXXXXX |
| |
|R u |
| |
+----------+
+----------+
|r.....d |
|. * |
|. XXXXXXXX|
|.d......l |
|ul . |
|XXXXXXX . |
| . |
|R.......u |
| |
+----------+
11: 4-х сторонний узел
+----------+
| D |
| |
| r |
|R d |
| |
| u L|
| l |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| r.....*|
|R....d. |
| .... |
| .u....L|
|*.....l |
| . . |
| U * |
+----------+
12: занятые развязки
+----------+
|rrrrr rrrd|
| rlrl |
|ul rrd |
|ruX X |
|udl ll |
|ull |
|rlr |
|rdr d |
|Uruull |
+----------+
+----------+
|rrrrr.rrrd|
|.rlrl .|
|ul rrd .|
|ruX.X. .|
|udl.ll .|
|ull. .|
|rlr. .|
|rdr..d .|
|Uruull *|
+----------+
13: начинается в край
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
14: Пересечение Мертвых Путей
+----------+
| |
| |
| |
| R |
| |
| |
| |
| |
| U|
+----------+
+----------+
| *|
| .|
| .|
| R..*|
| .|
| .|
| .|
| .|
| U|
+----------+