疯子,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附加了一个字符串。)