#include <iostream>
#include <fstream>
std::string read(std::fstream&& file){
std::string temp;
std::string ret;
while(file>>temp) ret += temp;
return ret;
}
int main(int argc, char** argv){
char data[1000] = { 0 };
char* dp = data; //data pointer
std::string code;
std::cin >> code;
size_t it = 0;
size_t nor = 0;
while(it < code.size()){
switch(code[it]){
case '>':
++dp;
break;
case '<':
--dp;
break;
case '+':
++(*dp);
break;
case '-':
--(*dp);
break;
case '.':
std::cout<<*dp;
break;
case ',':
std::cin>>*dp;
break;
case '[':
if(*dp == 0){
int lc = 1; //loop counter
while(lc != 0){
++it;
if(code[it] == '[') ++lc;
if(code[it] == ']') --lc;
}
}
else
nor = it;
break;
case ']':
it = nor-1;
break;
default:
break;
}
++it;
}
std::cout<<"\nExecution time: TODO\nPress any key to exit...";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KIApzdGQ6OnN0cmluZyByZWFkKHN0ZDo6ZnN0cmVhbSYmIGZpbGUpewogIHN0ZDo6c3RyaW5nIHRlbXA7CiAgc3RkOjpzdHJpbmcgcmV0OwogIHdoaWxlKGZpbGU+PnRlbXApIHJldCArPSB0ZW1wOwogIHJldHVybiByZXQ7Cn0KIAppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpewogIGNoYXIgZGF0YVsxMDAwXSA9IHsgMCB9OwogIGNoYXIqIGRwID0gZGF0YTsgLy9kYXRhIHBvaW50ZXIKICBzdGQ6OnN0cmluZyBjb2RlOwogIHN0ZDo6Y2luID4+IGNvZGU7CiAgc2l6ZV90IGl0ID0gMDsKICBzaXplX3Qgbm9yID0gMDsKICB3aGlsZShpdCA8IGNvZGUuc2l6ZSgpKXsKICAgIHN3aXRjaChjb2RlW2l0XSl7CiAgICAgIGNhc2UgJz4nOgogICAgICAgICsrZHA7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJzwnOgogICAgICAgIC0tZHA7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJysnOgogICAgICAgICsrKCpkcCk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJy0nOgogICAgICAgIC0tKCpkcCk7CiAgICAgICAgICBicmVhazsKICAgICAgY2FzZSAnLic6CiAgICAgICAgc3RkOjpjb3V0PDwqZHA7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJywnOgogICAgICAgIHN0ZDo6Y2luPj4qZHA7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ1snOgogICAgICAgIGlmKCpkcCA9PSAwKXsKICAgICAgICAgIGludCBsYyA9IDE7IC8vbG9vcCBjb3VudGVyCiAgICAgICAgICB3aGlsZShsYyAhPSAwKXsKICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgaWYoY29kZVtpdF0gPT0gJ1snKSArK2xjOwogICAgICAgICAgICBpZihjb2RlW2l0XSA9PSAnXScpIC0tbGM7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIG5vciA9IGl0OwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICddJzoKICAgICAgICBpdCA9IG5vci0xOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIGJyZWFrOwogICAgfQogICAgKytpdDsKICB9CiAgc3RkOjpjb3V0PDwiXG5FeGVjdXRpb24gdGltZTogVE9ET1xuUHJlc3MgYW55IGtleSB0byBleGl0Li4uIjsKfQ==
KysrKysrKysrK1smZ3Q7KysrKysrKyZndDsrKysrKysrKysrJmd0OysrKyZndDsrJmx0OyZsdDsmbHQ7Jmx0Oy1dJmd0OysrLiZndDsrLisrKysrKysuLisrKy4mZ3Q7KysuJmx0OyZsdDsrKysrKysrKysrKysrKysuJmd0Oy4rKysuLS0tLS0tLi0tLS0tLS0tLiZndDsrLiZndDsu
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.