CTFuck
CTFuck is a turing complete esolang created by User:Pro465, based on a tag system, with I/O support. this is kinda simliar to Boolfuck, in that it operates on bits and has I/O support. however, CTFuck is based on a tag system.
The reference implementation along with examples are here.
Commands
supported commands are:
| command | operation | 
|---|---|
| $ | pop 1 bit off the front of queue | 
| 0 | push 0to the back of queue | 
| 1 | push 1to the back of queue | 
| : | duplicate bit at the front of queue, and push it to the back of queue | 
| . | output the bit at the front of the queue | 
| , | get the next bit of input and push it to the back of the queue | 
| [..|..] | see note | 
any character other than these are ignored.
Turing Completeness
CTFuck is turing complete. To prove this, we can take a similar path to how BCT was proved turing complete: we can translate each CT (we are using the same language the BCT page used) command to an equivalent sequence of commands in CTF.
| CT command | CTF Equivalent | 
|---|---|
| <program end> | [1|1] | 
| 0 | 0 | 
| 1 | 1 | 
| ; | \n$[|<current line number + 1>] | 
...or we can just compile boolfuck to it
Sample Programs
Cat
0 $,.[1|1]
Truth Machine
,[|3]
    $1010.$...$..$..[|2]
    $010....$..$..
Hello world
0...$1.$0..$1.$0. $1.$0.$1.$0..$1..$0. ..$1..$0.$1..$0. ..$1..$0.$1..$0. $1....$0.$1..$0. ..$1..$0.$1.$0.. .....$1.$0.. $1...$0.$1...$0. $1....$0.$1..$0. .$1.$0..$1...$0. ..$1..$0.$1..$0. ..$1.$0..$1..$0. $1.$0....$1.$0.. .$1.$0.$1.$0....
Notes
IO endianness
Like BoolFuck, IO in CTF is little-endian.
The [if_num|else_num] command
it takes two numbers in base-10 format, separated by `|` (pipe symbol).
when it is executed, it checks the bit at the top of the queue;
if it is 1 it calls goto(if_num), otherwise it calls goto(else_num).
goto(n) is defined as follows:
   if n == 0 || n == "":
       pass
   else:
       jump to the first command in line n
Halting
execution is halted when either:
- the interpreter reaches the end of the program source.
- the interpreter tries to execute one of the following commands and the queue is empty:
- [..|..]
- $
- .
See also
Other languages operating on bits (implemented only):