2

ブレインファックで 178 文字の文字列を出力しようとしています。これは、270 文字のブレインファックに制限されていることを除けば、問題にはなりません。双方向ハッシュ関数を使用して 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

それはおそらく不可能です。Brainfuck は魔法ではありません。13 文字の文字列「Hello, World!」を出力する最短コードの現在の記録。全体で78 バイトです。:

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

投稿を読むことをお勧めしますが、TL;DR は、テープが最初に再帰関係で初期化され、次にテープを突き刺して適切な文字を印刷することです。

13 文字で 78 バイト。比較的単純な文字列で。これは、各文字に対して 6 バイトです。大まかなガイドとして同じメトリックを使用すると (この結果は過小評価されています)、文字列は最低でも 1068 文字になります。ただし、テープの初期化が 1 回だけ行われ、これが驚くほど小さいことを考えると、900 または 800 の高さまで下げることができる可能性があります。あなたの文字列はたまたまより複雑で、ASCII 値が非常に大きく異なっているため、再帰関係でさえ解決できない可能性があります。しかし、それほど小さい例はありません。

于 2016-07-31T02:07:30.853 に答える