Core data structures, move generator, and minimax algorithm for Checkers in golang.
This is based on data structures as found here which is from a java book.
It does not use bitboards, which are more efficient, but are more complicated to implement and understand.
It includes a lexer (based on Rob Pike's lexer) which can parse compact string representations of checkerboards:
"|- x - x - x - x|" +
"|x - x - x - x -|" +
"|- x - x - x - x|" +
"|- - - - - - - -|" +
"|- - - - - - - -|" +
"|o - o - o - o -|" +
"|- o - o - o - o|" +
"|o - o - o - o -|"
And boards can be exported into the same compact string representations.
This powers checkers-bot-minimax and checkerlution, but should be re-usable in other contexts.