Dionysus
- The title of this article is also called Bacchus.
Dionysus is an esoteric programming language designed by PSTF. It is based on random technique.
About the name
Dionysus (Greek: Διόνυσος) was the god of wine in ancient Greek mythology, also known as Bacchus. He is not only the god of wine, but also a symbol of joy, revelry and the secrets of nature. Dionysus was the son of Zeus and the mortal woman Semele, whose birth and upbringing is legendary.
Dionysus is the patron saint of wine, who teaches people how to grow grapes and make wine. His admirers, especially female devotees, would dance and sing wildly in a state of extreme excitement, and devotees in this state were called Bacchantes. Their actions are often accompanied by violence and chaos, embodying the frenzied side of Dionysian worship.
Dionysus holds all the secrets of the natural world, and his attendants often roam around in vehicles pulled by wild beasts, bringing music, singing and dancing and revelry wherever they go. His image is often associated with symbols such as a vine, a wine glass, and a mink, all of which symbolize his divine qualities.
The story of Dionysus contains themes of rebirth and immortality. His predecessor was Zeus, the god of the sky, and Zagreus, the son of Persephone, who was killed and devoured by the god Titan. Zeus saved his mind and placed it in Semele's belly, reincarnating him as Dionysus.
How does this work?
This is inspired from Braindrunk, except you write the craziness(rate and increment) at the start of program.
If you write 0% 0, this is totally same as Brainfuck.
These are commands that didn't work in Brainfuck.
Instruction | What it does |
---|---|
* |
Doubles the pointed cell's value. |
` |
Halves the pointed cell's value. |
~ |
Bitwise NOTs the pointed cell's value. |
^ |
Squares the pointed cell's value. |
@ |
Break out of loop. |
! |
Loop continue. |
? |
Set the pointed cell to a random 10-digit value. |
#0000000000 - #9999999999 |
Sets the pointed cell to ten digits, written in decimal. |
( |
If the current cell data is 0, jump to the corresponding closing parenthese. |
) |
Do nothing, just end of if-statement. |
{ |
Jump to the corresponding closing brace immediately. |
} |
Do nothing, just end of comment block. |
+0000000000 - +9999999999 |
Add a value to the pointed cell. |
-0000000000 - -9999999999 |
Subtract a value from the pointed cell. |
*0000000000 - *9999999999 |
Multiply. |
`0000000001 - `9999999999 |
Integer division. |
^0000000000 - ^9999999999 |
Exponentiate. |
%0000000001 - %9999999999 |
Modulo. |
&0000000000 - &9999999999 |
Bitwise AND. |
|0000000000 - |9999999999 |
Bitwise OR. |
X0000000000 - X9999999999 |
Bitwise XOR. |
O |
Print the pointed cell's value as eight hexadecimal digits. |
I |
Input eight hexadecimal digits into the pointed cell's value. |
Examples
Hello, world!
0% 0 ++++++++[>++++++++<-]>++++++++.>++++++++[>++++++++++++<-]>+++++.+++++++..+++.>++++++++[>+++++<-]>++++.------------.<<<<+++++++++++++++.>>.+++.------.--------.>>+.
Crazier
0.1% 1 ++++++++[>++++++++<-]>++++++++.>++++++++[>++++++++++++<-]>+++++.+++++++..+++.>++++++++[>+++++<-]>++++.------------.<<<<+++++++++++++++.>>.+++.------.--------.>>+.
Output:
Hdkkn, Wnqkc!
EVEN CRAZIER!!!!
20% 1 ++++++++[>++++++++<-]>++++++++.>++++++++[>++++++++++++<-]>+++++.+++++++..+++.>++++++++[>+++++<-]>++++.------------.<<<<+++++++++++++++.>>.+++.------.--------.>>+.
Output:
NWX[_N¡Z\UOP>
?~I8:
WHAT THE HECK!
Implementations
Currently no, but it will be implemented in future.