1

(?) 言語のような Brainfuck 言語を実装する必要があります

言語には 5 つのコマンドがあります。

当初、

int x=1; アルゴリズムの実行開始時

各コマンドは、C 言語で次のことを行います。

「+」 : x+=1;

「-」 : x-=1;

">" : x= x*2;

"<" : x= x/2;

「!」: printf("%c",x);

入力は、0 から 127 までの ASCII コードを持つ一連の文字です。

プログラムが入力と同じ文字シーケンスを出力するように、出力は上記のコマンドのシーケンスである必要があります。

出力の長さは最小限にする必要があることに注意してください。

例えば

入力: ABC

出力: >>>>>>+!+!+!

説明: ABC の ASCII コードは 65 66 67 です。

x=1 なので、x は 64 になるまで 6 倍になります。次に、インクリメントして 3 回出力し、すべての ABC を出力します。

これは、x = 65 に到達するために x を 64 回増加させることに比べて最小限です。

この言語を実装する必要があります。

しかし、入力の次の文字に移動するときにコマンドのシーケンスを見つけるアルゴリズムを考え出すことに固執しています。

たとえば、x=8 で 12 に移動する必要がある場合、x を 2 回減らしてから 2 を掛ける方が、4 回足すよりも高速です。数値が十分に大きくなると、アルゴリズムの決定は非常に複雑になります。

多分パスを見つけるために再帰について考えていますか?コマンドの最小数。

ヒントや、参照できるこの難解な言語の名前はありますか?

4

1 に答える 1