bifuck

From Esolang
Jump to navigation Jump to search
bifuck
Paradigm(s) imperative
Designed by User:SpaceByte
Appeared in 2022
Memory system Cell-based
Dimensions one-dimensional
Computational class Turing complete
Major implementations [1]
Influenced by brainfuck
File extension(s) .biff (Previously .bi)

Bifuck is a brainfuck inspired esolang created by User:SpaceByte on 8/3/22. Bifuck is exactly the same as brainfuck, proving its turing completeness, however, code is written more tediously, using only two characters, however, programs will have much greater length.

Language Overview

Bifuck has the exact same capabilities as brainfuck, and is built off of brainfork, the creators first experience with esolang development, which was a brainfuck interpreter written in C#. The interpreter for bifuck is the same as brainfork, except it uses switch cases for better preformance, and it converts bifuck code, to brainfuck before executing. Because it converts before executing, the interpreter on its own is a brainfuck interpreter, it just converts bifuck to brainfuck, proving the convertibility between languages is 100% possible and very easy to create. Bifuck operates using two characters, similarly to how two characters are used in B, however B has commands that involve the "stack" item count, bifuck does not. In bifuck, like B, one character (.), is a separator, and the other character (+), is used in between the seperator, to identify by length of each command, each length of a string in-between the Seperator, being a command.

Conversion Commands

The following are the lengths of commands (with exact examples) of what bifuck commands convert to which brainfuck commands.

Length 1 (bifuck: .+.) converts to (brainfuck: >)
Length 2 (bifuck: .++.) converts to (brainfuck: <)
Length 3 (bifuck: .+++.) converts to (brainfuck: +)
Length 4 (bifuck: .++++.) converts to (brainfuck: -)
Length 5 (bifuck: .+++++.) converts to (brainfuck: .)
Length 6 (bifuck: .++++++.) converts to (brainfuck: ,)
Length 7 (bifuck: .+++++++.) converts to (brainfuck: [)
Length 8 (bifuck: .++++++++.) converts to (brainfuck: ])