Thread:Sylvandyr/@comment-5619126-20121014124324/@comment-4830404-20121027231030

Actually, no step is missing at all from that logic. All of the cases are covered very cleanly in my example. I think that your direction of logic is making things way more complicated and confusing than it needs to be. You don't need to exclude anything - you just don't include them in the first place.

Instead of going through all the dragons and trying to decide whether it can be bred from those parents or not, you should start from the bottom up with a completely empty list. Think additively. That way you do not need to consider ugly edge cases and litter your code with a lot of unnecessary conditions.

Let me see if I can illustrate the pseudocode. The logic below covers every single case. You do not have to worry about whether it's two colors and you can't breed single colors except if one color is diamond or if it has red/blue or whatever. That's way complicated and not needed. Observe the logic below: