# 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)