My solver uses a very greedy guess-and-check algorithm that keeps track of a lot of candidate moves at each step. It’s both bad in terms of the number of steps required and the amount of RAM that it uses! As such, the solver can take a very long time to run. The preset frame rate for the visualization doesn’t help. (For example: run the solver on boards #9 and #25).
Maybe I’ll come back to this at a later date to swap out the solver for something more reasonable. If that ever happens, I’ll probably just crib from this approach.