CRATE
Jump to navigation
Jump to search
CRATE is an esolang themed around conveyor belts, machines, pistons, etc. Created by User:QuantumV
Any data is called a crate. Crates can hold any positive or negative integer. Crates that are above or below 10 use characters from unicode to stay one symbol in the grid. If an error converting one to a unicode symbol occurs, then it is just displayed as "?"
Example Programs
Truth Machine
1 vv 0?!=! > >^
Instructions
<,^,>,v - Change conveyor direction X - Data passes through, does not do anything 0-9 - Creates a crate. The direction arrow under it dictates the direction it will go in. # - Furnace. Destroy crates unconditionally. ? - Input. When a crate touches it change the crate's value to the input number. ! - Output. Prints as a number normally and prints as a character if an "a" character is to the right of it. ~ - Inverter. Makes a positive crate negative and a negative crate positive. - - Splitter. Splits to the left and the right relative to the direction of the crate (Going horizontally is splitting up and down, going vertically is splitting to the left and the right). p - Piston. When a crate touches it it pushes in the direction the crate was going. Pushed objects can also push other objects out of their way. There is no push limit and you can push anything. P - Sticky Piston. The same as a normal piston but can pull one object in front of it to itself. ) and ( - Portals. Synchronized by the character on the convex side of them. When a crate touches them (from any side), the crate gets teleported to another linked, unbroken portal linked to it. The direction of the crate coming out of a portal is always going away from the concave side. J - Jump pad. When a crate touches it the crate skips the instruction in front of it. j - Conditional jump pad. When a crate touches it the crate skips the instruction in front of it ONLY if the crate's value is positive. Following are arithmetic operations. They wait for an input crate to come in and then perform their operations. + - Merger. Adds crate 1 and crate 2. Deletes crate 2 * - Stamper. Multiplies crate 1 and 2. Deletes crate 2. / - Cutter. Performs floor division on crate 1 and crate 2. Crate 2's value gets set to crate 1 modulo crate 2 = - Comparator. If crate 1 and 2 are equal then let the last crate pass through and delete the other crate. If they are not equal delete both crates.
Interpreters
There is currently only one interpreter and it's made by the author of the esolang himself: https://github.com/QuantumV2/CRATE