I had to solve Sudoku and similar puzzles at university using Prolog (and fell in love with it in the process). What really saddens me is that every Prolog system ships with a constraint solver (some better, some not), yet many other languages don't have good bindings or libraries for constraint solving.