tl;dr:"In this article, I will present a new puzzle game and demonstrate techniques I used to write a fast, practical solver for it. Topics covered will include breadth-first/A\* search, memoization, optimization, and strategies specific to NP-hard and NP-complete puzzle games."