Diexponae

From Esolang
Jump to navigation Jump to search

Diexponae is the first esolang in its computational class. It was made by User:BoundedBeans. It's not combinational logic, finite state, push-down, linear bounded, or Turing-complete, but something completely different. It is a Quadratic Bounded Automata.

Syntax

Symbols can be any number, and so can the state. The first line of the program should have five numbers. The first is the number of symbols, the second is the state, and the last three are the coefficients of a quadratic expression. The input size is plugged in into the expression to make the tape size, then the input is put directly to the right of the center, except if it doesn't fit there, in which case it will start on the left end. Input is taken as a number. If the program halts, the final state is outputted along with the full contents of the tape.

Each line should have a further five numbers, the first being the state, the second being the symbol, the third being the new state, the fourth being the new symbol, and the fifth being 1 for left, 2 for right, or 3 for halt. If a particular state/symbol combination cannot be found, the symbol and state are set to 1 and the pointer moves left.

Examples

Detect if the input is all ones: Reaches the end of the string if true, outputs 2 if false

2 2 0 1 0
1 1 1 1 2
1 2 2 2 3
2 1 2 1 3
2 2 2 2 3

Detect if the input is 1 2 3 4 Outputs 5 if true, 6 if false

6 5 0 1 0
1 1 2 1 2
2 2 3 2 2
3 3 4 2 2
4 4 5 4 3
1 2 6 2 3
1 3 6 3 3
1 4 6 4 3
1 5 6 5 3
2 1 6 1 3
2 3 6 3 3
2 4 6 4 3
2 5 6 5 3
3 1 6 1 3
3 2 6 2 3
3 4 6 4 3
3 5 6 5 3
4 1 6 1 3
4 2 6 2 3
4 3 6 3 3
4 5 6 5 3