Вступ
У мене багато скель ASCII. Вони побудовані з тире, трубами, Vs, каркасами, кутовими кронштейнами, косою рискою та пробілами. Приклад:
/--\
| |
| |
\--/
Я хочу їх розмити, наприклад:
/\
/ \
\ /
\/
Всі кути стали круглішими. Складніший приклад:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
Після чергової ерозії це стане
/\
/ \------\
< \
\ /
\--------/
І ще:
/\------\
< \
\ /
\------/
Виклик
Ваше завдання полягає в тому, щоб написати програму, яка може зірвати введення один раз. Ви можете припустити, що є лише одна скеля, і ви можете припустити, що це одна замкнута петля. Вхід буде містити лише символи /\ -| <> ^V \n
та матиме пробіли для створення прямокутника. Програма може отримати вхід зі STDIN та вихід у STDOUT, або може бути функцією. В кінці кожного ряду є символ нового рядка. Ерозія повинна відповідати правилам, викладеним нижче (Примітка: у прикладах скеля не завершена, це для зручності пояснення). Вихід повинен бути в тому ж форматі, що і вхід, з тим же розміром, що і вхід. Однак пробіли можуть бути опущені.
Нарізка пошириться на трубопроводи та штрихи та переміститься поперек.
/---
|
|
/--
/
|
/-
/
/
Якщо дві косої риси зливаються разом, використовується відповідний символ <>^V
.
/-----\
| |
| |
| |
\-----/
/---\
/ \
| |
\ /
\---/
/-\
/ \
< >
\ /
\-/
^
/ \
< >
\ /
V
Якщо частина скелі може злитися, вона буде. Примітка: якщо одна частина може злитися, а інша не може (тобто /\
у другому рядку прикладу), то та, яка може злитися, буде (див. Приклад).
/\
/\-^-/\-/ \--
|
<
|
/
\
|
/
/
\
\
|
|
/-------/\--
/
|
|
|
|
|
|
/
\
|
|
|
Зрештою, всі скелі стануть нічим.
<> ^ /\
V \/
Тестові справи
Тест 1:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
/\
/ \------\
< \
\ /
\--------/
/\------\
< \
\ /
\------/
/-----\
< \
\ /
\----/
/---\
< \
\ /
\--/
/-\
< \
\ /
\/
^
< \
\/
Тест 2:
/----\
| |
| |
| |
| |
\----/
/--\
/ \
| |
| |
\ /
\--/
/\
/ \
/ \
\ /
\ /
\/
/\
/ \
\ /
\/
/\
\/
Тест 3:
^ /\
/\--/\--/ \--/ \-\
\ |
| |
/ |
\ |
| |
| |
/ |
< |
\ |
| |
| |
/ |
/ |
\ |
\-----------------/
/-------^----/\-\
/ \
| |
| |
| |
| |
| |
| |
< |
| |
| |
| |
| |
/ |
\ /
\---------------/
/-------------\
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\-------------/
/-----------\
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\-----------/
/---------\
/ \
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\---------/
/-------\
/ \
/ \
/ \
/ \
/ \
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\ /
\-------/
/-----\
/ \
/ \
/ \
/ \
/ \
/ \
| |
| |
\ /
\ /
\ /
\ /
\ /
\ /
\-----/
/---\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\---/
/-\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\-/
^
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
\ /
\ /
\ /
V
^
/ \
/ \
\ /
\ /
V
^
/ \
\ /
V
^
V
Оцінка балів
Це код-гольф , тому програма з найменшою кількістю байтів виграє!
Стандартні лазівки заборонені.
"\x20\x20\x20\x20\x20\x20/\\\n/-\\\x20\x20/\x20\x20\\-\\\n|\x20\x20\\/\x20\x20\x20\x20\x20|\n\\---------/\n"