次のコードは、入力の値が 1 (ASCII では出力不可) の場合に停止する点を除いて、作成したコードと同等です。最後の<
値が 0 であるため、ループ間の が必要です。
>+[+>,-]<[<.]
入力後に値をデクリメントし、0 かどうかをチェックし、0 でない場合はループバックします。ループバックした場合は、ポインターを再度インクリメントして、デクリメントを元に戻す必要があります。サンプル配列は次のようになります。
00 02 H e l l o _ W o r l d 00
^
ただし、[<.]
文字列の逆を印刷します (その後に印刷不可能な 1 が続きます)。次のコードに示すように、ポインターを先頭に移動し、そこから前方に移動することで、文字列自体を出力できます。
>+[+>,-]<[<]>>[.>]
このコードでは、[<]
はインデックス 0 に到達すると停止し、 は>>
インデックス 2 (文字列の開始) に移動し[.>]
、最後に 0 に到達するまで文字を出力します。
スペース (32) などの別の ASCII 文字を使用する場合は、最初のループ内で+
and-
をその回数だけ繰り返します。(警告: 入力に 32 未満の文字がある場合、このコードは 0 未満の値になります)。
>+[++++++++++++++++++++++++++++++++>,--------------------------------]<[<]>>[.>]