Skip to main content

Reversible BitFuck (RBF) interpretor

Project description

rbf-lang

publish Code style: black

Reversible BitFuck (RBF) is a reversible Turing tarpit. It is based on a tape of bits and has 5 commands:

  • * Toggle the current bit
  • > Shift the tape head right
  • < Shift the tape head left
  • ( If the current bit is zero, jump past matching )
  • ) If the current bit is zero, jump to just after matching (

Here is an example program operating on 3 bits. Bit 0 is the source bit (x), bit 1 is the target bit (y) and bit 2 is the temporary bit (f). Here the value of x is being moved to y.

# x=?, y=0, f=0
(>>*<<)        # set f if x is set
>>(            # if f is set
    <(>*<)*    # set y
    <*(>>*<<)  # unset x
>>)
<(>*<)         # if y is set, unset f

we can run the above program on an example tape (100) with rbf cli:

rbf run -t 100 "(>>*<<)>>(<(>*<)*<*(>>*<<)>>)<(>*<)"  # outputs 010

Since RBF is reversible, we can easily create a move left program:

rbf reverse "(>>*<<)>>(<(>*<)*<*(>>*<<)>>)<(>*<)"  # outputs (>*<)>(<<(>>*<<)*>*(>*<)>)<<(>>*<<)

installation

RBF can be installed from source with

pip install .

or from pypi with

pip install rbf-lang

links

(as of yet uncategorised links to related topics. Will be sorted and expanded in the future)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rbf_lang-0.2.0.tar.gz (9.8 kB view hashes)

Uploaded Source

Built Distribution

rbf_lang-0.2.0-py2.py3-none-any.whl (8.8 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page