User:ATProtogen/Sandbox

From Esolang
Jump to navigation Jump to search

OvenScript is an esolang heavily based on Boolfuck but also a bit inspired by the baker's map as well (which is its namesake since ovens are used by bakers). It was created by User:ATProtogen around mid-October 2024.

Commands

Command Meaning
X Invert the bit located at the pointer.
I Input.
R Move pointer right.
F Jump forwards just past the matching B if current cell holds 0.
B Jump back to the matching F.
L Move pointer left.
O Output.

These commands are case-sensitive and thus the lowercase version of those letters are not valid and will be treated as comments.

Arithmetic

For the rest of this page it will be talked about the addition of commands (a.k.a. things of the form Γ+Δ), just know that although it seems like nonsense in this particular case it will basically be like ℤ/7ℤ addition where X = 0, I = 1, R = 2, F = 3, B = 4, L = 5, and O = 6, or in a more visual way:

+ X I R F B L O
X X I R F B L O
I I R F B L O X
R R F B L O X I
F F B L O X I R
B B L O X I R F
L L O X I R F B
O O X I R F B L

Logic

This is where the chaotic map comes in, basically if you were to have a program consisting of the commands Φ1...Φn, then (just like the map) we should stretch it by two, in this case we do it by "typing" each one twice, making it Φ1...Φ2n, on this next step we get the latter half (Φn+1...Φ2n) and add it to the first half (Φ1...Φn) making it Φ1n+1...Φn2n, lastly we must apply the mod 7 function to each result since there are only 7 symbols.

Doing some simple math we can find out that in each stage the command Φk changes to Φ⌈k/2⌉⌈(n+k)/2⌉ (mod 7) for any positive integer k ≤ n.

Warmup

Let's start with, for example, the program:

XLRFBIO

In this step the first command "I" (input) is read, in this case we haven't defined one and so it is treated as a NOP.

Next up we do what the section above said, making it:

XXLLRRFFBBIIOO

And then:

FBBIIOO
XXLLRRF

Add the adjacent commands to get:

FBROFIR

And then finally we can move to the next command (which in this case is now "B"), we do this until the the last command is read and the program terminates.

Examples

Hello, World!

Cat program

Looping counter

(Non-empty) quine

Computational class

Notes