Rouedeux
Rouedoux (pronounced roo-doo) is an esoteric programming language created by User:Matthew in October 2019. The name Rouedeux is composed of the French words roue - wheel, and deux - two. This name is in reference to the two "wheels" that Rouedeux utilizes for all of its functions: the Alphabet Wheel and the Tape Wheel. Since it utilizes wheels, it is a turning tarpit.
Commands
Command | Description |
---|---|
R
|
Move the Alphabet Wheel right one |
T
|
Move the Tape Wheel right one |
E
|
Expands the tape by 1. The tape cannot have cells taken away |
W
|
Write the current letter in the Alphabet Wheel into the current Tape Wheel cell. |
P
|
Print the letter in the current Tape Wheel cell |
I
|
Input a letter to be placed in the current tape cell |
O
|
Beginning of the loop. Skips to end of loop if wheel is SPACE. |
Q
|
Jump back to the matching O if the Alphabet wheel isn't SPACE |
S
|
Sets the wheel to the letter of the current cell |
Language overview
These two structures, the Alphabet Wheel and the Tape Wheel, are wheels in the sense that, once they reach the supposed end, they loop back to their beginnings, thus being a wheel. The Alphabet Wheel consists of the 26 letters of the English alphabet capitalized as well as a space, which acts as the default of the wheel. The Alphabet Wheel is where all values are derived and thus all values in Rouedeux are letters, save for the space. The Tape Wheel consists of a typical tape data structure, however it loops back to its beginning and must be expanded in order to create more cells. The tape starts with one cell. All other characters besides the 9 mentioned above are not valid characters and will not be accepted by the interpreter. Since the language deals with letters rather than numbers, Rouedeux of course cannot print out numbers in any form besides word form and so is very limited in its capabilities in that respect. Despite not utilizing numbers, counting is possible by using the S operator to turn the wheel to the letter of the current cell, as is seen in the examples.
Computational class
Though not known, Rouedeux is likely turing-complete.
Examples
Hello world program
Together:
RRRRRRRRWPORQRRRRRWPRRRRRRRWPPRRRWPORQWPRRRRRRRRRRRRRRRRRRRRRRRWPORQRRRRRRRRRRRRRRRWPRRRWPORQRRRRRRRRRRRRWPORQRRRRWP
Broken down:
RRRRRRRRWP // move the wheel right 8 times to make it H. Copy H from the wheel to the current tape cell and print the current tape cell. ORQ // this resets the wheel by turning the wheel right until it reaches SPACE, thereby resetting the wheel RRRRRWP // moves the wheel 5 to E, writes, and prints RRRRRRRWPP // moves the wheel 7 times to get to L and writes and prints it twice RRRWP // three more times for O ORQWP // resets wheel and prints SPACE RRRRRRRRRRRRRRRRRRRRRRRWP // moves the wheel 23 times to get W ORQRRRRRRRRRRRRRRRWP // resets, moves 15 times for O RRRWP // three more times for R ORQRRRRRRRRRRRRWP // reset, 12 times for l ORQRRRRWP // resets, 4 times for D
That was a version of hello world that utilizes a single cell. However, HELLO WORLD can be printed with use of 11 cells and by using the S operator rather than ORQ to reset the wheel when going to the next cell.
Program that prints the alphabet
RWPORWPQ
Cat program
IP
If statement
This specific example tests if the input is V or not. If it is, A will be printed. Otherwise, SPACE will be printed. All together:
EEITTRRRRRRRRRRRRRRRRRRRRRRRRRRWTSRRRRRWOTSQTSRWP
Broken down:
EE // creates two more cells, as three will be used I // asks for input. If this is V, then A will be printed TTRRRRRRRRRRRRRRRRRRRRRRRRRRW // moves to the third cell and increments the Alphabet Wheel so that it is Z, then copies this to the third cell. This will test whether it is V or not. TSRRRRRW // this is where the input will actually be tested to be V or not. If it is V, then incrementing it 5 times will make the wheel SPACE. Otherwise, it will be some other number. OTSQ // if the input is not V, then the tape pointer will go through the cells until it returns to the second cell, at which it will rest because the second cell is at zero. If the input is V, then this section will be skipped. TSRWP // if the input is V, then this will go to the second cell and print A. Otherwise, if it is not V, then the pointer will be at the second cell, and move to the third cell, incrementing it to SPACE and printing SPACE.