This is a solver for the generalized 15-puzzle written in C++. It can optimally solve any p x q sized board, although it becomes very slow for boards larger than 4 x 4, and some 4 x 4 boards with long solutions.
To solve a puzzle, it uses the IDA* algorithm with an additive disjoint pattern database.
This solver has also been ported to WebAssembly using Emscripten here.
Read more about the solver on my blog post.