A friend pointed me to Clifford Pickover's ESP test. Take a minute and try it before you look at the spoiler 1. Although I'm not a great puzzle solver in general, this one was pretty easy for me. I have a theory as to why that's so, and if I'm right, this puzzle will be easily solved by most programmers -- although it seems to have mystified quite a few visitors to Pickover's site.
Like a lot of puzzles, the solution to this one requires that you question your assumptions. Programmers, more than most people, do that for a living. In a 1999 column on problem-solving strategies, I wrote:
In real life, you never have to stop to consider whether, for example, the failure of gravity to operate as expected is a possible explanation for some problem. In the realm of computers and software, you're dealing with abstractions layered on abstractions, and in order to make progress on the higher-level ones you have to believe in the lower-level ones. But in order to debug things, you have to question all assumptions, at every level, all the time. This is, psychologically, just plain hard.
It's still hard, and I still fail to do it as consistently and effectively as I'd like. But I'm working on developing the habit, and I think I'm making some progress.
Former URL: http://weblog.infoworld.com/udell/2003/01/05.html#a564