3 Programming-Related Games (1) – A=B
We’re almost at Day 10! Time for a quick break to share a few games related to programming and computer science. Today’s featured game is A=B, available for purchase on Steam, playable on both Windows and Mac.
A=B is a programming language designed by the game’s protagonist, featuring only one syntax rule: A=B. You have to solve various puzzles using this bare-bones syntax, and as you solve more puzzles, new syntax rules gradually unlock.
Let’s take a look at the Steam reviews first.

Gameplay
In the game, you’ll encounter a variety of puzzles, all related to string manipulation. The A=B syntax replaces occurrences of string A with string B. For example, if the program is aaa=bbb and the input string is aaabbb, the result will be bbbbbb (replacing aaa with bbb). The explanation of syntax in the game is also quite minimalist—it simply hands you a link to a PDF, gradually introducing more syntax as the story progresses.
Here are a few examples of puzzles from the game:
1. Sorting abc
Given a string containing only the three letters a, b, and c, with a maximum length of 7: how would you sort it using only the a=b syntax?
The answer here is quite simple—just enumerate all three permutations:
ba=ab
ca=ac
cb=bc
If the input is bcba:
- Match
ba, replacebawithab, resulting inbcab - Match
ca, replacecawithac, resulting inbacb - Match
ba, replacebawithab, resulting inabcb - Match
cb, replacecbwithbc, resulting inabbc
From a conventional programming perspective, a problem that could easily be solved with a for loop or a built-in sort function now requires a bit of imagination.
2. Palindrome
This chapter introduces a few new syntax rules:
y=(return)false
Returns false when y is matched.
(start)a=(end)b
When the prefix a is matched, the final character is replaced with b. Having the beginning of the string affect the end might seem counterintuitive, but the game is designed to naturally teach you how to leverage this syntax.
The puzzle is the familiar challenge of checking whether a string is a palindrome. The input again consists only of the three letters: a, b, and c.
axAy=
bxBy=
cxCy=
(start)a=(end)xAy
(start)b=(end)xBy
(start)c=(end)xCy
yx=(return)false
=(return)true
It might look confusing at first glance, but once you study the code a bit, the core concept becomes clear.
First, whenever a string starts with a, b, or c, the end is transformed into the format xAy (or xBy/xCy—xy could be replaced by other characters, acting as markers to indicate it has been processed). Suppose the input string is abba: after the first round of processing, the string becomes bbaxAy.
At this point, executing axAy= eliminates a matched palindrome pair. Ideally, all matching pairs are eliminated. If anything is left over, it leads to a pattern like yx, indicating that characters didn’t match.
Reflections
While you don’t need to know any programming language to play this game, diving in without a basic grasp of problem-solving concepts can still be quite challenging. For software engineers, playing this game feels a bit like solving puzzles with an utterly broken, bare-bones programming language.
However, I think that’s actually a great thing. We’ve grown so accustomed to standard programming concepts—loops, functions, and abstractions—that stepping back and thinking from a completely different perspective makes it all the more fun.
In a typical programming language, the two problems above would only take a few minutes to solve. But writing them using A=B’s syntax forces you to pause, think deeply, and develop an entirely different mindset to achieve your goal.
Related Posts
- Things to Keep in Mind When Using Images in Frontend Development Expanding on Jake Archibald's article, this post organizes how modern responsive images should be written: why width/height are still necessary, when to use CSS aspect-ratio, how to choose between AVIF and WebP, and using picture/source/srcset for art direction on mobile devices.
- CSS field-sizing — Auto-resize Form Elements with a Single Line of CSS Previously, auto-resizing a textarea required listening to scrollHeight in JavaScript. With CSS field-sizing: content, a single line replaces it all, supporting textarea, input, and select. This article covers the pain points of older approaches and how to use field-sizing.
- Make Your Link Underlines Look Better: text-underline-offset By default, underlines sit very close to the text. Some designers dislike this look, and personally, I don't think it looks great either.
- Why the Web Shouldn't Strive for Pixel Perfection You should only focus on pixel perfection when it truly matters; otherwise, it often results in a lose-lose situation.