あなたの課題は、次のような入力を行うことです(Hello Worldプログラム):
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
プロンプトを出力します(これはになります"> "
)。
>
その後、ユーザーはプロンプトで何でも入力できます。単純なデバッガには次のコマンドが必要です。
S
-ステップL
ステップ実行後に現在の場所を出力します(を参照)。S(a positive integer)
-多くのスペースをステップ
L
-場所- 「ロケーション」という用語は、常にプログラム内のどこにいるかを指します(つまり、命令ポインター)。
このようにフォーマットされています:
v +++++++[>+++++++<-]>.
これは、プログラムの現在の場所が3番目であることを意味し
+
ます。
G(an integer)
-に行きます- これは、その場所に着くまで歩き続けることを意味します。プログラムの最後に到達し、そこに到達していない場合は、単にプログラムを終了します。
- 負の整数は、末尾から多くの文字を意味します。はい、この手段
-0
とは異なっている0
、と-1
最後の文字に2番目です。 - このコマンドには何も出力しないでください。
D
-ダンプ配列- のようなフォーマット
1, 2, 3, 4, 5
- 配列がの場合、
1, 2, 3, 0, 0, 0, 0, 0, ...
出力のみ1, 2, 3
。 D(a positive integer) (a positive integer)
-これらの2つの位置の間のすべての配列項目をダンプします(包括的)
- のようなフォーマット
(a positive integer)
-現在その配列位置にあるアイテムを出力するP
-BFポインターのインデックス(>
およびで変更するもの)を出力します<
。
プログラムが入力を要求すると、プロンプトが表示されます"I> "
。(一度に1文字を入力できます。)
何かを出力するとき、show "O> " + (the output)
。コマンド間の複数の出力は、一緒にチェーンする必要があります(つまり、できません> G-0 O> H O> e O> l O> l O> o ...
、する必要があります> G-0 O> Hello, World!
)。
「完了」を出力し、プログラムの最後に到達したら終了します。
サンプル実行:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
> S
1
> S
2
> S2
4
> S0
4
> L
v
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
> D
4
> 0
4
> D10 15
0, 0, 0, 0, 0, 0
> G-0
O> Hello, World!
Done
ループおよびP
命令のステップ実行を示すサンプル実行(計算3*2+1
)
+++[>++<-]>+
> S3
3
> L
v
+++[>++<-]>+
> S3
6
> L
v
+++[>++<-]>+
> P
1
> S3
9
> L
v
+++[>++<-]>+
> S
3
> L
v
+++[>++<-]>+
> D
2, 2
>
I / Oを示すサンプル実行
>+[>,---------------------------------]<[<]>[>.]
> G37
I> H
I> e
I> l
I> l
I> o
I> !
> D
0, 39, 68, 75, 75, 78
> G-0
O> 'DKKN
Done
これはcode-golfであるため、最短のコードが優先されます。