Conveyer

From Esolang
Jump to navigation Jump to search
Conveyer
Designed by User:Abbin21
Appeared in 2020
Computational class Unknown
Major implementations Github Page
File extension(s) .coy

This language is created by User:Abbin21. The GitHub page with the interpreter can be found here: Github

Introduction

This language is based on Conveyor belts that move "items" from the beginning to the end. Items referring to letters and numbers.

There are four direction markers which tell the program what direction a band is moving.

> < ^ ᵥ 

There are also three kinds of borders to a band. The uppercase is used on the lower edge on horizontal bands, the undercase is used at the upper edge and the pipeline is used on both the left and right side on horizontal bands.

 ‾ _ |

Note that the ᵥ and ‾ are special unicode chars and will therefore be needed to be copied and pasted. The rest can be written from the keyboard.

How it works

The interpreter will dynamically change it's scanning depending on if the first band goes down or to the right, which means there are two different starting positions for the code.

If you wish to make your first band go right, the first > should be placed at row 2 char 1, build everything around that.

If you instead wish your band to go down, place the first ᵥ at row 1 char 2 and surround it with |.

When checking for a < or > the program will check the edge of the band, therefore, you need to replace the | with the desired direction marker.

Something worth noting is that you should NOT use any indentations, instead use a blank space.


Both the ᵥ and ^ should be placed in the corner of the band where they intersect, in the first example the first ᵥ will of course not be in a corner, But remember that the program starts on line 1, that's why the ᵥ is placed where it is.


In the second example, I marked 2 spots with !, these are spots which cannot contain a letter or number but must be a |. All horizontal bands will have one of these spots if it is connected to a vertical band. To make it easier to understand you could say that the vertical band always overlaps the horizontal ones, and therefore must have borders on both sides all the way to the top or bottom.

Finally, use a ~ as a marker to output all the chars you've put on the band. The ~ must have edges on both sides to work.


Math

You can also place +, -, / and * on the belt, in this case all digits preceding the operator will be calculated, and then it will go on to the next operator and calculate all digits preceding that one, however, it will not use any digits that is placed before the previous operator.

In this example it will output a97s. Since the a doesn't occur after the last digit in the first sequence of 3 chars it will be outputted first, If you want the letter to come after the calculation, you place it somewhere after the last digit. Then it will continue to perform 3*3, which of course if 9. Next it will sum up 2, 1, and 4 which is 7. All characters that might appear after the last operator on the belt will be handled as a character and not a digit.

 |ᵥ|      _______  
 |_|     >_|s|||~  
 |3|     |+|‾‾‾‾‾  
 |a|_____|_|       
 >||3*214|^|       
 ‾‾‾‾‾‾‾‾‾‾‾     

Example Code

Here are some example code that will output 666s at the "~" mark

 |_|              
 |ᵥ|      _______ 
 |_|     >_|s|||~ 
 |6|     |_|‾‾‾‾‾ 
 |_|_____|_|      
 >||6|6|||^|      
 ‾‾‾‾‾‾‾‾‾‾‾

Here it will output YS6W

 ____________
 >|||Y|S||!ᵥ|
 ‾‾‾‾‾‾‾‾‾|_|
 	  |_|
 	  |_|
    ______|6|
    ~|||W|!|<
    ‾‾‾‾‾‾‾‾‾

External resources