在270个字符的brainf * ck

时间:2015-12-04 23:59:22

标签: string security encryption hash brainfuck

我正在尝试在brainfuck中打印出178个字符的字符串。这不会是一个问题,除了我只限于使用270个字符的brainfuck。我正在考虑使用双向散列函数对178个字符的字符串进行散列,但是我一直无法找到有效的解决方案。这是字符串:"Wikipedia is the best thing ever. Anyone in the world can write anything they want about any subject, so you know you are getting the best possible information." - Michael Scott

在一些ascii-> brainfuck程序中直接运行字符串给了我大约1,409个字符,远离我的目标270.我想我应该能够用大约60个字符的字符串创建brainfuck代码。所以我的问题是,有没有办法将上面的字符串转换为60个字符的字符串,以后可以解码回字符串?

1 个答案:

答案 0 :(得分:4)

这很可能是不可能的。 Brainfuck并不神奇。用于打印13-char字符串“Hello,World!”的最短代码的当前记录。是一整个78 bytes.

--<-<<+[+[<+>--->->->-<<<]>]<<--.<++++++.<<-..<<.<+.>>.>>.<<<.+++.>>.>>-.<<<+.

我建议你阅读帖子,但是TL; DR就是你首先用复发关系初始化磁带,然后在磁带上戳一下以打印相应的字符。

十三个字符的78个字节。在一个相对简单的字符串。这是每个字符的6个字节。使用相同的指标作为粗略指南(这个结果是低估的),你的字符串将至少需要1068个字符。然而,鉴于此,磁带初始化仅发生一次,并且这可能非常小,您可能(可能)能够将其降低到900或800s。您的字符串也恰好更复杂,并且在ASCII值中差别很大,即使是递归关系也不太可能解决。然而,我没有那么小的例子。