this

From Esolang
Jump to navigation Jump to search
this
Paradigm(s) imperative
Designed by Alluseri
Appeared in 2021
Type system Queue-based
Memory system Cell-based
Dimensions one-dimensional
Computational class Unknown
Major implementations Thislang
Influenced by Celsee
File extension(s) .this
Note that this is typically lowercased, in the same manner as the this keyword.

this(alternatively, Fareen) is an esoteric programming language made by Alluseri, following the idea of Celsee about only using numbers.

Details

Current implementation allows up to 1024 memory cells for usage, with each memory cell being represented by a 32-bit integer.

Execution starts at index 0.

Commands

Command Description
0 No operation. Useful for visual padding.
1 Move to the next memory cell
2 Move to the previous memory cell
3 Add 1 to the current memory cell
4 Subtract 1 from the current memory cell
5NE Jump to execution index at E with a length of N
6NBEI If current memory cell equals to E with a length of N, jump to execution index at I with a length of B
7NBEI If current memory cell is not equal to E with a length of N, jump to execution index at I with a length of B
8 Print character with code equal to the current memory cell value to console
9 Write console input into the current memory cell

Examples

Hello, world

The Basic

33333333333333333333333333333333333333333333333333333333333333333333333381333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333381333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333813333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333333333333333813333333333333333333333333333333381333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333381333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333813333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333381

This is the most basic implementation of a Hello world program. Only 3 commands are used here: 1, 3, and 8. This principle of this approach is really simple: Add 1 to cells until they get to their desired values(which would be the charcodes of every character in the "Hello, world!" sequence, respectively).

The Effective

3333333333333333333333333333333333333333333333333333333333333333333333338333333333333333333333333333338333333388333844444444444444444444444444444444444444444444444444444444444444444448444444444444833333333333333333333333333333333333333333333333333333333333333333333333333333333333333384444444483338444444844444444844444444444444444444444444444444444444444444444444444444444444444448

This is a bit more space-effective implementation of a Hello world program. It uses 3 commands: 3, 4 and 8. This approach only utilizes one cell and takes advantage of the decrementation command.

The Advanced

37217208137311019813732108198137321083081373211141813722445281372232628137321197281373211183813732114948137331081058137331001178137233312981

This is an advanced implementation of a Hello world program, only using loops. It uses 4 commands: 1, 3, 7 and 8. This approach is not "effective", as it utilizes n memory cells(where n = length of character sequence) instead of just one. Cells reach their desired values using loops.

The Advanced & Effective

37217208373110188373210817883732111288472244388472232478373211956847321116683732114768473210886847321009684723331068

This is an advanced AND effective implementation of a Hello world program, only using loops as well. It uses 4 commands: 3, 4, 7 and 8. This approach utilizes one cell and takes advantage of the decrementation command in loops.

The Shortest

372172083731101883333333883338472244308472232398373211948844444444833384444448444444448472233878

This is the shortest and, thus, the most effective implementation of a Hello world program for this. It still only uses 4 commands, which is no difference from other Advanced implementations: 3, 4, 7, and 8. This approach utilizes one cell and combines the best of the best: the Effective and the Advanced & Effective implementations, making use of both loops and simple increments/decrements.

Try and make an implementation that is shorter than this one! Only one rule: Don't use the opcode 9 :)

A simple while loop

3721420

This code will add 1 to the cell 0 until it equals to 42.

Breakdown

  • 3 - Add 1 to cell 0
  • 721420 - Jump to index 0 if value of cell 0 is not equal to 42(loop)

Output Cell Layout

Cell 0: 42

Comparator

91925212414261202916120432518161204913352991352991333

Only supports positive numbers and 0!

Breakdown

Main section:

  • 9192 - Write values to cell 0 & 1 and return to cell 0
  • 5212 - Jump over the first decrement in case a value is already 0
  • 4142 - Decrement both cells
  • 612029 - If cell 0 == 0, jump to 29(return 0 == 0 section)
  • 1 - Move to cell 1
  • 612043 - If cell 1 == 0, jump to 43(return 1 == 0 section)
  • 2 - Move back to cell 0
  • 518 - Jump back to decrement

Return 0 == 0 section:

  • 1 - Move to cell 1
  • 612049 - If cell 1 == 0, jump to 49(return 0 == 1 section)
  • 1 - Move to cell 2
  • 33 - Push 2 to result
  • 5299 - Return

Return 1 == 0 section:

  • 1 - Move to cell 2
  • 3 - Push 1 to result
  • 5299 - Return

Return 0 == 1 section:

  • 1 - Move to cell 2
  • 333 - Push 3 to result

Output Cell Layout

Cell 0: Value 1 after processing
Cell 1: Value 2 after processing
Cell 2: Result(1 for v1 > v2, 2 for v1 < v2, 3 for v1 == v2)