// Brainfuck Interpreter by Charles Ray Shisler III #include #include #define y int&s,char*v,int*a,std::istream&f,int&p,char&c void x(y){v[s]=((v[s]<255)?v[s]+1:0);} // + void t(y){s=((s<99998)?s+1:0);} // > void q(y){v[s]=((v[s]>0)?v[s]-1:255);} // - void k(y){s=((s>0)?s-1:99998);} // < void e(y){std::cout<0;d=c==91?d+1:c==93?d-1:d)f.get(c);} void i(y){if(v[s])f.seekg(a[--p]-1);} // ] void w(y){return;} // NOP int main(int g,char**r){ if(g<2)return 1; std::ifstream f(r[1]); if(!f)return 1; char c=0,v[99999]={0}; void (*n)(int&,char*,int*,std::istream&,int&,char&)=&w; for(int s=0,p=0,a[1000]={0};f.peek()!=-1;f.get(c),n=(c==43?&x:c==45?&\ q:c==62?&t:c==60?&k:c==46?&e:c==44?&h:c==91?&o:c==93?&i:&w))(*n)(s,v,a,f,p,c); f.close(); return 0;}