I like puzzles (whether mathematical or logical), but I don't like overly mechanical ones. These are the ones where an algorithm to solve the puzzle is so obvious that the human contribution is negligible: they are only pastimes. Such puzzles cry out for mechanization. I find programming a computer to solve them all is much more fun than solving one instance.

Word-search letter-grids are one example. One of my very earliest programming exercises was to write a searcher widget in BASIC on a Commodore 64. It took a few days to get it right, and entering the puzzle grid correctly was a hassle, but the program worked. Chess is not a good example (the game logic being too complicated). Sudoku is closer to the former than the latter, as the sense of drudgery (rather than marvel) in completing a puzzle indicates.

It is rare though that writing the general solution program is as quick & easy as it was in this case. It uses GNU Prolog, an implementation of a classic logic-programming language that automates many kinds of searches (including backtracking). With a bundled extension related to finite-domain constraint solving (whatever that is :-), this sudoku solver is short & clear... and fast. It runs in less than a second, even on hard puzzles.

Enjoy the source code at gitlab.