前書き
アスキーロックがたくさんあります。それらは、ダッシュ、パイプ、V、キャレット、山かっこ、スラッシュ、スペースで構築されています。例:
/--\
| |
| |
\--/
次のようにそれらを侵食したい:
/\
/ \
\ /
\/
すべての角が丸くなっています。より複雑な例:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
別の浸食の後、それはなるだろう
/\
/ \------\
< \
\ /
\--------/
そしてもう一つ:
/\------\
< \
\ /
\------/
チャレンジ
あなたの課題は、入力を1回侵食できるプログラムを作成することです。岩が1つしかないことを想定し、それが1つの閉ループであると想定することができます。入力には文字のみが含まれ、/\ -| <> ^V \n
長方形を作成するための末尾スペースが含まれます。プログラムは、STDINから入力を取得してSTDOUTに出力するか、関数にすることができます。各行の最後には改行文字があります。侵食は、以下に概説する規則に従う必要があります(注:例では、岩は完成していません。これは説明を簡単にするためです)。出力は、入力と同じ形式で、入力と同じサイズである必要があります。ただし、末尾のスペースは省略できます。
スラッシュはパイプラインとダッシュに広がり、移動します。
/---
|
|
/--
/
|
/-
/
/
2つのスラッシュが一緒にマージされる場合、適切な文字のうち<>^V
が使用されます。
/-----\
| |
| |
| |
\-----/
/---\
/ \
| |
\ /
\---/
/-\
/ \
< >
\ /
\-/
^
/ \
< >
\ /
V
岩の一部が結合できる場合、結合します。注:1つのパーツがマージできるが、他のパーツはマージできない場合(/\
例の2行目)、マージできるパーツはマージされます(例を参照)。
/\
/\-^-/\-/ \--
|
<
|
/
\
|
/
/
\
\
|
|
/-------/\--
/
|
|
|
|
|
|
/
\
|
|
|
最終的に、すべての岩は何もなくなります。
<> ^ /\
V \/
テストケース
テスト1:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
/\
/ \------\
< \
\ /
\--------/
/\------\
< \
\ /
\------/
/-----\
< \
\ /
\----/
/---\
< \
\ /
\--/
/-\
< \
\ /
\/
^
< \
\/
テスト2:
/----\
| |
| |
| |
| |
\----/
/--\
/ \
| |
| |
\ /
\--/
/\
/ \
/ \
\ /
\ /
\/
/\
/ \
\ /
\/
/\
\/
テスト3:
^ /\
/\--/\--/ \--/ \-\
\ |
| |
/ |
\ |
| |
| |
/ |
< |
\ |
| |
| |
/ |
/ |
\ |
\-----------------/
/-------^----/\-\
/ \
| |
| |
| |
| |
| |
| |
< |
| |
| |
| |
| |
/ |
\ /
\---------------/
/-------------\
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\-------------/
/-----------\
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\-----------/
/---------\
/ \
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\---------/
/-------\
/ \
/ \
/ \
/ \
/ \
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\ /
\-------/
/-----\
/ \
/ \
/ \
/ \
/ \
/ \
| |
| |
\ /
\ /
\ /
\ /
\ /
\ /
\-----/
/---\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\---/
/-\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\-/
^
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
\ /
\ /
\ /
V
^
/ \
/ \
\ /
\ /
V
^
/ \
\ /
V
^
V
得点
これはcode-golfなので、バイト数が最小のプログラムが勝ちます!
標準の抜け穴は許可されていません。
"\x20\x20\x20\x20\x20\x20/\\\n/-\\\x20\x20/\x20\x20\\-\\\n|\x20\x20\\/\x20\x20\x20\x20\x20|\n\\---------/\n"