RoboCritters(词源学)是一种崭新的深奥编程语言(不必费心去寻找它,我只是发明了它)。它是是Brainfuck(BF)变体,比通常的运算符替换方案稍微复杂一些。RoboCritters中的每个程序都是一个矩形的文本网格,该文本网格仅包含七个字符. []/\|
以及用于换行的换行符。
示例RoboCritters程序:
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
要将RoboCritters程序转换为BF,请按正常阅读顺序(从左到右,然后从上到下)查看网格中的每个非换行符|\/||./|[]||[..][][] ||/\|[..][..][..] \/\/
。
如果从当前角色向右和向下延伸的网格的4×2部分与下面列出的八个机器人生物之一完全匹配,请附加相应的BF命令(><+-.,[]
)到(最初为空)BF程序。
如果4×2网格部分与任何机器人生物都不匹配或超出范围,则不向BF程序添加任何内容。
Joybot,
>
命令:[..] \][/
Calmbot,
<
命令:[..] /][\
Squidbot,
+
命令:[..] //\\
Spiderbot,
-
命令:[..] ||||
Bunnybot,
.
命令:[][] [..]
Toothbot,
,
命令:[..] |/\|
Foxbot,
[
命令:|\/| [..]
Batbot,
]
命令:[..] \/\/
因此,请阅读示例程序
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
我们可以看到我们首先遇到了Foxbot(在第1列第1行),然后是Toothbot(c1,r2),然后是Bunnybot(c5,r2),最后是Batbot(c9,r3)。这对应于BF程序[,.]
。
请注意Foxbot和Toothbot重叠。这是故意的;重叠的机器人生物没有任何不同的解释。
挑战
编写最短的程序,该程序可以接收RoboCritters程序并输出等效的BF。您无需运行BF或检查其是否有效,只需将RoboCritters代码转换为BF代码即可。
细节
所有输入的RoboCritters程序都是有效的,也就是说,它们将是一个完全矩形的文本块,仅包含七个字符
. []/\|
以及换行符。换行符可以采用任何方便的通用表示形式。您可以选择假定程序只有一个尾随换行符。您必须支持小于4×2的RoboCritters程序,包括0×0空(或单个换行符)程序。这些都对应于空的BF程序(空字符串)。
输出的BF程序应该是仅包含八个BF命令字符的单行字符串
><+-.,[]
。可能有一个结尾的换行符。以任何常用方式(stdin /文本文件/命令行)进行输入,然后输出到stdout或您语言的最接近替代品。
您可以编写一个将RoboCritters程序作为字符串并打印或返回BF程序字符串的函数,而不是程序。
例子
输入:(上面示例的变体)
|\/|[][] [..][][] |/\|[..] \/\/
输出:
[,.]
输入:(测试所有机器人生物)
[..][[[[[..]]. ]|\/| \][/[..]//\\[..][..] [..]/][\[][]|/\|[..] ||||/\| [..]| |\/\/
输出:
>+[<,-.]
输入:
[..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [][] [][] [..] [..] [..] [][] [..] [..] [][] [..] [..] [][] [..] [][] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [][] [..] [..] [..] [][] //\\ //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ /][\ /][\ /][\ /][\ |||| \/\/ \][/ //\\ \][/ //\\ \][/ |||| \][/ \][/ //\\ [..] /][\ \/\/ /][\ |||| \/\/ \][/ \][/ [..] \][/ |||| |||| |||| [..] //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] [..] //\\ //\\ //\\ [..] \][/ \][/ [..] /][\ |||| [..] /][\ [..] //\\ //\\ //\\ [..] |||| |||| |||| |||| |||| |||| [..] |||| |||| |||| |||| |||| |||| |||| |||| [..] \][/ \][/ //\\ [..] \][/ //\\ //\\ [..]
输出:(BF Hello World程序)
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
输入:(不存在机器人生物)
/\\\[]. ]..[..] \\//||\
输出:(空字符串)
计分
以字节为单位的最短提交获胜。(方便的字节计数器。)决胜局是最高投票的职位。