Track

From Esolang
Jump to navigation Jump to search

Track is a two-dimensional esoteric programming language made by User:Wh1teWolf. It has a two-dimensional instruction area of 30x? instruction cells, and a one-dimensional memory array,

Commands

Character What it does
> Set the “walking” direction to right.
< Set the “walking” direction to left.
^ Set the “walking” direction to up.
V Set the “walking” direction to down.
@ Set the “walking” direction depending on the number under the pointer: 1 = right, 2 = left, 3 = down, 4 = up, otherwise = right.
+ Increment the cell under the pointer by one.
- Decrement the cell under the pointer by one.
. Output the ASCII character associated with the value in the cell under the pointer.
: Output the numeric stored in the cell under the pointer.
, Input an ASCII character and store it in the cell under the pointer.
; Input a number and store it in the cell under the pointer.
09 Move the memory pointer to the cell n.

Examples

Infinite loop

V<
>^

This program shows how the “walking” direction stuff works. The first instruction is V, making the program move down to the next line where there is a > instruction, this changes the “walking” direction to right. We go right one step where there is a ^ and are pointed up to the < instruction, this makes us go left to the starting point and so on...

Cat program

,.

Counting from 1 to 10 (looping counter)

V               V       <     
>1++++++++++++++>1-0+:1@^     

This example could also be written like this (which is the best way of doing it):

++++++++++++++>0-1+:0@V       
              ^       <       

99 bottles of beer

3++++++++++++++++++++++++++++ 
+++++++++++++++++++++++++++++ 
+++++++++++++++++++++++++++++ 
+++++++++++++++++0            
+++++++++++++++++++++++++++++ 
+++++++++++++++++++++++++++++ 
+++++++++++++++++++++++++++++ 
++++++++++++                  
                              
2++++++++++++++++++++++++++++ 
++++0                         

V                           0<
>:2.1++++++++++++++++++++++++ 
+++++++++++++++++++++++++++++ 
+++++++++++++.+++++++++++++.+ 
++++..--------.-------.++++++ 
++++++++.2.1----.---------.2. 
1----.+++..+++++++++++++.2.1- 
--.-.2.1++++++.------------.- 
--.2.1++++++++++++++++++.---- 
------------------.++++++++++ 
+..2++++++++++++.------------ 
.0:2.1----------.++++++++++++ 
+.+++++..--------.-------.+++ 
+++++++++++.2.1----.--------- 
.2.1----.+++..+++++++++++++.2 
++++++++++++++.-------------- 
4++++++++++.1++.------------- 
------.++++++++++.------.2.1+ 
+++++++++.-.---------.2.1-.++ 
+++++++++.++++++++.---------. 
2.1++.---------------.+++++++ 
+++++++++++..2.1----------.++ 
+++++++++.2.1---------------- 
---.+++++++++++++++++.---.+++ 
+++.-------.----------.2+++++ 
+++++++.------------.0-:2.1-- 
.+++++++++++++.+++++..------- 
-.-------.++++++++++++++.2.1- 
---.---------.2.1----.+++..++ 
+++++++++++.2.1---.-.2.1+++++ 
+.------------.---.2.1+++++++ 
+++++++++++.----------------- 
-----.+++++++++++..2+++++++++ 
+++++.--------------4..------ 
----1------------------------ 
----------------------------- 
-----------------------       
V>V<                          
>3-@                         ^

Interpreter

  • Common Lisp implementation of the Track programming language.