2

我正在尝试用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 个字符的字符串,然后再解码回字符串?

4

1 回答 1

3

这很可能是不可能的。脑残不是魔术。打印 13 字符字符串“Hello, World!”的最短代码的当前记录 是一个完整的78 个字节。

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

我建议你阅读这篇文章,但一个 TL;DR 对你来说是磁带首先用递归关系初始化,然后在磁带周围戳以打印适当的字符。

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

于 2016-07-31T02:07:30.853 回答