#iroha2019day3k. [iroha2019_day3_k]えそらんぐ
[iroha2019_day3_k]えそらんぐ
問題文
世の中にはC/C++、Java、Pythonといった、便利で書きやすいプログラミング言語がたくさんあります。これらの言語の登場により、わかりにくいアセンブリと比べてコンピュータのハードルがぐっと下がりました。
これらとは対照的な存在が、BrainfuckやLazy K、Pietといった、いわゆる「難解プログラミング言語(Esolang)」です。これらの言語の特徴は、名前通り「非常に難解」ということです。例えば、例に上げたBrainfuckで
Hello, World!```を出力するプログラムは、以下のようになります(一例)。
```plain
+++++++++\[>++++++++<-\]>.<+++++++++\[>+++<-\]>++.+++++++..+++.<+++++++++\[>-------<-\]>----.<+++++++++\[>-<-\]>---.<+++++++++\[>++++++<-\]>+.<+++++++++\[>++<-\]>++++++.+++.------.--------.<+++++++++\[>-------<-\]>----.```
このように、何を書いてあるかさっぱり分かりません。
Brainfuckのプログラムは $8$ 種類の記号のみで構成され、単一のメモリ(配列)にデータを出し入れすることで処理を進めます。メモリの参照先は「ポインタ」という変数で保持されます。 $8$ 種類の記号それぞれの意味する処理は以下のとおりです。
* `>`:ポインタを $1$ 増やす
* `<`:ポインタを $1$ 減らす
* `+`:ポインタが指すメモリの値を $1$ 増やす
* `-`:ポインタが指すメモリの値を $1$ 減らす
* `.`:ポインタが指すメモリの値に対応するASCII文字を出力する
* `,`:入力から $1$ 文字読み込み、ポインタが指す先にASCIIコードを代入する
* `[`:ポインタが指すメモリの値が $0$ のとき、対応する`]`の直後へジャンプする
* `]`:ポインタの指すメモリの値が $0$ でないとき、対応する`[`の直後へジャンプする
文字の意味が分かると、さっきのプログラムもなんとなくわかった気になりませんか? 私はなりません。
このBrainfuckを使って、 $3$ 桁の正整数 $A,\\ B$ の和を求めるプログラムを書いてください。
ジャッジで使用されるBrainfuckインタプリタの仕様
* メモリの要素数は $1024$ で、ポインタは $0$ 以上 $1024$ 未満の整数値を取る。
* メモリの各要素は $\-128$ 以上 $128$ 未満の整数値を取る。
* はじめ、メモリの各要素の値やポインタは $0$ である。
* ポインタやメモリの値が下限のときに $1$ 減らすと、上限の値に置き換えられる。上限を超えた場合も同様である。
* 対応する移動先の`]`や`[`が見つからなかった場合、エラーを出力して終了する。
* `,`の処理を行ったときに入力文字が存在しなかった場合、エラーを出力して終了する。
* $8$ 種類の各処理を行った合計回数が $2^{20}$ 回を超えた場合、エラーを出力して終了する。
解答に必要な文字のASCIIコード一覧
```plain
'0' … 48
'1' … 49
'2' … 50
'3' … 51
'4' … 52
'5' … 53
'6' … 54
'7' … 55
'8' … 56
'9' … 57```
### 制約
* $A,\\ B$ は $1000$ 未満の正整数
* $A,\\ B$ はテストケースごとにランダムに生成される
* * *
### 入力
この問題では直接入力は与えられないが、出力されたBrainfuckのプログラムに以下の形式で $A,\\ B$ が与えられる。
$A\\ B$
これらが $3$ 桁に満たない場合は先頭に`0`が追加される。例えば、`48`は`048`、`7`は`007`と入力される。また、 $A$ と $B$ の間のスペースは半角 $1$ 文字である。
### 出力
$A$ と $B$ の和を出力するBrainfuck**ソースコードを $1$ 行で**出力せよ。**末尾以外に改行や空白を含めてはならない。**また、Brainfuckのプログラムが出力する内容は、先頭に $0$ があってもよいが、ひとつながりで合計 $4$ 文字以内でなければならない。
* * *
### 解説
[解説](https://img.atcoder.jp/iroha2019-day3/editorial-K.pdf)