Here's what goes into an 'ideal' puzzle:
- * Relatively simple to understand the rules etc.
* Some kind of graphical representation of the puzzle will let it be played in a simple flash app
* It's mathematical in nature -- ie, a computer can solve it
* There's a good way to scale the puzzle -- typically by making the board larger, adding more pieces, etc. (less so is adding new rules, unless the rules can be defined in a way a computer can parse them). By scale, we mean that the difficulty increases, preferably exponentially, as the puzzle levels increase. (The Runaway Robot puzzle is a good example of a puzzle that doesn't scale particularly well.)
* Puzzle levels can be generated by computer. (This stops people from sharing solutions to particular levels -- every user gets their own levels.) Generation must be relatively fast compared to solving, but does not necessarily have to be done in real time.
* Easy way to check a solution on the backend, in sub-second time
adum