疯子,226字节
,[<<<,]+[>>->[[[[>>[>>>]<+<-<[<<<]>>+<-]>[<+>-]>[>>>]<<[>[<+>-]]>[[<+>-]>+[<<<]>
>>-[+>[<<<]<[>+>[->]<<[<]>-]>[<+>>+<-]>>>[>>>]]>>]<]>+[,<<<+]->[<<<]>>>>>+[,+>>>
+]-[>>>]->]<[+<<<]+<<<++[->>>]+>>>->]<[,<<<]<[>>>+<<<-]>+>,>>>]<<.
格式:
,[<<<,]
+
[
for each suffix
>>->
[
for each prefix
[
for each suffix
[
for each char while no mismatch
[
>>[>>>]
<+<-<[<<<]
> >+<-
]
>[<+>-]
>[>>>]
<<
[
mismatch
>[<+>-]
]
>
[
[<+>-]
>+[<<<]
>>>-
[
match
+>[<<<]
<
[
>+>[->]
<<[<]
>-
]
>[<+> >+<-]
>>>[>>>]
]
>>
]
<
]
>+[,<<<+]
->[<<<]
>>> >>+[,+>>>+]
-[>>>]
->
]
<[+<<<]
+<<<++[->>>]
+>>>->
]
<[,<<<]
<[>>>+<<<-]
>+>,>>>
]
<<.
期望输入有或没有尾随换行符,并将结果输出为字节值。
在线尝试。
这将检查每个前缀,以查看它是否出现在字符串的后面,然后将第一个字符切掉,然后重复该过程,直到没有剩余的字符为止。
磁带分为3个单元,
c 0 f
哪里 c
是给定字符串的字符,并且f
是可以为1,负1或零的标志。非零标志放置在当前正在比较的两个字符之间,在当前前缀的结尾之后和当前后缀的开始之前(即,在当前电位匹配的索引之前)为单元格保留负的标志。
结果存储在字符串的左侧,并在找到匹配项时进行更新。
(该字符串实际上是反向处理的,并\x01
附加了一个字符串。)