Turnip

From Esolang
Jump to navigation Jump to search

Turnip is a programming language for the 2D terminal-based Turing machine sim, Turnip. Turnip code defines the starting configuration of a machine, possible states and operations performed before switching states. Many operations can be done, inspired by Turing Kara.

Programming Turnip

A .turnip file starts with a grid representing the initial state of the sim. A grid is made up of only 0s 1s and .s (representing a blank cell). e.g.

......
.0101.
.1100.
......

That is followed by the start state and start coordinates in the form state(x, y). Coordinates on the grid start with (0,0) in the top left, which will be familiar if you have worked with screen coordinates. i.e.

 012 x
0...
1...
2...
y

Simple Example

The logic for each state comes last. To explain this we will work through a simple demo machine that simply goes right flipping every 0 to a 1 and every 1 to a 0, stopping when it sees a ..

flipper {0 1>flipper|1 0>flipper|. _}

flipper is the name of this state. Inside {} we have the responses to each possible output, 0, 1 or ., separated by |. Let's break down the first response 0 1>flipper. We start with the input 0, then the actions, 1 (to write a 1), and > (to shift right once). Then we end with flipper, the new state of the machine.

In the third response there are no actions and we end on the state _, which represents the HALT state.