Computer Science Canada

BF programming challenge

Author:  beard0 [ Fri Nov 26, 2004 2:43 pm ]
Post subject:  BF programming challenge

Want to learn a new language? What if you heard that it has only 9, 1-character commands? The language is BF. Here is an explanation of the language:
Quote:
A BF program operates on a simple 1-dimensional array of memory cells. There is a "pointer" to a current memory cell. In "vanilla" BF, this array has a size of 30,000, and each cell is an 8-bit integer - that is, it stores a value from 0-255. Incrementing a cell with a value of 255 wraps around to 0, likewise, decrementing a cell with a value of 0 wraps around to 255. All cells are initially set to 0, and the pointer points to the left most cell. The BF program consists of a string. Each character can be one of 9 commands:

> move the pointer one cell to the right
< move the pointer one cell to the left
+ increment the current cell by 1
- decrement the current cell by 1
[ skips ahead to the matching "]" IF the current cell contains 0
] returns to the matching "[" IF the current cell DOES NOT contain 0
. outputs the character with the ASCII value of the current cell
, sets the current cell to the ASCII value of the input character
# ends the program. (This is not necessary; the program will terminate at the end, but it can be useful)

All other characters are comments and are duly ignored.
Note: If you attempt to move the pointer past the edge of the array, your program will crash.

Some sample programs:

Program 1:

Output:
Hello World!
++++++++[>++++[>++>+++>+++>+<<<<-]>+>->+>>+[<]<-]>>.>
>---.+++++++..+++.>.<<-.>.+++.------.--------.>+.>++.

Program2:
++[>+++++++++++++<-]
>>>++++++++[<++++++++>-]<+
<[->.+<]
++++++++++.
#
Output:
ABCDEFGHIJKLMNOPQRSTUVWXYZ

Program 3:
[+[>uh-oh<]+]------outer[+>------inner[+>-----<]<]>>.<++++++++++.#
Output:
L


So, the challenge is to learn the language, and write a program in it with the least number of charcters possible. The program should accept two 1 digit numbers as input, multiply them, and then display the answer. You do not need to display prompts. You may force your output to be two digits. (i.e. if 2 and 3 are entered, both "6" and "06" are acceptable outputs)

Here is a BF environment that I made in turing to enable you to test your programs as you go. Be careful: it will not warn you about overwriting files, or saving your work.


: