Randwork

Randwork is a nondeterministic programming language created by User:Marcsances. The program's finality is to execute a random instruction from one of the instruction set.

There are four versions of Randwork: Randwork, RandworkH, Randwork+, Randwork#. Randwork is the "normal" implementation of the language, Randwork+ adds more instructions and then is more controlable, and RandworkH displays Hello World... if you are lucky.

Variables
Randwork and Randwork+ work with variables.

In Randwork there are 2 variables, and their types are bytes.

In Randwork+ and Randwork# there are 4 byte variables.

RandworkH has no variables.

Statements
Randwork and RandworkH have only one instruction allowed in his applications:

Do anything - Execute a random command from the instruction set

Everything that it's not that statement is interpreted as a comment.

Randwork+ and Randwork#
Randwork+ is a more constructive version of Randwork. These are the instructions allowed:

Do anything - Execute a random command from the instruction set Do whatever you want - Execute random commands from the instruction set for unknown times (each time, a command is run, until the application decides to stop) If something is empty {instruction} - If a randomly chosen variable is empty, executes the instruction If something isn't empty {instruction} - If a randomly chosen variable isn't empty, executes the instruction If you want {instruction} - Executes a statement in a 50% possibility Jump to a line - Jumps to a randomly chosen line Jump to a line up - Jumps to a randomly chosen line above the statement Jump to a line down - Jumps to a randomly chosen line below the statement Go out if you want - In a 50% of probability, exits the application

Instruction sets
When Randwork has to do anything or whatever he wants, he executes a command from the instruction sets.

Instruction sets are the things Randwork can do. Each version has different instruction sets:

Randwork
Standard Randwork will run (with Do anything) one of these instructions:

Nop

Write the ASCII equivalence of a random byte

Beep

Set value of byte 1 to a random value

Set value of byte 2 to a random value

Clear byte 1

Clear byte 2

Sum byte 1 with byte 2 and store result in byte 1. If result exceeds 255, compute the modulo so it forms a valid byte.

Write the ASCII equivalence of byte 1

Write the ASCII equivalence of byte 2

Randwork+
Randwork+ has the same instructions as Randwork, but it adds the following:

Set value of byte 3 to a random value

Set value of byte 4 to a random value

Clear byte 3

Clear byte 4

Write the ASCII equivalence of byte 3

Write the ASCII equivalence of byte 4

Display the Hello World message

Ask the user to input a byte and stores it to a random variable

Randwork#
Working on the notes of giargiano in the talk page (thanks) Randwork# removes the non sense of making Randwork+ displaying the Hello World message too much.

The instruction set is identical to Randwork+ except "Display the Hello World message" which is replaced by:

Print bytes 1 to 4

RandworkH
It only has two instructions:

Display the Hello World message

Nop

Hello World
Although RandworkH has been designed specifically to show Hello World in a more probable condition than Randwork and Randwork+, I can't still guarantee that this example will show Hello World, maybe you're unlucky.

Do anything Do anything Do anything Do anything Do anything Do anything Do anything Do anything

Example
Don't know what will happen if you run this example. USE IT BY YOUR OWN RISK.

(Language: Randwork)

Do anything Do anything Do anything Do anything Do anything Do anything Do anything Do anything

Example 2
Don't know what will happen if you run this example. USE IT BY YOUR OWN RISK.

(Language: Randwork+)

Do whatever you want Go out if you want Do anything If you want Jump to a line up  Do anything If something isn't empty Jump to a line up

99 bottles of beer
It is really easy to print a program that (some millennium) will print the 99 bottles of beer text. (Randwork+)

Do anything Jump to a line up

Yes, that is an infinite loop. But you know what is the infinite monkey theorem, right? Think of Randwork+ like a monkey. Storing random values, suming them, displaying them... in a infinite lapse of time, 99 bottles of beer full text will appear on your screen. But sometimes I really want to add a "Format the whole hard disk" instruction between the instructions in Randwork+ instruction set, if there's no action, you don't enjoy the language.

External resources

 * Perl interpreter by user:giargiano
 * R# fork by user:marcsances
 * ^Python interpreter by user:marcsances