Mice in a maze
Mice in a maze is another brainfuck derivative. It was invented in 2015 by an anonymous user. Mice in a maze was inspired by items called Cellular Automata, especially Conway's Game of Life and Langton's Ant.
Syntax
In Mice in a maze, there is a data tape and pointer as in brainfuck. The user defines a maze and places commands around the maze. The user then puts a mouse - or mice - in the maze. As a mouse runs over a command, the command is executed.
Defining a maze
There are two types of wall that can be used to define a maze. W defines a solid wall. K defines a conditional wall, where the wall does not exist if the cell under the pointer is zero, and exists otherwise. These two symbols define a maze such as the one below:
WWWWWWWWW W W W WWW W WWW W W W W WWWWW W W W WWWWWWWWW
The empty spaces are the passageways that the mice can run along.
Mice
Mice are defined by placing numbers in the maze. 1 is the first mouse, 2 is the second, etc. Each mouse begins pointing upwards. The program progresses in timesteps called generations. Every generation the mouse can either:
- Move one space forward, if the space ahead is empty.
- Rotate 90 degrees clockwise, if the space ahead contains an existing wall.
- Disappear, if the space that it is on contains the instruction E.
The program ends when all of the mice disappear.
Instructions
Instructions are placed inside the maze. An instruction is executed when a mouse is on top of it. If multiple mice are on top of instructions during a generation, the lowest numbered mouse's instruction is executed first, then the next lowest numbered, etc. Here is a list of the instructions:
- > move pointer right
- < move pointer left
- + increment the value of the current cell
- - decrement the value of the current cell
- . output the character in the current cell
- , input a character into the current cell
- E destroy mouse
- C forces mouse to rotate clockwise as next move
- A forces mouse to rotate anticlockwise as next move
The first six instructions are the same as in brainfuck. Loops can be implemented by creating a circle in the maze and using conditional walls.
Example maze
This maze doesn't do anything, it's just an example.
WWWWWWWWW W1 CWC EW WWW W WWW WA CWC AW W WWWWW W WA 2 AW WWWWWWWWW
Example programs
If anybody comes up with any example programs, feel free to post them here.
Hello World!
This Hello World! program from TomPN.
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW W>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.EW WWWWWWWWWWWWKWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW W1++++++++++ >+++++++>++++ W WWWWWWWWWWWW WWWWWWWWWWWWW+W W -<<<+++>+++++ W WWWWWWWWWWWWWWWWW
Infinite Loop
Making use of the feature that mice.py automatically surround the source code with W so the mice cannot escape, infinite loop can be done in 2 bytes. (Note the leading whitespace)
1
Implementation
- Mice in a maze/mice.py An implementation in python by User:Koen.
See also
- HUNTER, which also involves mice in a maze