solver for constraint-based logic puzzles