{"id":317,"date":"2013-01-01T18:52:14","date_gmt":"2013-01-01T22:52:14","guid":{"rendered":"http:\/\/adamrosenfield.com\/blog\/?p=317"},"modified":"2013-01-01T19:03:00","modified_gmt":"2013-01-01T23:03:00","slug":"polyomino-puzzle-solver","status":"publish","type":"post","link":"http:\/\/adamrosenfield.com\/blog\/2013\/01\/01\/polyomino-puzzle-solver\/","title":{"rendered":"Polyomino puzzle solver"},"content":{"rendered":"<p>Last year&#8217;s <a href=\"http:\/\/web.mit.edu\/puzzle\/www\/\">MIT Mystery Hunt<\/a> had a fun puzzle called <a href=\"http:\/\/web.mit.edu\/puzzle\/www\/12\/puzzles\/betsy_johnson\/caterpillars\/\">Caterpillars<\/a> which involved fitting together a bunch of polyomino pieces (laser cut by the fine folks at <a href=\"http:\/\/dangerawesome.co\/\">danger!awesome<\/a>, by the way).  So naturally I decided to write a program to solve it, and I was successful in that endeavor.<\/p>\n<p>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.  <a href=\"http:\/\/gp.home.xs4all.nl\/PolyominoSolver\/Polyomino.html\">Another solver<\/a> 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 <a href=\"http:\/\/code.google.com\/p\/meiji-choko-solver\/\">has appeared<\/a> in between then and now.<\/p>\n<p>Without further ado, my polyomino solver can be found here on <a href=\"https:\/\/github.com\/adamantoise\/puzzle-tools\/tree\/master\/polyomino\">my GitHub<\/a>, source code and all.  Usage instructions can be found in the accompanying readme file.<\/p>\n<p>It&#8217;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&#8217;ll re-architect and optimize it, but I currently have no immediate plans to do so.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last year&#8217;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 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,35],"tags":[],"class_list":["post-317","post","type-post","status-publish","format-standard","hentry","category-programming","category-puzzles"],"_links":{"self":[{"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/posts\/317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/comments?post=317"}],"version-history":[{"count":4,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/posts\/317\/revisions"}],"predecessor-version":[{"id":325,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/posts\/317\/revisions\/325"}],"wp:attachment":[{"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/media?parent=317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/categories?post=317"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/tags?post=317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}