+-)
+-) is a minimalistic esolang invented by User:None1 and inspired by brainfuck.
Memory
There is a tape with three cells, each cell contains an unbounded signed integer. There is also a pointer that wraps around.
Commands
In +-), there are three commands, both + and - matches ).
+
: Increment current cell unless the previous instruction executed is its matching ), then jump to the matching ) if the current cell is zero or the next character is ).-
: Decrement current cell unless the previous instruction executed is its matching ), then move the pointer to the right, then jump to the matching ) if the current cell is zero or the next character is ).)
: Jump to the matching + (or -) if current cell is nonzero and the previous character is ).
Computational class
It is Turing complete because it can be translated from 3 cell Brainfuck (without I/O) easily. Proof is below (BF stands for 3 cell Brainfuck in the proof for convenience):
+
+
in BF can simply be translated to +)
in BF.
> and <
We notice that -)
in +-) is the same as ->
in BF, so >
is equivalent to +->
, which is +)-)
in +-).
Because the pointer wraps around, now that we get the translation of >
, we can simply translate <
by repeating >
twice, that is:
+)-)+)-)
-
-
is equivalent to -><
. Because -)
in +-) is the same as ->
in BF, -
can be translated to -)+)-)+)-)
.
[ and ]
When not before a )
, +
in +-) is the same as +[
in BF, so [
, the same as -+[><
, can be translated to -)+)-)+)-)++)-)+)-)+)-)
.
]
can be translated to )
.
Note: ><
is a placeholder that does nothing to force the loop to be nonempty. If the ><
doesn't exist, empty loops ([]
) won't work, because it will be translated to -)+)-)+)-)+)
, which will do nothing because the last )
is right before a +
.
BF | +-) |
---|---|
+ |
+) |
- |
-)+)-)+)-) |
> |
+)-) |
< |
+)-)+)-) |
[ |
-)+)-)+)-)++)-)+)-)+)-) |
] |
) |
Examples
Calcuate 65
+)+)+)+)+)+)+)+)-)+)-)+)-)++)-)+)-)+)-)+)-)+)+)+)+)+)+)+)+)+)-)+)-)-)+)-)+)-))+)-)+)
Translated from brainfuck ++++++++[>++++++++<-]>+
, which sets the second cell to 65.