Razi
Książe postów
Dołączył: 17 Sie 2006
Posty: 936
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pon 18:00, 29 Gru 2008 Temat postu: Interpreter rozszerzonego BrainFucka |
|
|
Kod: | #include <stdio>
int limit=255;
int chr=255;
char tab[255][255]; //wartości
char x=0, y=0; //wskaźniki
char bufor=0;
char kod[3000];
int dl=0;
bool cont;
int interpretuj(int i){
int s=i;
cont=false;
while(i<dl){ //printf("i:%d |%c| \n", i, kod[i]);
cont=false;
switch(kod[i]){
case '+': tab[x][y]++; break;
case '-': tab[x][y]--; break;
case '<': x--; break;
case '>': x++; break;
case '^': y++; break;
case 'v': y--; break;
case '*': tab[x][y]=bufor; break;
case '/': bufor=tab[x][y]; break;
case '.': printf("%c", tab[x][y]); break;
case ',': scanf("%c", &tab[x][y]); break;
case '[': i=interpretuj(i+1); break;
case ']': if(tab[x][y]==0) return i; else {i=s; cont=true;} break;
default: break;
}
if(cont==true) continue;
i++;
} return dl;
}
int main(){
for(int i=0; i<limit; i++) for(int j=0; j<limit>20)/pobranie kodu
interpretuj(0);
return 0;
}
|
Do samodzielnej kompilacji:p Możecie dodać conio.h i getch();, żeby konsoli nie zamykał.
Środowiskiem rozszerzonego brainfucka jest tablica dwuwymiarowa 255x255. porusza się po niej znakami <,>,v, oraz ^. "kropka" wypisuje znak, "przecinek" pobiera (po wpisaniu całego kodu!), +/- - dodawanie/odejmowanie, [,] - pętla.
Post został pochwalony 0 razy
|
|