I used to love doing these!
This is kinda off topic, but as a freshman in college, I took a class on an obscure logic programming language called prolog. The way prolog worked was you would give it a set of 'facts' and then give it an equation to solve for.
It was therefore very easy to create programs that would solve these types of logic problems. In fact our final project was a program that would solve this ridiculously huge logic problem, with hundreds of facts. It was cool to see it solve them so elegantly.
I don't have time to work on this now, but I might later. I would love to write a prolog program to solve this, but I don't have nearly enough free time for that...