mirror of https://github.com/01-edu/public.git
![aug.ornelas@gmail.com](/git/assets/img/avatar_default.png)
![Frenchris](/git/assets/img/avatar_default.png)
1 changed files with 34 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||||||
|
## brainfuck |
||||||
|
|
||||||
|
### Instructions |
||||||
|
|
||||||
|
Write a Brainfuck interpreter program. |
||||||
|
The source code will be given as first parameter. |
||||||
|
The code will always be valid, with no more than 4096 operations. |
||||||
|
Brainfuck is a minimalist language. It consists of an array of bytes |
||||||
|
(in our case, let's say 2048 bytes) initialized to zero, |
||||||
|
and a pointer to its first byte. |
||||||
|
|
||||||
|
Every operator consists of a single character : |
||||||
|
- '>' increment the pointer ; |
||||||
|
- '<' decrement the pointer ; |
||||||
|
- '+' increment the pointed byte ; |
||||||
|
- '-' decrement the pointed byte ; |
||||||
|
- '.' print the pointed byte on standard output ; |
||||||
|
- '[' go to the matching ']' if the pointed byte is 0 (while start) ; |
||||||
|
- ']' go to the matching '[' if the pointed byte is not 0 (while end). |
||||||
|
|
||||||
|
Any other character is a comment. |
||||||
|
|
||||||
|
And its output : |
||||||
|
|
||||||
|
```console |
||||||
|
student@ubuntu:~/student/brainfuck$ go build |
||||||
|
student@ubuntu:~/student/brainfuck$ ./brainfuck "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>." | cat -e |
||||||
|
Hello World!$ |
||||||
|
student@ubuntu:~/student/brainfuck$ ./brainfuck "+++++[>++++[>++++H>+++++i<<-]>>>++\n<<<<-]>>--------.>+++++.>." | cat -e |
||||||
|
Hi$ |
||||||
|
student@ubuntu:~/student/brainfuck$ ./brainfuck | cat -e |
||||||
|
$ |
||||||
|
student@ubuntu:~/student/brainfuck$ |
||||||
|
``` |
Loading…
Reference in new issue