You get quite a push towards many forgotten algorithms and development practices, while trying to solve seemingly not so difficult task. Just scratch a surface and beneath you find lots of thinking and not-so-ordinary implementations.

Just do not forget an advice by Richard Hamming:

If you read all the time what other people have done you will think the way they thought. If you want to think new thoughts that are different, then do what a lot of creative people do - get the problem reasonably clear and then refuse to look at any answers until you’ve thought the problem through carefully how you would do it, how you could slightly change the problem to be the correct one.