考虑以下五个ASCII艺术海洋生物:
- 标准鱼:
><>
或<><
- 快速鱼:
>><>
或<><<
- 健壮的鱼:
><>>
或<<><
- 弹力鱼:
><<<>
或<>>><
- 螃蟹:
,<..>,
编写一个接受任意字符字符串的程序<>,.
。如果有一种方法可以将整个字符串解释为一系列不重叠的海洋生物,则应重新打印该字符串,并在生物之间插入单个空格。如果无法解释,则不输出任何内容(程序静默结束)。
例如,字符串<><><>
可以解释为两个标准的鱼背对背。相应的输出为<>< ><>
。
作为另一个示例,该字符串><>><>>
包含...的“实例”
(仅将括号添加为指示符)
- 几个标准鱼:
[><>][><>]>
- 一条快鱼:
><[>><>]>
- 一个坚固的鱼在几个方面:
[><>>]<>>
和><>[><>>]
但是,只有标准鱼和坚固鱼的配对[><>][><>>]
跨越了整个字符串,没有鱼共享字符(没有重叠)。因此,对应于的输出><>><>>
为><> ><>>
。
如果可以通过多种方式解释字符串,则可以打印其中任何一种。(并且仅打印其中之一。)例如,<><<<><
可以解释为标准鱼和结实的鱼:[<><][<<><]
,或者解释为快速鱼和标准鱼:[<><<][<><]
。因此,<>< <<><
或者<><< <><
将是有效的输出。
螃蟹只是为了好玩。由于它们不是以<
或开头或结尾>
,因此更容易识别(至少在视觉上)。例如,字符串
,<..>,><<<>,<..>,><>,<..>,<>>><,<..>,><>>,<..>,<<><,<..>,<><,<..>,>><>
显然会产生输出
,<..>, ><<<> ,<..>, ><> ,<..>, <>>>< ,<..>, ><>> ,<..>, <<>< ,<..>, <>< ,<..>, >><>
以下是一些不产生任何输出的字符串示例(每行一个):
<><>
,<..>,<..>,
>>><>
><<<<>
,
><><>
,<><>,
<<<><><<<>>><>><>><><><<>>><>><>>><>>><>><>><<><
如果删除开头,则可以解析这里的最后一个字符串<
:
<<>< ><<<> >><> ><> ><> <>< <>>>< >><> >><> >><> ><>> <<><
(可能还有其他可能的输出。)
细节
- 输入字符串将仅包含字符
<>,.
。 - 输入字符串的长度至少为一个字符。
- 以任何常用方式(命令行,stdin)输入并输出到stdout。
- 以字节为单位的最短代码获胜。(方便的字节计数器。)抢劫犯是较早的帖子。