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.
| Ratio | Modifier | Command. |
|---|---|---|
| Ah (0d) | N/A | Moves the pointer to the parent node of this node. At the root node, halts the program. |
| 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 last available space |
| 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. |