Electric BitFunk
Electric BitFunk is a two-dimensional esoteric programming language created by User:Koen on 2012, september 9. It was inspired mainly by Electric Go, an "esoteric" variant of the game of go (see External resources below). Electric BitFunk operates on a tape of bits, using instructions borrowed from BitChanger. However, those instructions affect the playfield as well, making programming in Electric BitFunk a challenge somewhat similar to Half-Broken Car in Heavy Traffic.
Language overview
A program in Electric BitFunk consists of a two-dimensional grid, each cell in the grid being initially Blank, Positive, or Negative. In addition, one cell is the 'start' cell. The start cell cannot be Blank.
There is an instruction pointer, initially pointing to the start cell. The instruction pointer never points to Blank cells.
The execution of an Electric BitFunk program consists in a loop:
- Execute the current cell as a BitChanger instruction
- If the current cell is
Negative, move the bit pointer one space to the right, then flip the pointed bit - If the current cell is
Positive, move the bit pointer one space to the left
- If the current cell is
- Apply the current cell's electric field to neighbouring cells
- In every cardinal direction, move the nearest non-
Blankcell one space nearer if its polarity is opposite to that of the current cell, one space away otherwise- When moving a cell:
- If the target cell is
Blank, switch the two cells (that is, the target cell becomes eitherPositiveorNegative, and the moved cell becomesBlank - If the target cell is non-
Blank, the "move" operation is a no-op; however the "moved" cell is considered as having been moved nonetheless
- If the target cell is
- When moving a cell:
- In every cardinal direction, move the nearest non-
- Move the instruction pointer to a new cell
- Up to four cells have been moved when applying the current cell's electric field
- Select the nearest of those 0-to-4 cells
- In case of a tie, ignore the tying cells for the purpose of computing the nearest cell
- Move the instruction pointer to the selected cell, then continue to the next iteration of the loop
- If no cell has been selected, either because no cell was moved or because of ties between the moved cell, execution halts.
External resources
A brief description of Electric Go, the game which inspired Electric BitFunk