I always wanted to create some artificial intelligence - well, every programmer does, right? So, I thought, I'd dive into some genetic programming (not to be confused with generic programming, the time-wasting technique from OOP-land).
Genetic programming basically means that you create some random programs and see how well they perform a certain task. Then you pick the best performers, mutate and cross-breed them and test this new generation again. Repeat a few times until some fitness threshold is reached and spit out the best program.
Sounds like a perfect natural approach to me. In fact it is the perfect natural approach - a thing called evolution.
Now, the hard points are basically these three: