+!

From Esolang
Jump to navigation Jump to search
+!
Designed by User:Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Appeared in 2024
Memory system Self-modifying
Dimensions two-dimensional
Computational class Unknown
Reference implementation Unimplemented
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.

I/O Extensions
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.