Move ordering

For alpha-beta pruning, it is essential that the best moves in a position are searched first. Zebra uses several different heuristics to achieve this: For each move, a "killer response" to that move is stored - if my opponent plays the X-square g2, I definitely should look at h1 first to see if the corner can be captured, and if this is a wise thing to do. Another useful heuristic is to perform shallow searches; before starting on a depth 12 search, the program searches the position to depth 2 and finds the move which looks best after the shallow search, which obviously takes negligible time compared to the full search.