Inuck

From Esolang
Jump to navigation Jump to search

Inuck is a brainfuck derivative by VilgotanL which is quite infinite.

The name comes from combining infinite and brainfuck.

Definitions

Origin point / Origin cell - The point/cell where all dimensional components are zero. In 3D this would be (0, 0, 0).

Pointer - A pointer that points to a cell and has a direction towards a dimension. Initially it is located in the origin point, pointing towards dimension 0

Infinite-dimensional tape - A tape, but instead of one dimension, it is an infinite-dimensional space.

Each infinite-dimensional tape has a pointer, which can be moved forwards or backwards in the dimension the pointer is pointing in.
The pointer saves for each infinite-dimensional plane, such as when going into cell's tapes as you will se later.
Dimensions, cell indicies, and cell values are signed and can be negative.

Cell - Holds a signed integer (initially zero), but is actually an infinite-dimensional tape.

The integer is represented by how many nonzero values are inside that cell's infinite-dimensional tape.
This goes on to infinite depth, and since each infinite-dimensional tapes has a parent,
the initial tape also has a parent, which also has a parent, and so on.
Those parents's origin cells follow the integer representation rule, they are how many nonzero cells are in the origin cell's tape.

Instructions

+ Increment the current cell. (in current infinite-dimensional tape)
- Decrement the current cell. (in current infinite-dimensional tape)
> Move the pointer right/forward in the pointed-to/current dimension. (in current infinite-dimensional tape)
< Move the pointer left/backward in the pointed-to/current dimension. (in current infinite-dimensional tape)
^ Increment the dimension pointed to. (dimension 3 becomes dimension 4, etc) (in current infinite-dimensional tape)
v Decrement the dimension pointed to. (in current infinite-dimensional tape)
; Go into the current cell's infinite-dimensional tape. (the current infinite-dimensional tape is now that cell's tape)
: Go out to parent's infinite-dimensional tape.
[ While not zero
] End while
, Input ascii char
. Output ascii char

Any other instructions are comments, and are ignored.

Examples

Cat program

Basically the same as brainf**k.

Hello World

Basically the same as brainf**k.

An example program

Prints uppercase A.

;+: Now the current cell has integer 1 since tape inside cell has 1 nonzero values
>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+ Now the amount of nonzeroes in the current infinitedimensional tape is 65
: Now we are in the parent tape which now has integer 65 in current cell (origin cell)
. Print the current cell as ascii char

Computational class

Inuck is Turing complete since it is backwards-compatible with brainf**k.

Implementations

There are none yet, but it is definitely possible to make one. (if you even understand how the esolang works)