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-
Blank
cell 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 eitherPositive
orNegative
, 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