33 lines
1.2 KiB
Plaintext
33 lines
1.2 KiB
Plaintext
Exercitiu : brainfuck
|
|
Fisiere de iesire : *.c, *.h
|
|
Functii autorizate : write, malloc, free
|
|
--------------------------------------------------------------------------------
|
|
|
|
Scrieti un interpretor de programe numit Brainfuck.
|
|
Codul sursa va fi dat ca primul argument.
|
|
Codul va fi mereu valid, cu cel mult 4096 operatii.
|
|
Barinfuck este un limbaj minimal. Contine un vector de bytes
|
|
(pentru acest exercitiu, 2048 bytes) initializati cu zero, si
|
|
un pointer spre primul byte.
|
|
|
|
Fiecare operator consista dintr-un singur caracter:
|
|
- '>' incrementeaza pointerul ;
|
|
- '<' decrementeaza pointerul ;
|
|
- '+' incrementeaza byte-ul la care pointeaza ;
|
|
- '-' decrementeaza byte-ul la care pointeaza ;
|
|
- '.' printeaza la iesirea standard byte-ul spre care pointeaza ;
|
|
- '[' du-te la perechea ']' byte-ul la care pointeaza e 0 (while start) ;
|
|
- ']' du-te la perechea '[' byte-ul la care pointeaza nu e 0 (while end).
|
|
|
|
Orice alt caracter este un comentariu.
|
|
|
|
Examples:
|
|
|
|
$>./brainfuck "++++++++++[>+++++++>++++++++++>+++>+<<<<-]
|
|
>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>." | cat -e
|
|
Hello World!$
|
|
$>./brainfuck "+++++[>++++[>++++H>+++++i<<-]>>>++\n<<<<-]>>--------.>+++++.>." | cat -e
|
|
Hi$
|
|
$>./brainfuck | cat -e
|
|
$
|