Switchy
Jump to navigation
Jump to search
Switchy is an esoteric programming language created by User:Poolala, which changes an instruction's operation every program cycle.
The program stack is also reversed every cycle.
There is a binary variable called flip, which starts out at 0, and flips its value every cycle.
Instructions
Instruction | Description |
---|---|
(foo) |
Creates a label called foo (doesn't trigger a cycle) |
[foo] |
Jumps to the label foo if the top stack element is nonzero if flip is 0, else jump if zero (doesn't trigger a cycle) |
# |
Adds the top two stack elements, pops them, and pushes the sum if flip is 0, else subtract if flip is 1 |
* | Pushes a 1 onto the stack if flip is 0, else pop a value from the stack |
' | Inputs a character and pushes it onto the stack if flip is 0, else output the top stack value |
Finite State Automaton
Switchy is not Turing complete and acts as a Finite-state automaton.
State | Flip | State After * | State After ' | Description |
---|---|---|---|---|
Empty | 0 | A | B | Stack is empty(This is also the starting point) |
A | 1 | Empty | Empty(Output 1) | Stack contains a single 1 |
B | 1 | Empty | Empty(Output the input from ') | Stack contains a single character |
Note: because none of the states result in a stack of size two or more, a # can not be used.
Implementation
An implementation in Ruby by User:OriginalOldMan can be found on Talk:Switchy.