It solves standard puzzles quickly, but it can also handle ambiguous puzzles: instead of stopping at the first solution, it enumerates all valid solutions and reports the total number of solutions.
I built it mainly to explore performance and edge cases. Feedback is welcome!