We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
Reuts
- This is still a work in progress. It may be changed in the future.
Reuts (pronounced roots) is a parallel-computing tree-based esolang based around child nodes and Shasavic chord notation.
Each "instruction" is a Shasavic chord composed of multiple notes. Each note is a different command, and as such the program can run multiple commands at once. There is also a pointer that can move around the tree.
A Quick Explanation of What Little Shasavic Music Theory You Need To Know To Understand This Esolang
In music, the octave is a literal doubling of the hertz ranges. The other notes of the Western keyboard are made of different multiples of 3 and 5. For example, a major third from 261.6hz (c) is 5/4 times that, or 327hz (E). In Shasavic music theory each multiple is assigned a dimension.
- One singular note is 0d.
- Two notes an octave apart is 1d, but because notes octaves apart are basically the same note, this is not used in Reuts.
- Two notes that are a perfect fifth apart (one is 3/2 times the other) is 2d. The division by 2 simply keeps it in the same octave. (Remember that notes octaves apart are the same note!)
- Two notes that are a major third apart (one is 5/4 times the other) is 3d.
Shasavic theory, however, goes further than 3d. It also includes 7/4 (4d) and 11/8 (5d). These intervals may feel dissonant to some, but to others it is perfectly normal.
Commands
Each Shasavic ratio can act on a note or be the main component. The final (highest) ratio is the actual command. For example, in the note "Chylipuzi", which goes up in 2d, up in 3d, down in 4d and up in 5d, the resulting command is the command for 5d-up with 2d-up, 3d-up and 4d-down modifiers. (For those who are curious: this would jump to instruction-chord 16).
You can only add one of each ratio, and only up to 5d. They will always be written and carried out in order from lowest dimension to highest.
Functionally, the modifiers add to a value that determines which child object to apply the command to. This value will be labeled "R" in the command table.
The 5d commands have no root form since they will never be on their own by their nature: -Zi needs a number, and -(y)K can be replaced as "Ah, Ah".
Within a chord, the order of progression is usually going from highest to lowest. For example, "Ahfu" will first add a child node, and then go down/halt.
| Ratio | Modifier | Command. |
|---|---|---|
| Ah (0d) | N/A | Moves the pointer to the parent node of this node. At the root node, halts the program. (The pointer starts at the root node always.) |
| Chy (2d-up) | R+1 | Adds a child node to space [0], pushing all others one space ahead. |
| Fu (2d-down) | R+2 | Adds a child node to the first available space. The pointer does not move to this node. |
| Ly/-Li (3d-up) | R+3 | Deletes child node [R]. If this creates a gap, all larger child nodes are shoved down one to fill it. |
| Su/-S (3d-down) | R+4 | Moves to child node [R]. |
| My/-Mi (4d-up) | R+5 | Ignores the other notes of the instruction-chord if there exists a child node [R]. |
| Pu/-P (4d-down) | R^2 | Ignores the other notes of the instruction-chord unless there exists a child node [R]. |
| -Zi (5d-up) | N/A | Jumps to instruction-chord [R]. |
| -(y)K (5d-down) | N/A | Halts the program. |
Input of number I is handled by starting off with a structure of the root node and I amount of child nodes. Input of a list of numbers is handled by having the root node, then I[1] children, the first one of those having I[2] children, and so on. Output is handled by outputting the amount of nodes in each row except for the root row as numbers. Alphabetic characters are usually represented by numbers up to 26.
Examples
Cat
Ah
Increase by 1
Ahfu