Regex Chess: A 2-ply minimax chess engine in 84,688 regular expressions
66 points - last Thursday at 3:30 PM
Sourcestrenholme
today at 5:06 AM
For people who are interested, here is the solution. In standard PGN, the solution is:
1. e4 e5 2. Nf3 Nf6 3. Nxe5 Nxe4 4. Qe2 Nxd2 5. Nc6+ Ne4 6. Nxd8 Kxd8 7. Qxe4 a6 8. Bg5+ Be7 9. Qxe7#
In the Stockfish notation this engine uses, White’s moves are:
1. e2e4 2. g1f3 3. f3e5 4. d1e2 5. e5c6 6. c6d8 7. e2e4 8. c1g5 9. e4e7
Here is a Lichess analysis of this game:
https://lichess.org/WnMF3LpX
(In terms of Regexes, Javascript has a very rich Turing complete Regex library; it’s an open question whether Lua 5.1’s regexes are Turing complete, but they are good enough for the text processing I do)
This is amazing. I'm at loss for words.
During my CS years I remember being fascinated by NFA's, as opposed to boring single universe DFA's.
For some reason I internalized that I would never see something like an NFA implemented beyond text books.
Then came Carlini.
But... they are equivalent?
Modulo an exponential blowup! That’s like saying P is equivalent to NP.
userbinator
today at 4:18 AM
Upon reading the title, this is one of those "I know that's possible, but I'd never bother to implement it" things, although this particular implementation isn't exactly what I had in mind.
evilsnoopi3
today at 2:54 AM
The technical write up is worth perusing but I played a game before reading and accidentally found a winning strategy immediately. I'm not sure if this is a result of the 2-ply nature of the engine or if the mentioned deficiencies account for this but the computer did not act to prevent checkmate in 1 (without any intervening check); the game I played was (in algebraic notation):
1. e4 e5
2. kf3 kf6
3. kxe5 kxe4
4. d4 kxf2
5. Kxf2 a5
6. Qf3 b5??
7. Qxf7
1-0
And now you have 84,689 problems
I get "illegal move, game over" like 50% of the time, chrome on android.
VladVladikoff
today at 2:51 AM
This is like a fever dream.
This is absurd. I did not realize you could do nearly this much computation in regex.
It’s turing complete so you could compile almost any language to regex. You might have to build a vm for some languages, also in regex. The point is, it’s regex all the way down.