Programovací jazyk Brainfuck patří mezi ezoterické jazyky, určené k pobavení a zamyšlení programátorů. Navrhl jej v roce 1993 švýcarský programátor Urban Müller a obsahuje pouze osm příkazů. Každý příkaz je reprezentován právě jedním znakem a neznámé znaky jsou ignorovány. Brainfuck je Turingovsky úplný a formálně je tedy stejně silný jako obyčejné programovací jazyky.
Programovací jazyk Brainfuck obsahuje celkem 8 příkazů. Každý z nich se zapisuje právě jedním znakem ASCII. Má k dispozici pole buněk o zadané velikosti (obvykle 30000), které je na počátku vynulováno. Každá buňka může nabývat hodnot 0-255 (rozsah je tedy jeden bajt). Aktuální buňku určuje tzv. datový ukazatel.
Příkaz | Význam |
---|---|
< | Přesune datový ukazatel o jednu buňku vlevo. |
> | Přesune datový ukazatel o jednu buňku vpravo. |
+ | Inkrementuje hodnotu v aktuální buňce. |
- | Dekrementuje hodnotu v aktuální buňce. |
. | Vypíše hodnotu v aktuální buňce (obvykle jako odpovídající znak ASCII). |
, | Načte hodnotu na vstupu do aktuální buňky (obvykle ASCII hodnotu zadaného znaku). |
[ | Je-li hodnota v aktuální buňce různá od 0, přesune instrukční ukazatel na odpovídající pravou závorku. |
] | Je-li hodnota v aktuální buňce rovna 0, přesune instrukční ukazatel na odpovídající levou závorku. |
++++++++++[>+++++++>++++
++++++>+++>+<<<<-]>++.>+
.+++++++..+++.>++.<<++++
+++++++++++.>.+++.------
.--------.>+.>.
[-]
Dopředné hledání (fast forward):
[>]<
Zpětné hledání (rewind):
[<]>
Nechť buňka #0 obsahuje první sčítanec a buňka #1 druhý. Po skončení následující cyklu bude v buňce #0 nula a v buňce #1 součet.
[->+<]