Last year’s MIT Mystery Hunt had a fun puzzle called Caterpillars which involved fitting together a bunch of polyomino pieces (laser cut by the fine folks at danger!awesome, by the way). So naturally I decided to write a program to solve it, and I was successful in that endeavor.
After the Hunt ended, I cleaned up the program, polished it up, and generalized it as much as possible. The goal was to have a general-purpose polyomino solver that could solve as many different possible puzzles. Another solver existed at the time, but it did not have any source code available so could not be modified to solve more general puzzles. Although apparently at least one new open-source solver has appeared in between then and now.
Without further ado, my polyomino solver can be found here on my GitHub, source code and all. Usage instructions can be found in the accompanying readme file.
It’s not super-efficient, but it was good enough to solve Caterpillars. If I ever get motivated enough (read: another appropriate Mystery Hunt puzzle comes along), I’ll re-architect and optimize it, but I currently have no immediate plans to do so.