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:RaiseAfloppaFan3925 |
|---|---|
| Appeared in | 2025 |
| Memory system | Cell tape, ring buffer-like |
| Computational class | Unknown |
| Reference implementation | Unimplemented |
| Influenced by | BF, Deadfish |
The Cyclic Clockwise Rotating Contraption or CCRC is a "machine system thing" by User:RaiseAfloppaFan3925.
Memory
In CCRC, the program and memory are stored on a ring buffer-like structure that can expand and contract with the start and the end linked together. The ring rotates clockwise, and the acceleration of the rotation of the memory ring can be adjusted with instructions.
Each memory cell is of unsigned and of unbounded size.
Initially, the acceleration of the ring is 0c and the speed is 1c. If the speed of either of the rings reaches zero, the perpetual motion machine loses power and halts the program.
Instructions
| Command | Action |
|---|---|
I
|
Takes in a UTF-32 character as input and stores it in the temporary register. EOF is zero. |
O
|
Outputs the temporary register as a UTF-32 character. |
[
|
Increases the acceleration by 1c. |
]
|
Decreases the acceleration by 1c. |
i, d, s
|
Same as their Deadfish originals, respectively increments, decrements, and squares the current memory cell |
X
|
Removes the end of the memory ring. |
{
|
Decelerates data ring acceleration by 1. |
}
|
Accelerates data ring acceleration by 1. |
(
|
Jumps one cell past the matching ) if current cell is 0
|
)
|
Jumps one cell in front of the matching ( if current cell is not 0
|
Examples
Cat program
Stops at EOF, requires EOF to be 0
I(O[)]]][
Example:
Input: ab
Iter 0
Code: I(O[)]]][
^
Speed: 1
Acceleration: 0
Data:
^
Speed: 1
Acceleration: 0
T: 0
Input: a
^
Output:
Iter 1
Code: I(O[)]]][
^
Speed: 1
Acceleration: 0
Data:
^
Speed: 1
Acceleration: 0
T: a
Input: a
^
Output:
Iter 2
Code: I(O[)]]][
^
Speed: 1
Acceleration: 0
Data:
^
Speed: 1
Acceleration: 0
T: a
Input: a
^
Output:
Iter 3
Code: I(O[)]]][
^
Speed: 1
Acceleration: 0
Data:
^
Speed: 1
Acceleration: 0
T: a
Input: a
^
Output: a
Iter 4
Code: I(O[)]]][
^
Speed: 2
Acceleration: 1
Data:
^
Speed: 1
Acceleration: 0
T: a
Input: a
^
Output: a
Iter 5
Code: I(O[)]]][
^
Speed: 2
Acceleration: 0
Data:
^
Speed: 1
Acceleration: 0
T: a
Input: a
^
Output: a
Iter 6
Code: I(O[)]]][
^
Speed: 1
Acceleration: -1
Data:
^
Speed: 1
Acceleration: 0
T: a
Input: a
^
Output: a
Iter 7
Code: I(O[)]]][
^
Speed: 1
Acceleration: 0
Data:
^
Speed: 1
Acceleration: 0
T: a
Input: a
^
Output: a
Iter 8
Code: I(O[)]]][
^
Speed: 1
Acceleration: 0
Data:
^
Speed: 1
Acceleration: 0
T: NUL (0)
Input: a
^
Output: a
Iter 9
Code: I(O[)]]][
^
Speed: 1
Acceleration: 0
Data:
^
Speed: 1
Acceleration: 0
T: NUL (0)
Input: a
^
Output: a
Iter 10
Code: I(O[)]]][
^
Speed: 1
Acceleration: 0
Data:
^
Speed: 1
Acceleration: 0
T: NUL (0)
Input: a
^
Output: a
Iter 11
Code: I(O[)]]][
^
Speed: 0
Acceleration: -1
Data:
^
Speed: 1
Acceleration: 0
T: NUL (0)
Input: a
^
Output: a
Halt
Infinite loop
Any program that doesn't contain an unbalanced ]
This is pretty weird lol because these are commands but don't really do anything
This also means that the empty program is also a valid program and loops forever, as the memory ring keeps spinning.
There is also the particle accelerator program [ which speeds up the ring infinitely.