Minebit

From Esolang
Jump to: navigation, search

Minebit is a programming language invented by User:TehZ. It is designed in a way easily implementable in minecraft using redstone and linear access memory.

Language

There are only two commands:

0 - if current bit is 0, skip next command
1 - flip current bit

It uses linear access memory, so each step, a new bit is made available. That means that it needs finite memory. It can, however, also mean that it can have unbounded program area, if the program is fed to the machine. In other words, it has two bit-tapes; the program tape and the data tape.

Implementation

It can be implemented using a few logic gates. Note:

=V- means or
=^- means and
=o- means xor
-L- means linear access memory
-N- means not
+ means cross

NOTE: This implementation is not timed. If you implement it (like I have done) you need careful timing.

.------------------.
*-L---:=V-.----:=o-*
      |    |   |
.-L-.-*----:=^-*
*---*

The linear access memory can be implemented by an array of repeaters.

Computation class

The language is not Turing complete because it has limited memory, and even if it was modified to have infinite memory, it is still equivalent to a read-only right-moving Turing machine, which is equivalent to a finite state machine.