1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <unordered_map> #include <algorithm> #include <iostream> #include <string> #include <stack> template<typename BiIter> void run(BiIter first, BiIter last) { std::size_t dp=0; std::unordered_map<std::size_t, int> data; std::stack<BiIter> jmps; for(auto it=first; it!=last; ++it) { switch(*it) { case '>': ++dp; break; case '<': --dp; break; case '+': ++data[dp]; break; case '-': --data[dp]; break; case '.': std::cout << static_cast<char>(data[dp]); break; case ',': { char c; std::cin >> c; data[dp]=c; break; } case '[': if(data[dp]==0) it=std::find(it, last, ']'); else jmps.push(it); break; case ']': it=jmps.top()-1; jmps.pop(); break; } } } void run(const std::string& code) { run(code.begin(), code.end()); } int main() { std::string program="++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>."; run(program); } |
I2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHN0YWNrPgoKdGVtcGxhdGU8dHlwZW5hbWUgQmlJdGVyPiB2b2lkIHJ1bihCaUl0ZXIgZmlyc3QsIEJpSXRlciBsYXN0KSB7CiAgICBzdGQ6OnNpemVfdCBkcD0wOwogICAgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c2l6ZV90LCBpbnQ+IGRhdGE7CiAgICBzdGQ6OnN0YWNrPEJpSXRlcj4gam1wczsKCiAgICBmb3IoYXV0byBpdD1maXJzdDsgaXQhPWxhc3Q7ICsraXQpIHsKICAgICAgICBzd2l0Y2goKml0KSB7CiAgICAgICAgY2FzZSAnPic6ICsrZHA7ICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJzwnOiAtLWRwOyAgICAgICBicmVhazsKICAgICAgICBjYXNlICcrJzogKytkYXRhW2RwXTsgYnJlYWs7CiAgICAgICAgY2FzZSAnLSc6IC0tZGF0YVtkcF07IGJyZWFrOwogICAgICAgIGNhc2UgJy4nOiAKICAgICAgICAgICAgc3RkOjpjb3V0IDw8IHN0YXRpY19jYXN0PGNoYXI+KGRhdGFbZHBdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnLCc6IHsKICAgICAgICAgICAgY2hhciBjOwogICAgICAgICAgICBzdGQ6OmNpbiA+PiBjOwogICAgICAgICAgICBkYXRhW2RwXT1jOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgY2FzZSAnWyc6IAogICAgICAgICAgICBpZihkYXRhW2RwXT09MCkgCiAgICAgICAgICAgICAgIGl0PXN0ZDo6ZmluZChpdCwgbGFzdCwgJ10nKTsKICAgICAgICAgICAgZWxzZSAKICAgICAgICAgICAgICAgam1wcy5wdXNoKGl0KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnXSc6IAogICAgICAgICAgICBpdD1qbXBzLnRvcCgpLTE7CiAgICAgICAgICAgIGptcHMucG9wKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0gICAKICAgIH0gICAKfSAgIAp2b2lkIHJ1bihjb25zdCBzdGQ6OnN0cmluZyYgY29kZSkgeyBydW4oY29kZS5iZWdpbigpLCBjb2RlLmVuZCgpKTsgfQppbnQgbWFpbigpIHsKICAgIHN0ZDo6c3RyaW5nIHByb2dyYW09IisrKysrKysrKytbPisrKysrKys+KysrKysrKysrKz4rKys+Kzw8PDwtXT4rKy4+Ky4rKysrKysrLi4rKysuPisrLjw8KysrKysrKysrKysrKysrLj4uKysrLi0tLS0tLS4tLS0tLS0tLS4+Ky4+LiI7CiAgICBydW4ocHJvZ3JhbSk7Cn0g
-
upload with new input
-
result: Success time: 0s memory: 3024 kB returned value: 0
Hello World!


