Comment by rcarr
This is the approach algomonster use. They give you a way to categorise the problem and what pattern is likely to solve it:
This is the approach algomonster use. They give you a way to categorise the problem and what pattern is likely to solve it: