Will I succeed at writing a SpaceChem AI before March 2024?
Basic
25
3.9k
resolved Mar 6
Resolved as
20%

SpaceChem is a famously difficult puzzle game, but it has a small, discrete state space. I think it might be possible to generate solutions to research puzzles using a SAT solver. If that doesn't work, I might try deep RL.

This market resolves YES if I solve 5 puzzles below. It resolves NO if I solve none. If I solve X/5 puzzles, it resolves PROB 20*X%.

By "solve", I mean that the AI generates a working solution. I can give it any heuristics that are reasonably generalizable, and also specify desired intermediate states or conditions by hand, but the AI must do most of the cognitive work. The last three puzzles were described as particularly hard to solve at all by a SpaceChem expert, and are far beyond my skill level, so those should be reasonably objective. If someone else writes the AI first, I have to replicate their results.

Puzzles

  • "It Takes Three": easy puzle from world 3 level 2

  • "Special Assignment": moderate puzzle from world 8 level 1

  • "Getting Pumped": particularly hard puzzle

  • "Catalyst II": particularly hard puzzle

  • "Squaric Acid": particularly hard puzzle

I will not trade in this market.

Get Ṁ600 play money

🏅 Top traders

Sort by:

this resolves!

nahh bro

The current commit of the solver now solves "It Takes Three", so this should resolve at least 20%.

https://github.com/tkwa/Spacechem-in-SAT/commit/63fc79e855a54c4a7c6d7d714c6e428210acc079

I got bonds to work! Atoms now know when their molecule has been grabbed and move around accordingly. When input and output work I'll probably put the code on github.

@ThomasKwa
Solver is now on github: https://github.com/tkwa/Spacechem-in-SAT
Just playing around with it, the solver generated this method of inputting 4 water atoms with only 20 cycles and 10 symbols.

Once I get bond to work, I'm pretty confident I can solve challenge 1, because it can be done with 16 symbols in a 25 cycle loop with no rotates.

This weekend I wrote up code for an extremely simplified case, where one waldo must deliver atoms to locations then return to its starting location. It works but is rather slow at 1.1 seconds for 8 arrows, 8x10 grid, 3 atoms, and 18 timesteps.

The code has several O(t n_atoms^2) and O(t n_atoms n_cells) operations just to check simple invariants like "if atom is at cell x, y then cell x, y has an atom", and I'm not sure whether various difficult search problems the model must do are additive or multiplicative on this.

I wish I could just write game code and have invariants automatically generated. It's 300 lines to generate ORTools SAT clauses for 100 lines of game logic, and I expect lots of bugs as I keep implementing features.