# Inuck

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)