Best puzzle type to foster logical thinking With my informal Coding for Teens group, I like to start each session with a puzzle that we do as a group. My reasoning is that programming is not primarily about semicolons and syntax, but about logical thinking. And logical thinking can be demonstrated and honed with puzzles.

So far I've used grid puzzles (Alice, Betty, Carol, and Dawn have dates with Roger, Steve, Tim, and Ulmer...), and I'm thinking about using the Towers of Hanoi (obviously that's a one-session puzzle), but I'm wondering if there are other formats that are good for this type of group activity.

Edit

To be clear, I'm not asking for a list of specific puzzles / links. I'm asking for puzzle types. For instance, if I were asking for puzzle types that hone language and / or lateral thinking, "crossword puzzle" might be a good answer.
A fun and useful puzzle type is logical operators. Anything and everything that uses logical operators, and the more complex your operator, the better.

Working out how a mysterious logical operator works is a great way to increase, well, logical thinking. You really have to figure out what's the logical output. 

An example puzzle would be:

Input: A B C (binary values)

(((A or b) or (not C)) and (C or (not (A and B))))

And then they need to figure out how this thing works. Building a truth table, figuring out tautologies or how one parameter can completely change what the operator does. ( I think C is like that, in the above example).

A very, very important skill this teaches is tautologies. Sometimes programming needs to be tautologous. The question of whether the program works should be true for every input which is allowed. While that isn't always possible (practical-wise), striving for bug-free code is, as I see it, a good thing.

It's also interesting to show the students how a very simple set of blocks (and,or,not) can be used to construct unbelievably complicated things; and to work out how those things work, the students have to develop logical thinking. 

So logical operators overall improve a number of aspects of logical thinking. 

(It doesn't add too much, but my personal experience has shown me that puzzles such as these are one of the only things that taught me logical thinking).