# User:Taneb/Binary Variety Pack

Binary Variety Pack is a hodge-podge of various binary languages. Which is executed depends on the first 2 bits (which are otherwise ignored).

Data is inputted before execution, and the entire tape is spewed on halting.

## Variations

### 00: Bitwise Cyclic Tag

The program is executed as Bitwise Cyclic Tag would be, with the data string displayed somehow at every tick:

 Command Operation 0 Deletes the leftmost databit 1 Goes to the next command (say x). If the leftmost databit is 1, x is copied on to the right end of the datastring

### 01: brainfuck-esque (gasp! blasphemy!)

Everyone probably now knows how brainfuck works, here're the commands for this version.

 Command Operation 00 Moves the pointer left, and flips the bit at the pointer 01 Moves the pointer right 10 Jumps past the matching 11 if the bit at the pointer is 0 11 Jumps back to the matching 10 if the bit at the pointer is 1

The tape is outputted on every 00 command.

### 10: Binary combinatory logic

A term in Binary combinatory logic is of the format:

```00 | 01 | 1 <term> <term>
```

The rules for subterms of a given term is (parsing from right to left):

```1100xy   --> x
11101xyz --> 11xz1yz
```

The terms 00 and 01 correspond, respectively, to the K and S basis combinators of CL, and the "prefix 1" acts as a left parenthesis (which is sufficient for disambiguation in a CL expression).

The term is evaluated with the inputs λn.n+1 and 0, as in Church numerals. The result is then outputted, assuming no errors occur.

### 11: Cellular automatons

The program is a Wolfram Code with two states, one dimension, and the smallest possible neighbourhood size. This is then run with the input data as the initial state. The field is outputted every generation, and it runs until the user stops it manually.