Dionysus

From Esolang
Jump to navigation Jump to search
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.

Categories and References