|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Aug 2008
Messaggi: 51
|
[C++] Interprete Brainfuck
Ecco un interprete per il linguaggio Brainfuck:
Codice:
#include <iostream> #include <string> #include <vector> #include <fstream> using namespace std; vector<char> Istruzioni, Vettore; int main (int argc, char* argv[]) { ifstream input (argv[1], ios_base::in); string str; int indice = 0; do { getline(input, str, '\n'); for (int i = 0; i < str.size(); i++) Istruzioni.push_back(str[i]); } while (!input.eof()); input.close(); Vettore.resize(Istruzioni.size()); for (int i = 0; i < Istruzioni.size(); i++) { switch (Istruzioni[i]) { case '>' : if (indice < Vettore.size() - 1) indice++; break; case '<' : if (indice > 0) indice--; break; case '+' : Vettore[indice]++; break; case '-' : if (Vettore[indice] > 0) Vettore[indice]--; break; case '.' : putchar(Vettore[indice]); break; case ',' : Vettore[indice] = getchar(); break; case '[' : if (!Vettore[indice]) { int quadre = 0; while (i < Istruzioni.size()) { if (Istruzioni[i] == '[') quadre++; else if (Istruzioni[i] == ']') quadre--; i++; if (quadre == 0) { i--; break; }; }; }; break; case ']' : if (Vettore[indice]) { int quadre = 0; while (i >= 0) { if (Istruzioni[i] == '[') quadre++; else if (Istruzioni[i] == ']') quadre--; i--; if (quadre == 0) { i++; break; }; }; }; break; }; }; return 0; } Mi è piacuto molto questo: http://esoteric.sange.fi/brainfuck/b...g/mandelbrot.b Saluti |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:56.