/* berserk.c - Don Yang (uguu.org) B E R S E R K \n 66 69 82 83 69 82 75 10 11/06/11 */ #include #include #include int main(int argc, char **argv) { int tape[16]; memset(tape, 0, sizeof(tape)); /* ++++[>++>++++[>++++>+++++<<-]<<-] */ for(tape[0] += 4; tape[0]; tape[0]--) { tape[1] += 2; for(tape[2] += 4; tape[2]; tape[2]--) { tape[3] += 4; tape[4] += 5; } } assert(tape[0] == 0); assert(tape[1] == 8); assert(tape[2] == 0); assert(tape[3] == 64); assert(tape[4] == 80); /* >>>++.+++>++ */ tape[3] += 2; assert(tape[3] == 66); /* B */ putchar(tape[3]); tape[3] += 3; assert(tape[3] == 69); /* E */ tape[4] += 2; /* */ putchar(tape[3]); /* [>+>+<<-] */ for(; tape[4]; tape[4]--) { tape[5] += 1; tape[6] += 1; } assert(tape[0] == 0); assert(tape[1] == 8); assert(tape[2] == 0); assert(tape[3] == 69); assert(tape[4] == 0); assert(tape[5] == 82); assert(tape[6] == 82); /* >>.<+. */ assert(tape[6] == 82); /* R */ putchar(tape[6]); tape[5] += 1; assert(tape[5] == 83); /* S */ putchar(tape[5]); /* <<<<[->>>+>-<<<<] */ for(; tape[1]; tape[1]--) { tape[4] += 1; tape[5] -= 1; } assert(tape[0] == 0); assert(tape[1] == 0); assert(tape[2] == 0); assert(tape[3] == 69); assert(tape[4] == 8); assert(tape[5] == 75); /* K */ assert(tape[6] == 82); /* >>.>>>.<.<++. */ putchar(tape[3]); putchar(tape[6]); putchar(tape[5]); tape[4] += 2; putchar(tape[4]); return 0; }