Brainf*ckってかんたんだな〜


#include
#include
#include

void eval(const char* data, int length);

char g_memory_arr[30000];
char* g_memory = &g_memory_arr[0];

int main()
{
const char* prog = "+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.";
eval( prog, strlen(prog) );
}

void eval(const char* data, int length)
{
while( length ) {
switch( *data ) {
case '>': g_memory++; break;
case '<': g_memory--; break;
case '+': (*g_memory)++; break;
case '-': (*g_memory)--; break;
case '.': putchar(*g_memory); break;
case ',': *g_memory = getchar(); break;
case '[':
{
if(!*g_memory) { data = std::find( data, data+length, ']' ); }
else { eval( data+1, length-1 ); continue; }
}
break;
case ']': return;
}
data++;
length--;
}
}

いや、書けませんけどねww