var main = proc() { // source var src = ">++++++++++[<++++++++++>-]<->>>>>+++[>+++>+++<<-]<<<<+<[>[>+>+<<-]>>[-<<+>>]++++>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<[[-]>>>>>>[[-]<++++++++++<->>]<-[>+>+<<-]>[<+>-]+>[[-]<->]<<<<<<<<<->>]<[>+>+<<-]>>[-<<+>>]+>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<<[>>+>+<<<-]>>>[-<<<+>>>]++>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<[>+<[-]]<[>>+<<[-]]>>[<<+>>[-]]<<<[>>+>+<<<-]>>>[-<<<+>>>]++++>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<[>+<[-]]<[>>+<<[-]]>>[<<+>>[-]]<<[[-]>>>++++++++[>>++++++<<-]>[<++++++++[>++++++<-]>.<++++++++[>------<-]>[<<+>>-]]>.<<++++++++[>>------<<-]<[->>+<<]<++++++++[<++++>-]<.>+++++++[>+++++++++<-]>+++.<+++++[>+++++++++<-]>.+++++..--------.-------.++++++++++++++>>[>>>+>+<<<<-]>>>>[-<<<<+>>>>]>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<<<[>>>+>+<<<<-]>>>>[-<<<<+>>>>]+>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<<[>>+<<[-]]>[>+<[-]]++>>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<+<[[-]>-<]>[<<<<<<<.>>>>>>>[-]]<<<<<<<<<.>>----.---------.<<.>>----.+++..+++++++++++++.[-]<<[-]]<[>+>+<<-]>>[-<<+>>]+>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<<[>>+>+<<<-]>>>[-<<<+>>>]++++>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<[>+<[-]]<[>>+<<[-]]>>[<<+>>[-]]<<[[-]>++++++++[<++++>-]<.>++++++++++[>+++++++++++<-]>+.-.<<.>>++++++.------------.---.<<.>++++++[>+++<-]>.<++++++[>----<-]>++.+++++++++++..[-]<<[-]++++++++++.[-]]<[>+>+<<-]>>[-<<+>>]+++>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<[[-]++++++++++. >+++++++++[>+++++++++<-]>+++.+++++++++++++.++++++++++.------.<++++++++[>>++++<<-]>>.<++++++++++.-.---------.>.<-.+++++++++++.++++++++.---------.>.<-------------.+++++++++++++.----------.>.<++++++++++++.---------------.<+++[>++++++<-]>..>.<----------.+++++++++++.>.<<+++[>------<-]>-.+++++++++++++++++.---.++++++.-------.----------.[-]>[-]<<<.[-]]<[>+>+<<-]>>[-<<+>>]++++>+<[-<->]<[[-]>>-<<]>>[[-]<<+>>]<<[[-]++++++++++.[-]<[-]>]<+<]"; var pos = 0; var len = #src; var chr; var depth = 0; // input var input = ""; var inppos = 0; // tape var tape = @[]; var ptr = 0; var ptrmax = 30000 - 1; var i = 0; while (i < ptrmax) { tape[i] = 0; i = i + 1; }; { @mainloop while (pos < len) { chr = src[pos]; if (chr == "<") if (ptr > 0) ptr = ptr - 1 else ptr = ptrmax ; if (chr == ">") if (ptr < ptrmax) ptr = ptr + 1 else ptr = 0 ; if (chr == "+") if (tape[ptr] < 255) tape[ptr] = tape[ptr] + 1 else tape[ptr] = 0 ; if (chr == "-") if (tape[ptr] > 0) tape[ptr] = tape[ptr] - 1 else tape[ptr] = 255 ; if (chr == ".") write(char(tape[ptr])) ; if (chr == ",") { tape[ptr] = byte(input[inppos]); inppos = inppos + 1; }; if (chr == "[") { if (tape[ptr] == 0) { depth = depth + 1; while (depth > 0) { pos = pos + 1; chr = src[pos]; depth = depth + if (chr == "[") 1 else if (chr == "]") -1 else 0 ; }; }; }; if (chr == "]") { if (tape[ptr] != 0) { depth = depth + 1; while (depth > 0) { pos = pos - 1; chr = src[pos]; depth = depth + if (chr == "]") 1 else if (chr == "[") -1 else 0 ; }; }; }; pos = pos + 1; }; }; }; main();