+!
Designed by | User:Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
---|---|
Appeared in | 2024 |
Memory system | Self-modifying |
Dimensions | two-dimensional |
Computational class | Unknown |
Reference implementation | Unimplemented |
Influenced by | BackFlip, Befunge |
File extension(s) | .pb |
+! (pronounced "Plus-bang") is a two-dimensional esoteric programming language by User:Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff in 2024.
Control flow
When an IP is created, it is given an ID, where the smaller IDs run first. When an IP hits the edge, it is destroyed. The program halts when all of the IPs are deleted.
The instruction pointer starts out at the top left corner with an ID of 0, facing right.
Commands
Instruction | Name | Description |
---|---|---|
+ |
Expand | First, copy the program in a square shape. Then, split the current IP into two, with the clone turning 90 degrees. Finally turn this instruction into an ! . The newly generated IP does not run any code this cycle.
|
! |
Signal | Make every IP that is on the same X or Y coordinates face the same direction the current IP is facing. Then turn 90 degrees and replace this instruction with a + .
|
# |
Comment | Any line that starts with a # is removed, allowing for comments to exist. If the program encounters a # , nothing happens.
|
All instructions not mentioned above are no-ops.
Input and output
+! doesn't have I/O functionality, but extensions can be used to introduce I/O.
Instruction | Name | Description |
---|---|---|
0 ~9 |
Print Digit | Print the corresponding digit. |
N |
Newline | Print a newline. |
? |
Interpret | Input a character, then run it. |
% |
Input | Input an arrow/mirror and point in that direction. |
C |
Clear | Clear all the output. (An implementation is not required to introduce this command) |
Examples of commands
The + command
Let's say the program is
+! !+
where the IP is at the bold, the program becomes
!!+! !+!+ +!+! !+!+
The ! command
Let's say the program is this (V) where the first IP is facing right and the other is facing down
! !+ ++ !
The first IP points down and the other points right.