Feature engineering is important for better accuracy of predictions in machine learning.
Generally, feature engineering involves two components:
The proper understanding of the problem is needed to work on features wisely. You can iterate the process many times for enhancement of the feature generation task.
Fitting Features to Your Classifier
Let’s say you're using SVM with a linear kernel. If you can find an interesting interaction between various attributes, that can measure and provide as an input to the classifier, then you need to manually construct features.
Notes Specifically on Puzzle Solving
To solve a problem with a complex state space, then you might want to use a reinforcement learning approach like Q-learning. This can help you to structure learning tasks that involve reaching some goal by a series of intermediate steps by the system.