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.
Cyclic Clockwise Rotating Contraption
| Designed by | User:Raiseafloppafan7741 |
|---|---|
| Appeared in | 2025 |
| Memory system | Cell tape, accumulator-based, ring buffer-like |
| Computational class | Unknown |
| Reference implementation | Saccharin esoteric interpreter conglomerate |
| Influenced by | BF, Deadfish |
| File extension(s) | .ccrc |
The Cyclic Clockwise Rotating Contraption or CCRC is a "machine system thing" by User:Raiseafloppafan7741.
Memory
The program and memory are stored on two separate ring buffer-like structure that can expand and contract with the start and the end linked together. The rings rotate clockwise, and the acceleration of the rotation of the memory ring can be adjusted with instructions.
Each memory cell of both rings are unsigned and at least 32 bits in size.
Initially, the acceleration of both rings is 0c and the speed is 1c. If the speed of either of the rings becomes zero or less, the perpetual motion machine loses power and halts the program. The data ring starts out with one cell initialized to zero. The accumulator is set to zero.
The program is loaded up until the end or a carriage return or newline.
Instructions
| Command | Action |
|---|---|
I
|
Takes in a UTF-32 character as input and stores it in the accumulator. EOF is the maximum cell value. |
O
|
Outputs the accumulator as a UTF-32 character. |
P
|
Adds another cell at the end of the data ring with the value of the accumulator. |
Z
|
Stores the accumulator in the current data cell. |
e
|
Sets the accumulator to the value of the current data cell. |
[
|
Increases the acceleration by 1c. |
]
|
Decreases the acceleration by 1c. |
i, d, s
|
Same as their Deadfish originals; respectively increments, decrements, and squares the accumulator. |
X
|
Removes the last cell of the data ring. If the data ring is empty, does nothing. |
{
|
Decelerates data ring acceleration by 1. |
}
|
Accelerates data ring acceleration by 1. |
(
|
Jumps one cell past the matching ) if the current data cell is 0
|
)
|
Jumps one cell in front of the matching ( if the current data cell is not 0
|
All other characters are NOPs. This probably makes them useful for timing instructions with the rotation of the data ring.
Examples
Cat program
Stops at EOF.
IiZ(dO[)]]][
Loops forever.
IO
One Time Cat
Pretty funny how this one is longer than the never-ending cat program, isn't it?
IO]
Truth-machine
This one only accepts 1. Anything else is printed once. The line break is not included in the actual source, but it is here for readability.
IdddddddddddddddddddddddddddddddddddddddddddddddddZ(iiiiiiiiiiiiiiiiiiiiiiiiiiii iiiiiiiiiiiiiiiiiiiiiO])iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiZ(O)
"Hello, world!" program
This one is mostly the same as the one in deadfish, except o is switched with O and there is a ] at the end.
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiOiiiiiii iiiiiiiiiiiiiiiiiiiiiiOiiiiiiiOOiiiOdddddddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddOddddddddddddOiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiOddddddddOiiiOddddddOddddddddOdddddd dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddOZ(dZ)iiiiiiiiiiO]
Infinite loop
Any program that doesn't contain an unpaired ] loops infinitely.
This also means that the empty program is also a valid program and loops forever, as both rings are still spinning clockwise.
There is also the particle accelerator program [ which speeds up the ring until it reaches the maximum acceleration and speed.