Software-Emitting
Der programmierte Erfolg

Brainfuck Interpreter

Dies ist jetzt kein Spiel aber es hat Sinn. Dieses Programm heißt Brainfuck und ist eine esoterische Programmiersprache. 
Es gibt nur folgende Befehle:
+  --> Inkrementiert das aktuelle Register
-  --> Dekrementiert es
> --> Register + 1
<  --> Register - 1
[  --> Schleifenanfang
]  --> Schleifenende
.  --> Ausgabe des Register
,  --> Eingabe
Das wars. 

Als Beispiel ist hier eine Schleife, die runterzählt:
,[-.]
Wenn ich eine Zelle verschieben will:
+++++[>+<-]

Eine Zelle auf null setzen:
[-]
ist besonders einfach.

Man kann selber ein wenig ausprobieren. 
Hier der Code in schlechtem C++:

// Brainfuck 1.1
#include <iostream>
#include <string.h>
using namespace std;
int i=0;
int pos=0;
int r[100];
int p=0;
char x[100];
int var=0;
int main() {
    cout << "       *** Brainfuck *** " << endl;
    cout << endl;
    while(1) {
             cout << "OK" << endl;
             cin >> x;
             for(i=0;i<=strlen(x);i++) 
             {
                  switch(x[i]) {
                               case '+':
                                    r[p]=r[p]+1;
                                    break;
                               case '-':
                                    r[p]=r[p]-1;
                                    break;
                               case '<':
                                    p=p-1;
                                    break;
                               case '>':
                                    p=p+1;
                                    break;
                               case '.':
                                    cout << r[p] << endl;
                                    break;
                               case ',':
                                    cin >> var;
                                    r[p]=var;
                                    break;
                               case '[':
                                    pos=i;
                                    break;
                               case ']':
                                    if(r[p] != 0) {
                                            i=pos;
                                            }
                                    break;
                               }
                  }
             }
}
 






Kommentar zu dieser Seite hinzufügen:
Ihr Name:
Ihre Nachricht: