Враховуючи набір закритих неперекриваються 2d контурів (розділених принаймні одним пробілом навіть по діагоналях) зі стрілками, орієнтованими послідовно в одному і тому ж напрямку або проти годинникової стрілки (кожен контур має свій напрямок) та додатне число n
, перемістіть стрілки n
кроки по контурах у відповідному напрямку. Стрілки представлені > v < ^
відповідно у напрямку вправо, вниз, вліво та вгору. Там інші символи -
(горизонтальний), |
(вертикальний) та +
(кутовий). Коли стрілка знаходиться на куті, вона зберігає поточний напрямок і змінює її лише після того, як буде зроблено поворот.
Завжди буде прямий відрізок (або пробіл) між будь-якими двома кутами (наприклад, +-+
для горизонтального та подібного для вертикального) - іншими словами різкі U
повороти заборонені. Відрізки між кутами або вертикальні, або горизонтальні, а вигин під кутом завжди 90 градусів.
Вхід:
- додатне ціле число -
n
- кількість кроків - представлення контурів ASCII - це може бути рядок з рядком, список рядків, список символів тощо.
Вихід:
Одні контури з усіма стрілками зміщували n
кроки у загальному напрямку кожного контуру.
Тестові приклади:
1.
Вхід:
n
= 1
+----->->
| |
| v---+
| |
+---<-------+
Вихід:
+------>+
| v
| +>--+
| |
+--<--------+
2.
Вхід:
n
= 2
+-----+ +---+
| | | |
+-->--+ | v
| |
+--->---+ |
| |
+------<<---+
Вихід:
+-----+ +---+
| | | |
+---->+ | |
| |
+----->-+ v
| |
+----<<-----+
3.
Вхід:
n
= 3
+---+ +---+ +-------+
| | | v | |
^ | | | +-<-+ |
| | ^ | | v
| +---+ +-->----+ |
| |
| +-------+ +---+ |
| | | v | |
+---+ +---+ +---+
Вихід:
+>--+ ^---+ +-------+
| | | | ^ |
| | | | +---+ |
| | | | | |
| +---+ v----->-+ |
| |
| +-------+ +---+ v
| | | | | |
+---+ +-<-+ +---+
4.
Вхід:
n
= 1
+--+
| |
| +---+
| |
+----+ |
| |
+-+
Вихід:
+--+
| |
| +---+
| |
+----+ |
| |
+-+
5.
Вхідні дані
n
= 4
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
Вихід:
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
6.
Вхід:
n
= 1
^->
^ v
<<v
Вихід:
^>+
^ v
<<v
Напишіть функцію або програму, що розв’язує вищезазначене завдання. Виграє найкоротший код у байтах на кожній мові. Не відволікайте мов на гольф. Пояснення алгоритму та коду високо оцінено.
There will always be a straight segment (or a space) between any two corners (like +-+ for the horizontal and similar for the vertical) - in other words the sharp U turns are forbidden.