Chess player/Move generation
Using suitable data structures, generate a list of valid moves given a chess game position and the side-to-move. You can create a basic (and incomplete) solution or create an advanced solution which covers all possible moves and depends on tracking more of the game state.
- Moves based on piece type
- Promotion to queen
- Allow resignation
More advanced/full implementation:
- Castling (not through check)
- En-passant capture
- All promotions
- Move legality for moving in/out of check
- Draw by repetition and 50-move rule
Describe how complete your solution is, and try to create a self-contained component which could be used by a complete chess program.