import std.stdio;
string compile(string code) {
auto result = "";
foreach (c; code) {
switch (c) {
case '>': result ~= "++p;"; break;
case '<': result ~= "--p;"; break;
case '+': result ~= "++*p;"; break;
case '-': result ~= "--*p;"; break;
case '.': result ~= "write(cast(char) *p);"; break;
case ',': result ~= "readf(\"%c\", cast(char*) p);"; break;
case '[': result ~= "while (*p) {"; break;
case ']': result ~= "}"; break;
default: break;
}
}
return "{ byte[30000] buffer; byte* p = &buffer[0]; " ~ result ~ "}";
}
void main() {
mixin(compile("++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>."));
}
aW1wb3J0IHN0ZC5zdGRpbzsKCnN0cmluZyBjb21waWxlKHN0cmluZyBjb2RlKSB7CiAgICBhdXRvIHJlc3VsdCA9ICIiOwogICAgZm9yZWFjaCAoYzsgY29kZSkgewogICAgICAgIHN3aXRjaCAoYykgewogICAgICAgIGNhc2UgJz4nOiByZXN1bHQgfj0gIisrcDsiOyBicmVhazsKICAgICAgICBjYXNlICc8JzogcmVzdWx0IH49ICItLXA7IjsgYnJlYWs7CiAgICAgICAgY2FzZSAnKyc6IHJlc3VsdCB+PSAiKysqcDsiOyBicmVhazsKICAgICAgICBjYXNlICctJzogcmVzdWx0IH49ICItLSpwOyI7IGJyZWFrOwogICAgICAgIGNhc2UgJy4nOiByZXN1bHQgfj0gIndyaXRlKGNhc3QoY2hhcikgKnApOyI7IGJyZWFrOwogICAgICAgIGNhc2UgJywnOiByZXN1bHQgfj0gInJlYWRmKFwiJWNcIiwgY2FzdChjaGFyKikgcCk7IjsgYnJlYWs7CiAgICAgICAgY2FzZSAnWyc6IHJlc3VsdCB+PSAid2hpbGUgKCpwKSB7IjsgYnJlYWs7CiAgICAgICAgY2FzZSAnXSc6IHJlc3VsdCB+PSAifSI7IGJyZWFrOwogICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAieyBieXRlWzMwMDAwXSBidWZmZXI7IGJ5dGUqIHAgPSAmYnVmZmVyWzBdOyAiIH4gcmVzdWx0IH4gIn0iOwp9Cgp2b2lkIG1haW4oKSB7CiAgICBtaXhpbihjb21waWxlKCIrKysrKysrKysrWz4rKysrKysrPisrKysrKysrKys+KysrPis8PDw8LV0+KysuPisuKysrKysrKy4uKysrLj4rKy48PCsrKysrKysrKysrKysrKy4+LisrKy4tLS0tLS0uLS0tLS0tLS0uPisuPi4iKSk7Cn0K