Braincrash
- Not to be confused with BrainCrash, published by ぬこ in 2008.
Braincrash is a useless programming language invented by User:TehZ, based on Brainfuck. It is made to only have 2 symbols (or you could call them commands), one of which is no-op, the other execute. It is an example of a turning tarpit.
So what is it?
Basically, it has a "command pointer" (CP, not IP), which is incremented after each command (including no-op). It points to one of the eight BF commands. It is sorted in this way:
+-><.,[]
The two commands available are " " and "!". " " is a no-op, while "!" executes the command pointed to by CP. After each step, the program increments the CP by one, and "mods" it by eight.
How am I supposed to write in this language?
You aren't, but here is a trick anyway. You start out with a file containing a line filled with "+-><.,[]" like this:
+-><.,[]+-><.,[]+-><.,[]+-><.,[]+-><.,[]+-><.,[]+-><.,[]+-><.,[](etc)
Then you add a line before that and start pressing space until you are over a BF character you want to use. When you are over one, press "!" and repeat. For example, when writing a cat program, here is the result:
!! !! ! +-><.,[]+-><.,[](removed)
Then you remove the second line, and you are finished.
Examples
Cat
!! !! !
Hello, World!
Line feeds aren't part of the program.
! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
Implementation
This short Lua script converts braincrash into brainfuck. It treats all characters that aren't "!" as spaces, however:
io.stdin:read("*line"):gsub("()!", (function(loc) io.stdout:write(("+-><.,[]"):sub((loc-1)%8+1,(loc-1)%8+1)) end))
This is a BRB program that converts Braincrash into Brainfuck:
;!+-><.,[];{#%%[^V;@v;>%}#{?Y;®%%v;#]_
This is a Python program that converts Brainfuck into Braincrash
source = #Your code goes here converted = "" wheel = [">", "<", "+", "-", ".", ",", "[","]"] i=0 x=0 while i < len(source): if wheel.count(source[i])<1: source = source[:i]+source[i+1:] elif wheel[x]==source[i]: converted+="!" i+=1 else: converted += " " x+=1 if x >= 8: x -= 8 print(converted)