CloudFlare suffered a massive security issue affecting all of its customers, including Rosetta Code. All passwords not changed since February 19th 2017 have been expired, and session cookie longevity will be reduced until late March.--Michael Mol (talk) 05:15, 25 February 2017 (UTC)

Chess player/Move generation

From Rosetta Code
Chess player/Move generation is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
This is a sub-task of the Chess player task.

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.

Basic implementation:

  1. Moves based on piece type
  2. Promotion to queen
  3. Allow resignation

More advanced/full implementation:

  1. Castling (not through check)
  2. En-passant capture
  3. All promotions
  4. Move legality for moving in/out of check
  5. 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.