/* sed -ne 's/.*BF: \([^ ]\+\)...$/\1/;T;p' bf_ubel_land.c | ruby bf.rb */ #include #include #include int main(void) { int t[16], p = 0; memset(t, 0, sizeof(t)); /* U B E L < 3 L A N D 85 66 69 76 32 60 51 32 76 65 78 68 10 */ t[p] += 4; /* BF: ++++ */ while( t[p] ) /* BF: [ */ { p++; /* BF: > */ t[p] += 4; /* BF: ++++ */ while( t[p] ) /* BF: [ */ { p++; /* BF: > */ t[p] += 4; /* BF: ++++ */ p++; /* BF: > */ t[p] += 5; /* BF: +++++ */ p++; /* BF: > */ t[p] += 4; /* BF: ++++ */ p++; /* BF: > */ t[p] += 2; /* BF: ++ */ p -= 4; /* BF: <<<< */ t[p]--; /* BF: - */ } /* BF: ] */ p--; /* BF: < */ t[p]--; /* BF: - */ } /* BF: ] */ assert(p == 0); assert(t[0] == 0); assert(t[1] == 0); assert(t[2] == 64); assert(t[3] == 80); assert(t[4] == 64); assert(t[5] == 32); p++; /* BF: > */ t[p] += 5; /* BF: +++++ */ while( t[p] ) /* BF: [ */ { p += 2; /* BF: >> */ t[p]++; /* BF: + */ p--; /* BF: < */ t[p]++; /* BF: + */ p--; /* BF: < */ t[p]--; /* BF: - */ } /* BF: ] */ assert(p == 1); assert(t[0] == 0); assert(t[1] == 0); assert(t[2] == 69); assert(t[3] == 85); assert(t[4] == 64); assert(t[5] == 32); p += 2; /* BF: >> */ assert(p == 3); assert(t[p] == 'U'); putchar(t[p]); /* BF: . */ p++; /* BF: > */ assert(p == 4); t[p] += 2; /* BF: ++ */ assert(t[p] == 'B'); putchar(t[p]); /* BF: . */ p -= 2; /* BF: << */ assert(p == 2); assert(t[p] == 'E'); putchar(t[p]); /* BF: . */ p--; /* BF: < */ t[p] += 6; /* BF: ++++++ */ while( t[p] ) /* BF: [ */ { p++; /* BF: > */ t[p]--; /* BF: - */ p++; /* BF: > */ t[p]--; /* BF: - */ p++; /* BF: > */ t[p]--; /* BF: - */ p -= 3; /* BF: <<< */ t[p]--; /* BF: - */ } /* BF: ] */ assert(p == 1); assert(t[0] == 0); assert(t[1] == 0); assert(t[2] == 63); assert(t[3] == 79); assert(t[4] == 60); assert(t[5] == 32); p += 2; /* BF: >> */ assert(p == 3); t[p] -= 3; /* BF: --- */ assert(t[p] == 'L'); putchar(t[p]); /* BF: . */ p += 2; /* BF: >> */ assert(p == 5); assert(t[p] == ' '); putchar(t[p]); /* BF: . */ p--; /* BF: < */ assert(p == 4); assert(t[p] == '<'); putchar(t[p]); /* BF: . */ p += 3; /* BF: >>> */ assert(p == 7); t[p] += 3; /* BF: +++ */ while( t[p] ) /* BF: [ */ { p++; /* BF: > */ t[p] += 3; /* BF: +++ */ while( t[p] ) /* BF: [ */ { assert(p == 8); p -= 4; /* BF: <<<< */ t[p]--; /* BF: - */ p += 2; /* BF: >> */ t[p]++; /* BF: + */ p += 2; /* BF: >> */ t[p]--; /* BF: - */ } /* BF: ] */ p--; /* BF: < */ t[p]--; /* BF: - */ } /* BF: ] */ assert(p == 7); assert(t[0] == 0); assert(t[1] == 0); assert(t[2] == 63); assert(t[3] == 76); assert(t[4] == 51); assert(t[5] == 32); assert(t[6] == 9); assert(t[7] == 0); assert(t[8] == 0); p -= 3; /* BF: <<< */ assert(p == 4); assert(t[p] == '3'); putchar(t[p]); /* BF: . */ p++; /* BF: > */ assert(p == 5); assert(t[p] == ' '); putchar(t[p]); /* BF: . */ p -= 2; /* BF: << */ assert(p == 3); assert(t[p] == 'L'); putchar(t[p]); /* BF: . */ p--; /* BF: < */ t[p] += 2; /* BF: ++ */ assert(p == 2); assert(t[p] == 'A'); putchar(t[p]); /* BF: . */ p++; /* BF: > */ t[p] += 2; /* BF: ++ */ assert(p == 3); assert(t[p] == 'N'); putchar(t[p]); /* BF: . */ p--; /* BF: < */ t[p] += 3; /* BF: +++ */ assert(p == 2); assert(t[p] == 'D'); putchar(t[p]); /* BF: . */ p += 4; /* BF: >>>> */ t[p]++; /* BF: + */ assert(p == 6); assert(t[p] == '\n'); putchar(t[p]); /* BF: . */ return 0; }