You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1.3 KiB

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.

Examples of outputs :

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
abc$
student@ubuntu:~/student/brainfuck$ ./brainfuck | cat -e
$
student@ubuntu:~/student/brainfuck$