介绍
我有很多ASCII语言。它们由破折号,管道,Vs,尖号,尖括号,斜线和空格组成。例:
/--\
| |
| |
\--/
我想像这样侵蚀它们:
/\
/ \
\ /
\/
所有的角落都变得圆了。一个更复杂的示例:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
经过另一次侵蚀,它将变成
/\
/ \------\
< \
\ /
\--------/
还有一个:
/\------\
< \
\ /
\------/
挑战
您面临的挑战是编写一个可以侵蚀一次输入的程序。您可以假设只有一块岩石,并且可以假设它是一个闭环。输入将仅包含字符,/\ -| <> ^V \n
并且具有用于创建矩形的尾随空格。该程序既可以从STDIN获取输入,又可以输出到STDOUT,或者可以是一个函数。每行的末尾是换行符。侵蚀必须遵循以下概述的规则(注意:在示例中,岩石未完成,这是为了便于说明)。输出必须具有与输入相同的格式,并且具有与输入相同的大小。但是,可以省略尾随空格。
斜线将蔓延到管道和破折号,并不断移动。
/---
|
|
/--
/
|
/-
/
/
如果两个斜杠合并在一起,则使用适当的字符<>^V
。
/-----\
| |
| |
| |
\-----/
/---\
/ \
| |
\ /
\---/
/-\
/ \
< >
\ /
\-/
^
/ \
< >
\ /
V
如果岩石的一部分可以合并,它将合并。注意:如果一个部分可以合并而另一部分则不能合并(即,/\
在示例的第二行中),那么可以合并的部分将合并(请参见示例)。
/\
/\-^-/\-/ \--
|
<
|
/
\
|
/
/
\
\
|
|
/-------/\--
/
|
|
|
|
|
|
/
\
|
|
|
最终,所有的岩石将一无所有。
<> ^ /\
V \/
测试用例
测试1:
/----\
| \------\
| |
| |
\------------/
/--\
/ \------\
| \
\ /
\----------/
/\
/ \------\
< \
\ /
\--------/
/\------\
< \
\ /
\------/
/-----\
< \
\ /
\----/
/---\
< \
\ /
\--/
/-\
< \
\ /
\/
^
< \
\/
测试2:
/----\
| |
| |
| |
| |
\----/
/--\
/ \
| |
| |
\ /
\--/
/\
/ \
/ \
\ /
\ /
\/
/\
/ \
\ /
\/
/\
\/
测试3:
^ /\
/\--/\--/ \--/ \-\
\ |
| |
/ |
\ |
| |
| |
/ |
< |
\ |
| |
| |
/ |
/ |
\ |
\-----------------/
/-------^----/\-\
/ \
| |
| |
| |
| |
| |
| |
< |
| |
| |
| |
| |
/ |
\ /
\---------------/
/-------------\
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\-------------/
/-----------\
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\-----------/
/---------\
/ \
/ \
/ \
/ \
| |
| |
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\---------/
/-------\
/ \
/ \
/ \
/ \
/ \
| |
| |
| |
| |
\ /
\ /
\ /
\ /
\ /
\-------/
/-----\
/ \
/ \
/ \
/ \
/ \
/ \
| |
| |
\ /
\ /
\ /
\ /
\ /
\ /
\-----/
/---\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\---/
/-\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\-/
^
/ \
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
V
^
/ \
/ \
/ \
\ /
\ /
\ /
V
^
/ \
/ \
\ /
\ /
V
^
/ \
\ /
V
^
V
计分
这是代码高尔夫,因此字节数最少的程序将获胜!
不允许出现标准漏洞。
我真的不认为规则有意义。如果将岩石旋转45度,它们的侵蚀方式会有所不同。但不管怎么说。
—
user202729'4
我认为Retina可以很好地工作。
—
杰里·耶利米
"\x20\x20\x20\x20\x20\x20/\\\n/-\\\x20\x20/\x20\x20\\-\\\n|\x20\x20\\/\x20\x20\x20\x20\x20|\n\\---------/\n"