/* misaka_bf0.c - Don Yang (uguu.org) 2013-09-28 */ #include #include #include int main(int argc, char **argv) { int d[16]; int p = 0; memset(d, 0, sizeof(d)); /* M I S A K A 32 77 73 83 65 75 65 10 */ d[p] += 4; /* BF:++++ */ while( d[p] ) /* BF:[ */ { d[p]--; /* BF:- */ p++; /* BF:> */ d[p] += 4; /* BF:++++ */ while( d[p] ) /* BF:[ */ { d[p]--; /* BF:- */ p++; /* BF:> */ d[p] += 2; /* BF:++ */ p--; /* BF:< */ } /* BF:] */ p--; /* BF:< */ } /* BF:] */ assert(p == 0); assert(d[0] == 0); assert(d[1] == 0); assert(d[2] == 32); p += 2; /* BF:>> */ assert(p == 2); while( d[p] ) /* BF:[ */ { d[p]--; /* BF:- */ p -= 2; /* BF:<< */ d[p]++; /* BF:+ */ p++; /* BF:> */ d[p] += 2; /* BF:++ */ p++; /* BF:> */ } /* BF:] */ assert(p == 2); assert(d[0] == 32); assert(d[1] == 64); assert(d[2] == 0); p--; /* BF:< */ d[p]++; /* BF:+ */ while( d[p] ) /* BF:[ */ { d[p]--; /* BF:- */ p += 2; /* BF:>> */ d[p]++; /* BF:+ */ p += 2; /* BF:>> */ d[p]++; /* BF:+ */ p += 2; /* BF:>> */ d[p]++; /* BF:+ */ p -= 6; /* BF:<<<<<< */ } /* BF:] */ assert(p == 1); assert(d[0] == 32); assert(d[1] == 0); assert(d[2] == 0); assert(d[3] == 65); assert(d[4] == 0); assert(d[5] == 65); assert(d[6] == 0); assert(d[7] == 65); p++; /* BF:> */ d[p] += 5; /* BF:+++++ */ while( d[p] ) /* BF:[ */ { d[p]--; /* BF:- */ p++; /* BF:> */ d[p] += 2; /* BF:++ */ p += 5; /* BF:>>>>> */ d[p] += 2; /* BF:++ */ p -= 6; /* BF:<<<<<< */ } /* BF:] */ assert(p == 2); assert(d[0] == 32); assert(d[1] == 0); assert(d[2] == 0); assert(d[3] == 75); assert(d[4] == 0); assert(d[5] == 65); assert(d[6] == 0); assert(d[7] == 65); assert(d[8] == 10); p++; /* BF:> */ while( d[p] ) /* BF:[ */ { d[p]--; /* BF:- */ p -= 2; /* BF:<< */ d[p]++; /* BF:+ */ p++; /* BF:> */ d[p]++; /* BF:+ */ p += 2; /* BF:>> */ d[p]++; /* BF:+ */ p += 2; /* BF:>> */ d[p]++; /* BF:+ */ p -= 3; /* BF:<<< */ } /* BF:] */ assert(p == 3); assert(d[0] == 32); assert(d[1] == 75); assert(d[2] == 75); assert(d[3] == 0); assert(d[4] == 75); assert(d[5] == 65); assert(d[6] == 75); assert(d[7] == 65); assert(d[8] == 10); d[p] += 2; /* BF:++ */ while( d[p] ) /* BF:[ */ { d[p]--; /* BF:- */ p -= 2; /* BF:<< */ d[p]++; /* BF:+ */ p++; /* BF:> */ d[p]--; /* BF:- */ p += 2; /* BF:>> */ d[p] += 4; /* BF:++++ */ p--; /* BF:< */ } /* BF:] */ assert(p == 3); assert(d[0] == 32); assert(d[1] == 77); assert(d[2] == 73); assert(d[3] == 0); assert(d[4] == 83); assert(d[5] == 65); assert(d[6] == 75); assert(d[7] == 65); assert(d[8] == 10); p -= 3; /* BF:<<< */ putchar(d[p]); /* BF:. = space */ p++; /* BF:> */ putchar(d[p]); /* BF:. = M */ p++; /* BF:> */ putchar(d[p]); /* BF:. = I */ p += 2; /* BF:>> */ putchar(d[p]); /* BF:. = S */ p++; /* BF:> */ putchar(d[p]); /* BF:. = A */ p++; /* BF:> */ putchar(d[p]); /* BF:. = K */ p++; /* BF:> */ putchar(d[p]); /* BF:. = A */ p++; /* BF:> */ putchar(d[p]); /* BF:. = newline */ assert(p == 8); while( d[p] ) /* BF:[ */ { p--; /* BF:< */ } /* BF:] */ assert(p == 3); p -= 3; /* BF:<<< */ assert(p == 0); return 0; }