This is a collection of logic and programming puzzles that originally appeared in Personal Computer World. They were collected and published in 1983, and then updated slightly and republished by Dover in 1996. It consists of 20 pages of quick mental puzzles (70 in total), followed by the meat of the book, 70 pages of "micro" (i.e. programming) puzzles (65 in total). Complete answers and explanations are included at the end of the book.
This book will provide many hours of enjoyable recreational computer programming. It is also a good source of programming-assignment ideas for a beginning or intermediate programming course.
The puzzles are described without reference to any particular programming language, and can be solved by any modern programming language. Despite being almost 30 years old, these puzzles have held up quite well. They are a rich set of problems, solvable by relatively simple programming techniques (mostly 32-bit integer math, occasional floating-point math, nested loops, small arrays, and simple recursion). What isn't required -- string manipulation, file/database access, deeply-nested program structure, and richer data structures such as linked lists, trees, stacks, hash tables, and priority queues.
The book is tinged with math and bits of number theory, but all of the mathematics is explained. For their solution, the puzzles encourage a bit of mental analysis (to find an efficient approach), followed by a bit of programming (to find the answer). The majority of the puzzles require less than 5 minutes of run-time on today's machines to solve. A small number of the puzzles are very challenging - either not solvable with 64-bit integers or not solvable within several days of run-time.
The book is very well edited. There are no typos, and the puzzle descriptions are precise and unambiguous. The only dud was puzzle #52 "A Long-Winded Fraction". This puzzle is either not described clearly, or, as I suspect, the author did not actually program this puzzle, and didn't realize that there are so many solutions that it isn't really a proper puzzle.
Of the 65 "micro" puzzles, 51 are programming puzzles and 14 are non-programming logic puzzles. Of the programming puzzles, 25 are integer computation (square numbers, prime numbers, series, Pythagorean triangles, remainders, check digits), 10 are combinatorics, 5 are integer manipulation (digit shuffling, palindromic numbers), 5 are simulations, 4 are board/grid puzzles, and 2 are word puzzles (requiring a dictionary). Of the logic puzzles, 8 are logic (Who's Who, dice, Venn diagrams), 4 are geometric, and 2 are number crosswords."