Byter

From Esolang
Jump to navigation Jump to search

Byter is a language for training brains. Byter consists of 11 instructions that are intended to move the instruction pointer on a 16 × 16 matrix and for outputting the characters which are associated with each cell. On an output operation the ascii character associated with the specific cell is printed out. The correct ascii value is determined by the position of the cell: It starts with zero in the top left corner of the matrix, and is increased from left to right. So the first two lines for example of the playfield have the following values associated with the cells:

0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ...

Here is the playfield with all it's associated ASCII characters ('.' when not printable or codepage dependent):

................
................
 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijkmlno
pqrstuvwxyz{|}~.
................
................
................
................
................
................
................
................

The trick is now to direct the instruction pointer to the wanted cell and print it out.

The main difficulty of the language is that the field is limited. This could make it impossible to find the same character twice, such as in the word "papa", so a cell containing the operators >, <, A, V is written an operator pointing in the opposite direction when executed. This allows write algorithms with branching. But it is also is a hidden problem, so you need to be carefully. Byter has the following operators:

  • 0 - move to the previous cell
  • < - move the pointer left and fill the cell with operator >
  • > - move the pointer to the right and fill the cell with operator <
  • V - move the pointer down and fill the cell with operator A
  • A - move the pointer up and fill the cell with operator V
  • { - display the symbol of the cell and move left
  • } - display the symbol of the cell and move right
  • + - display the symbol of the cell and move upwards
  • - - display the symbol of the cell and move down
  • $ - display the symbol of the cell and move to the cell 0:0
  • # - exit

Hello, world!

This program prints the words Hello, world!:

>>>>>>>>>V00V00V
0#00A00V<V00V0VV
-+>>A00VV<<0$0V>
V0AA<00V>V<<<<V0
>>V0V<<<-<000V<0
0AV0VV<<<0000V<0
0A>V+}>>>>>>}<V-
0A{>>>>-000000>V
00A0000>>>>>>>>A
V0A<<<<<<<<<<<<>
V000000000000000
V000000000000000
V000000000000000
V000000000000000
V000000000000000
>>>>>>>>>>>>V000

External resources