Kevin You's Other Projects

[Back to main page]

Synthetic Geometry

I've written a handout on synthetic geometry with a philosophy that focuses on underlying ideas and constructions instead of theorems, and I included many hand-picked problems grouped by common ideas. The handout totals to nearly 120 pages, and was first released in January of 2022. Here is the main handout, solution to examples, and solution to problems.

Minsky interpreter code
Figure 1. 2023 CMIMC G8, cute problem of mine with purely synthetic solution

Esoteric Programming languages

I've written two esoteric programming languages, titled L3 and dungeon journey, along with code-golf challenges for the languages. The languages were used in the 2023 and 2024 Carnegie Mellon Informatics and Mathematics Competition’s programming contest. You may find the original languages specifications and problems on the CMIMC website. Alternatively, you may find a slightly updated version of L3 here.

L3 consists of program code that manipulates a variable of 10 registers, with two possible operations on each register, increment and decrement and jump if zero, like that of a Minsky machine. The program code and control flow is laid out on a 2D grid. L3X extends L3 by introducing streams and allowing multiple pieces of data to flow around the program simultaneously. Much of the interest for coding in L3/L3X is the routing aspect, placing the program on the grid efficiently and perhaps elegantly. You can see the web-based visualizer and some example code.

Shown below is an interpreter for a normal 8-registry Minsky machine holding up to 16 instructions. The memory size can be easily expanded. You can find the code along with a simple Fibonacci number program that runs on the Minsky machine in the examples.

Minsky interpreter code
Figure 2. Minsky machine interpreter in L3

Dungeon Journey is best described as a Turing machine with a 2D tape, two tape heads, and no internal state. The two tape head part actually somewhat resembles modern computers, which maintain at least two pointers, an instruction pointer that tracks the code being executed, and a stack pointer that tracks the data of a program. The 2D tape part resembles Langton's ant and Turmites. Indeed, Dungeon Journey can also exhibit similar chaotic behavior on an empty tape, though chaotic behavior is generally much harder to find if one requires both tape heads to move. On the flip side, with two tape heads one can intentionally draw shapes much easier.

Shown in figure 3 are various patterns drawn in Dungeon Journey, from orderly to chaotic. Shown in figure 4 is one of the most interesting Dungeon Journey program I found with an alphabet size of 5 that runs on an empty tape. The program alternates between the regular double pyramid pattern and chaos after collisions.

four dungeon code
Figure 3. Four dungeon journey programs
chaotic dungeon code
Figure 4. Double pyramid with chaos program

More to be added...