Sugueziume

From Esolang
Jump to navigation Jump to search

Sugueziume (named after a procedurally generated galaxy in the game No Man’s Sky) is a self-modifying esolang by User:BoundedBeans with extremely weird operators, code-stored data, and queue-based code. It was inspired by _ and is a sequel to Execoil.

Pronunciation

The name is of course procedurally generated gibberish by No Man’s Sky, however the author pronounces it “soo-gwez-ee-oom”

Storage

All storage in Sugueziume is strings. Strings are made out of capital letters and spaces. This includes the code.

Syntax

Each entry in the queue is separated by a comma. All characters other than commas, spaces, and capital letters are ignored. Do not put spaces after the commas unless you want them in the queue. The first entry in the code is the front of the queue.

Execution

Execution repeats the following steps until the queue is empty:

  1. Dequeue an element and put it in the current string.
  2. Execute one command in the current string.
  3. Move the command pointer right.
  4. Repeat steps 2 and 3 until the command pointer is outside of the current string.
  5. Set the command pointer to 0.

Instructions

(Space) - no operation
A - dequeue and discard
B - dequeue and enqueue
C - enqueue everything after the C, set the command pointer outside of the current string
D - dequeue two elements, enqueue them interleaved, with the characters alternating starting with the first dequeued. If they are different lengths, put spaces in the empty space
E - dequeue an element, enqueue it twice
F - dequeue u, v, w, x, y, z, enqueue v, w, x, y, z, u
G - input a string, enqueue it. Remove any invalid characters
H - dequeue a string, output it
I - dequeue a string, if it contains an X, jump to the character after previous I, if it doesn’t, do nothing. 
J - dequeue a string, if it contains an X, jump to the character after the next J, otherwise, do nothing
(Note for IJ, if the I is the first or the J is the last, do nothing)
K - dequeue x and y. Enqueue x with only the characters in the positions where y contains an even letter (BDFHJLNPRTVXZ)
L - dequeue x, y, z, enqueue y if x contains an odd number of characters, otherwise, enqueue z
M - dequeue x, y, z, enqueue them all interleaved in the order dequeued. This is potentially necessary since doing interleave(interleave(x, y), z) will interleave more like xzyz, and eventually x(space)y(space) runs out
N - dequeue x, then dequeue length(x) elements and interleave them all, enqueue the result
O - halt the program
P - dequeue x, enqueue the characters of x one by one
Q - like p, but put the characters in reverse
R - dequeue x, take the first and second characters, dequeue y, replace instances of the first character with the second, enqueue the result
STUVWXYZ - no operation

Computational class

Sugueziume is very likely Turing-complete, but this is hard to prove. Unbounded Minsky machine registers could be encoded with powers of 2 as the length of strings and interleaving strings with themselves, the only problem is whether the jumps in the language is a sufficient branch. One could attempt to simulate Bitwise Cyclic Tag, but you can’t enqueue just one part of the executing string, you must enqueue the entire thing after that point. Also, looping requires duplication, but then it would require getting to the back of the queue. One could use B a few times, but it’s difficult to dynamically calculate how many times to do that. Sugueziume’s computational class is thus currently unknown, but it does meet all criteria for Turing-completeness; it can loop by duplicating code, it can halt, it has conditional branches, it can access an arbitrary amount of memory, and it can have an arbitrary effect at an arbitrary point.

Examples

Hello world

H,HELLO WORLD

Prints in all caps and no punctuation.

Infinite loop

E,E

Infinite printing loop

EEH,EEH

Should print: EEHEEHEEHEEHEEH… But I can't get it to work in my implementation for some reason.

Truth-machine

X for true, anything else for false

GEIEEHI