Trivial brainfuck substitution
TrivialBrainfuckSubstitution is not a single programming language, but rather a large family of programming languages that are trivial substitutions of the brainfuck language.
Syntax
We will pick TrivialBrainfuckSubstitution("a","b","c","d","e","f","g","h")
as an example. To write a program in TrivialBrainfuckSubstitution("a","b","c","d","e","f","g","h")
, first make a program in brainfuck. Then, convert it to according to this table:
Brainfuck | Substitution Argument | Description |
---|---|---|
> | a | Move the pointer to the right |
< | b | Move the pointer to the left |
+ | c | Increment the memory cell under the pointer |
- | d | Decrement the memory cell under the pointer |
. | e | Output the character signified by the cell at the pointer |
, | f | Input a character and store it in the cell at the pointer |
[ | g | Jump past the matching h if the cell under the pointer is 0
|
] | h | Jump back to the matching g
|
In addition it's common to replace short sequences of brainfuck instructions with substitutions. For example [-]
may be replaced by a single instruction or some form of run length encoding might be used.
Example Members of the TrivialBrainfuckSubstitution family
Language | Trivial brainfuck Substitution |
---|---|
!!Fuck | TrivialBrainfuckSubstitution("!!!!!#", "!!!!!!#", "!!!!!!!#", "!!!!!!!!#", "!!!!!!!!!!#", "!!!!!!!!!#", "!!!!!!!!!!!#", "!!!!!!!!!!!!#")
|
AAA | TrivialBrainfuckSubstitution("aAaA", "AAaa", "AAAA", "AaAa", "aaaa", "aAaa", "aaAA", "aaaA")
|
Alphuck | TrivialBrainfuckSubstitution("a", "c", "e", "i", "j", "o", "p", "s")
|
BrainFNORD | TrivialBrainfuckSubstitution("pineal", "fnord", "hail", "eris", "kallisti", "chaos", "23", "5")
|
brainfuck | TrivialBrainfuckSubstitution(">", "<", "+", "-", ".", ",", "[", "]")
|
brainfuck 4 humans | TrivialBrainfuckSubstitution("right", "left", "incr", "decr", "out", "inp", "loop(", ")")
|
brainsymbol | TrivialBrainfuckSubstitution("!", "@", "#", "$", "%", "^", "&", "*")
|
Broccosprout | TrivialBrainfuckSubstitution("Plant some broccoli seeds. $", "Plant some brussels sprouts seeds. $", "Water the broccoli and brussels sprouts. $", "Vernalize the broccoli and brussels sprouts. $", "Pollinate the broccoli and brussels sprouts. Take the male flower, rub it lightly with a paintbrush, and move the pollen to the female flower. $", "Wait for the broccoli and brussels sprouts to form the seed pods $", "Separate the seed from the chaff. $", "Plant the broccosprout seeds and jump with excitement! $")
|
Btjzxgquartfrqifjlv | TrivialBrainfuckSubstitution("f", "rqi", "qua", "rtf", "lv", "j", "btj", "zxg")
|
Binaryfuck | TrivialBrainfuckSubstitution("010", "011", "000", "001", "100", "101", "110", "111")
|
Blub | TrivialBrainfuckSubstitution("Blub. Blub?", "Blub? Blub.", "Blub. Blub.", "Blub! Blub!", "Blub! Blub.", "Blub. Blub!", "Blub! Blub?", "Blub? Blub!")
|
Brainfuck, but every + is replaced with the bee movie script | TrivialBrainfuckSubstitution(">", "<", [Too long to be put in this page, full link here.], "-", ".", ",", "[", "]")
|
Brainfuck² | TrivialBrainfuckSubstitution("Ook!", "Alphuck", "Fuckfuck", "POGAACK", "Unibrain", "Wordfuck", "Brainfuck²", "ZZZ")
|
Colonoscopy | TrivialBrainfuckSubstitution(";};", ";{;", ";;};", ";;{;", ";;;};", ";;;{;", "{{;", "}};")
|
DetailedFuck | TrivialBrainfuckSubstitution("MOVE THE MEMORY POINTER ONE CELL TO THE RIGHT", "MOVE THE MEMORY POINTER ONE CELL TO THE LEFT", "INCREMENT THE CELL UNDER THE MEMORY POINTER BY ONE", "DECREMENT THE CELL UNDER THE MEMORY POINTER BY ONE", "REPLACE THE CELL UNDER THE MEMORY POINTER'S VALUE WITH THE ASCII CHARACTER CODE OF USER INPUT", "PRINT THE CELL UNDER THE MEMORY POINTER'S VALUE AS AN ASCII CHARACTER", "IF THE CELL UNDER THE MEMORY POINTER'S VALUE IS ZERO INSTEAD OF READING THE NEXT COMMAND IN THE PROGRAM JUMP TO THE CORRESPONDING COMMAND EQUIVALENT TO THE ] COMMAND IN BRAINFUCK", "IF THE CELL UNDER THE MEMORY POINTER'S VALUE IS NOT ZERO INSTEAD OF READING THE NEXT COMMAND IN THE PROGRAM JUMP TO THE CORRESPONDING COMMAND EQUIVALENT TO THE [ COMMAND IN BRAINFUCK")
|
ExampleFuck | TrivialBrainfuckSubstitution("Truth Machine", "Quine", "Hello World", "Cat Program", "Self Interpreter", "Polyglot", "FizzBuzz", "99 Bottles of Beer")
|
FJ | TrivialBrainfuckSubstitution("jfj", "jff", "fff", "ffj", "fjj", "fjf", "jjf", "jjj")
|
Fluffle Puff | TrivialBrainfuckSubstitution("b", "t", "bf", "pl", "!", "?", "*gasp*", "*pomf*")
|
fuckbeEs | TrivialBrainfuckSubstitution("f", "u", "c", "k", "b", "e", "E", "s")
|
GERMAN | TrivialBrainfuckSubstitution("LINKS", "RECHTS", "ADDITION", "SUBTRAKTION", "EINGABE", "AUSGABE", "SCHLEIFENANFANG", "SCHLEIFENENDE")
|
GibMeRol | TrivialBrainfuckSubstitution("G", "i", "b", "M", "e", "R", "o", "l")
|
HTPF | TrivialBrainfuckSubstitution(">", "<", "=", "/", """, "#", "&", ";")
|
Human's mind have sex with someone | TrivialBrainfuckSubstitution("Move the pointer to the right", "Move the pointer to the left", "Increment the memory cell under the pointer", "Decrement the memory cell under the pointer", "Output the character signified by the cell at the pointer", "Input the character signified by the cell at the pointer", "Jump past the matching right bracket if the cell under the pointer is 0", "Jump back to the matching left bracket if the cell under the pointer is not 0")
|
K-on Fuck | TrivialBrainfuckSubstitution("うんうんうん", "うんうんたん", "うんたんうん", "うんたんたん", "たんうんうん", "たんうんたん", "たんたんうん", "たんたんたん")
|
Lazyfuck | TrivialBrainfuckSubstitution("e", "t", "a", "n", "s", "r", "o", "i")
|
Mierda | TrivialBrainfuckSubstitution("Derecha", "Izquierda", "Mas", "Menos", "Decir", "Leer", "Iniciar Bucle", "Terminar Bucle")
|
Morsefuck | TrivialBrainfuckSubstitution(".--", "--.", "..-", "-..", "-.-", ".-.", "---", "...")
|
Nagawooski | TrivialBrainfuckSubstitution("na", "ga", "woo", "ski", "an", "ag", "oow", "iks")
|
Omam | TrivialBrainfuckSubstitution("hold your horses now", "sleep until the sun goes down", "through the woods we ran", "deep into the mountain sound", "don't listen to a word i say", "the screams all sound the same", "though the truth may vary", "this ship will carry")
|
Ook! | TrivialBrainfuckSubstitution("Ook. Ook?", "Ook? Ook.", "Ook. Ook.", "Ook! Ook!", "Ook! Ook.", "Ook. Ook!", "Ook! Ook?", "Ook? Ook!")
|
PenisScript | TrivialBrainfuckSubstitution("8=D", "8==D", "8===D", "8====D", "8=====D", "8======D", "8=======D", "8========D")
|
Pewlang | TrivialBrainfuckSubstitution("pew", "Pew", "pEw", "peW", "PEw", "pEW", "PeW", "PEW")
|
Pikalang | TrivialBrainfuckSubstitution("pipi", "pichu", "pi", "ka", "pikachu", "pikapi", "pika", "chu")
|
ReverseFuck | TrivialBrainfuckSubstitution("<", ">", "-", "+", ",", ".", "]", "[")
|
Revolution 9 | TrivialBrainfuckSubstitution("It's alright", "turn me on, dead man", "Number 9", "if you become naked", "The Beatles", "Paul is dead", "Revolution 1", "Revolution 9")
|
Redundant | TrivialBrainfuckSubstitution("The first 5000 digits of pi>", "The first 5000 digits of pi<", "The first 5000 digits of pi+", "The first 5000 digits of pi-", "The first 5000 digits of pi.", "The first 5000 digits of pi,", "The first 5000 digits of pi[", "The first 5000 digits of pi]")
|
Roadrunner | TrivialBrainfuckSubstitution("meeP", "Meep", "mEEp", "MeeP", "MEEP", "meep", "mEEP", "MEEp")
|
Scratch is dumb | TrivialBrainfuckSubstitution("\x05", "\x04", "\x00", "\x01", "\x03", "\x02", "\x06", "\x07")
|
SCREAMCODE | TrivialBrainfuckSubstitution("AAAH", "AAAAGH", "FUCK", "SHIT", "!!!!!!", "WHAT?!", "OW", "OWIE")
|
Spider Giant | TrivialBrainfuckSubstitution("Spider", "He is our hero!", "We love you spider!", "Get rid of", "Must stop!", "Step on Spider!", "I promise not to kill you.", "Oh!")
|
Ternary | TrivialBrainfuckSubstitution("01", "00", "11", "10", "21", "20", "02", "12")
|
THIS IS NOT A BRAINFUCK DERIVATIVE | TrivialBrainfuckSubstitution("IT NEVER WAS", "IT NEVER WILL BE", "THIS IS NOT A BRAINFUCK DERIVATIVE", "IT HAS NOTHING TO DO WITH BRAINFUCK", "TO ANYBODY WHO SAYS THIS IS A BRAINFUCK DERIVATIVE:", "FUCK YOU", "SHUT UP YOU LITTLE BITCH", "SHUT THE FUCK UP")
|
Triplet | TrivialBrainfuckSubstitution("001", "100", "111", "000", "010", "101", "110", "011")
|
UndetailedFuck | TrivialBrainfuckSubstitution("DON'T MOVE THE MEMORY POINTER ONE CELL TO THE RIGHT", "DON'T MOVE THE MEMORY POINTER ONE CELL TO THE LEFT", "DON'T INCREMENT THE CELL UNDER THE MEMORY POINTER BY ONE", "DON'T DECREMENT THE CELL UNDER THE MEMORY POINTER BY ONE", "DON'T REPLACE THE CELL UNDER THE MEMORY POINTER'S VALUE WITH THE ASCII CHARACTER CODE OF USER INPUT", "DON'T PRINT THE CELL UNDER THE MEMORY POINTER'S VALUE AS AN ASCII CHARACTER", "IF THE CELL UNDER THE MEMORY POINTER'S VALUE IS ZERO INSTEAD OF READING THE NEXT COMMAND IN THE PROGRAM DON'T JUMP TO THE CORRESPONDING COMMAND EQUIVALENT TO THE ] COMMAND IN BRAINFUCK", "IF THE CELL UNDER THE MEMORY POINTER'S VALUE IS NOT ZERO INSTEAD OF READING THE NEXT COMMAND IN THE PROGRAM DON'T JUMP TO THE CORRESPONDING COMMAND EQUIVALENT TO THE [ COMMAND IN BRAINFUCK")
|
UwU | TrivialBrainfuckSubstitution("OwO", "°w°", "UwU", "QwQ", "@w@", ">w<", "~w~", "¯w¯")
|
wepmlrio | TrivialBrainfuckSubstitution("r", "l", "p", "m", "o", "I", "w", "e")
|
ZZZ | TrivialBrainfuckSubstitution("zz", "-zz", "z", "-z", "zzz", "-zzz", "z+z", "z-z")
|
⫸fuck | TrivialBrainfuckSubstitution("⫸", "⫷", "⁜", "⌁", "⁕", "⁑", "⟬", "⟭")
|
脑操 | TrivialBrainfuckSubstitution("》", "《", "十", "一", "。", ",", "(", ")")
|
脑子爆掉 | TrivialBrainfuckSubstitution("右", "左", "上", "下", "写", "读", "始", "终")
|
There are of course, infinitely many members not listed here.
Interpreter
Interpreters for these languages are also generally trivial to write using a regular expression and a lookup table to convert the language to something that can be executed directly. Two simple examples are below.
Ruby | Perl |
---|---|
#!/usr/bin/env ruby eval 'm=Hash.new(p=0);'+ARGF.read.gsub(/./, '>' => 'p+=1;', '<' => 'p-=1;', '+' => 'm[p]+=1;', '-' => 'm[p]-=1;', '.' => 'putc m[p];', ',' => 'm[p]=STDIN.getbyte if !STDIN.eof;', '[' => '(', ']' => ')while((m[p]&=255)!=0);') |
#!/usr/bin/env perl %c=qw( > $p++; < $p--; + $b[$p]++; - $b[$p]--; . print+chr$b[$p]; , $b[$p]=ord(getc); [ $b[$p]&=255;while($b[$p]){ ] $b[$p]&=255;} ); $/=$,;$_=<>;s/./$c{$&}/g;eval |
External links
- r-fxxk, a Ruby package that can generate interpreters for arbitrary TrivialBrainfuckSubstitution members.
- Try BrainSoup , a metalanguage to interpret and run trivial brainfuck substitutions.
- This REPL is currently not working (likely due to a change in Replit's system), but forking it will automatically upgrade the new fork and allow using it.