PureBrainz
PureBrainz was inspired by brainfuck and tries to keep the basis, the spirit, while implementing proper tools to make programs. These tools include variables (anchor-points) in the memory-tape, multiple kinds of loops, that can either be hard-coded or depend on a memory cell, as well as functions that can take in pointer positions as arguments, and ternary operations (if/else), and finally, modules, which means you can create a package manager, and have libraries! You can too, import raw data from files.
Here is another explanation by the creator (hoping it doesn't break the rules of the wiki)
Commands
| Programming Concept | brainfuck syntax | PureBrainz Standard Syntax |
|---|---|---|
| Increment | +
|
+
|
| Decrement | -
|
-
|
| Output | .
|
.
|
| Input | ,
|
,
|
| Move to the left | <
|
<
|
| Move to the right | >
|
>
|
| While loop | [...]
|
[...]
|
| Repeat an action N times (hardcoded) | ... ... ... ... ...
|
5(...)
|
| Repeat an action N times (variable) | +++++[...-]
|
$counter_variable(...)
|
| Repeat an action i times (where i is the loop_index) | Keep count manually of the index | %(...)
|
| If cell != 0 | [... break out somehow]
|
? {...}
|
| If cell == 0 | temp0[-]+temp1[-]>[<...x>->]<<
|
! {...}
|
| Declare a Variable (set an Anchor) | - Need to implement gliders etc.
|
#variable_name
|
| Overwrite a Variable (reset an Anchor) | A true headache | #variable_name
|
| Go to an Anchor (Variable) | +[->+]- (extremely limited)
|
@variable_name
|
| Declare a function | Impossible | #fun(*arg1*arg2*arg3){...}
|
| Call a function | Impossible | :fun(*arg1*arg2*arg3)
|
| Use current pointer as argument | Impossible | *here
|
| Import a module | Impossible | |~ModuleName|
|
| Import raw data from a file | Impossible | "|~ModuleName|"
|
| Hardcode a string | ++...>++++...>...
|
"Hello World !"
|
| Empty a cell | [-]
|
[-] or $(-) (better practise)
|
| Addition (not destroying input) | Need to copy cells to not destroy the input values | @c $(-) $a(+) $b(+) or use ~Math Module
|
Modules
Multiple modules are also available to deal with different data types and problems, such as ~List, ~Math, ~Memory, ~Utils, ~Matrix, ~String, etc.
Example Programs
Print Function
This print function stops when it hits a -1, the conventional end of any data structure.
It is included in ~Util
#print(*s){
*s +[-.>+]-
}
Print (the memory values, not the char)
#print(*s){
*s +[-48(+).48(-)>+]-
}
Print, with a space in between (for another separator, replace 32 with the ord of the character you want)
#print(*s*tmp){
*tmp 32(+)
*s +[-.#i*tmp.@i>+]-
*tmp $(-)
}
Fibonacci sequence
0(+)>1(+)>
23(
#c<#b<#a
@c $a(+) $b(+)
>
)
Powers of 2
|~Math|
#base 2(+)
@12 #index +
@0 ><
11(#i @index+ @i > :pow(*base*index*here*11))
Make PureBrainz Better !
To get access to a python interpreter, or more info to create your own, please contact me ! Sinjoro (talk) 12:46, 14 April 2020 (UTC)