Tanguy MAZE f9e508d5ef init
2019-06-22 18:23:35 +02:00

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
$