# Esolang Reverse Engineering Contest

**Esolang Reverse Engineering Contest** is an esoteric language-related competition hosted by Kamila Szewczyk on the Esolangs Discord server (see The community portal).

The interpreters for the languages can be found either on the corresponding wiki pages, or the host's GitHub repository.

## Round 1 (Finished July 2020)

Language: UM8

Winner: None.

Writeups:

Problems: Unknown.

## Round 2 (Finished October 2022)

Language: Nuova

Winner: fireflame241 with 59 points (max), and 439'939 bytes.

Writeups:

Problems:

- 1 point: Create a program that prints "Hi" without a linefeed.
- 2 points: Create a program that prints "Hello, World!" with a linefeed.
- 4 points: Make a cat program that does not terminate.
- 6 points: Make a cat program that terminates on EOF.
- 16 points: Make a fizzbuzz program that displays a specified amount of sequence items (as a decimal number, 0-10000).
- 30 points: Prove that the language is Turing-complete (either by creating an interpreter for a TC language in it or compiling a TC language into it). Assume that the registers and memory are unbounded and provide reasoning behind your proof.

Tiebreaker: min(Σ solution_lengths) wins.

## Round 3 (Finished June 2023)

Language: Binary Forthleq Calculus

Winner: Olus2000 with 21 points, 26334 bytes

Writeups:

Problems:

- 1 point: Create cat program that terminates on EOF.
- 1 point: Decode the hint.bin file and make a program that prints its contents.
- 2 points: Create a program that prints the first n primes, reading n from the user. You may assume that n < 2000.
- 3 points: Write a non-empty quine.
- 5 points: Create a brainfuck interpreter. Feel free to pick the most convenient size of the tape, its width and wrap-around behaviours.
- 10 points: Pick a Turing-complete stack-based esoteric language. Implement its compiler that targets Binary Forthleq Calculus in BFC.

Tiebreaker: min(Σ solution_lengths) wins.

## Round 4 (Finished December 2023)

Language: AI Bit-wise cyclic tag

Winner: Olus2000, all points, 343 bytes.

Writeups:

Problems:

- 2 points (in total): Skip the first and last bits of the input.
- 1 point: Repeat the input.
- 1 point: Hello, world! - Display "Hello" in binary (ASCII assumed).
- 5 points: Sort the input bits.
- 10 points: Increment a binary number.
- 15 points: Decrement a binary number.
- 10 points: Determine if the amount of zeroes is the same as the amount of ones - worth 10 points.
- 2 points: Truth machine.

Bonus task: Demonstrate the computational class - through L-completeness, i.e. simulate an automaton of desired computational class in the language: 1=FSM, 2=PDA, 3=LBA, 4=TM. Worth as many points as ceil(pow(2, 1.5*sum n)), hence e.g. demonstrating proofs for FSM and PDA yields you 23 points.

This challenge comes with a twist: I already supply you with two runnable programs. Guessing what each of them does yields you a single point. Tiebreaker: min(Σ solution_lengths) wins.

## Round 5 (Scheduled to finish June 2024)

Language: Green

Winner: N/A

Writeups: N/A

Problems:

- 1 point: Implement a terminating
*cat*program. - 1 point: Repeat (double) the input.
- 1 point: Hello, world!
- 5 points: Sort input bytes.
- 8 points: Read an arbitrary amount of bytes on input, display their balanced
*AVL tree*. - 8 points: Output the digital root of a number.
- 2 points: Truth machine.
- 5 points: Non-empty quine.
- 10 points: Construct a
*prefix trie*of the input. - 15 points: Construct a
*suffix trie*of the input.

Warmup problems:

- 1 point: Provide an input that segfaults the interpreter.
- 1 point: Explain what the attached program does.

The challenge comes two twists: the problems are actually not that hard (but the interpreter is still poisonous - exercise caution) and the tiebreaker is likely going to be byte size, and you may form teams of up to two server members. Both winners get the EsoRE winner role.