Add FEN string to readme #14

Merged
Josh merged 1 commits from 13-update-readme-fen into main 2025-08-18 00:48:35 +00:00

View File

@@ -5,6 +5,30 @@ Build a clean, fast chess engine in C that starts from a FEN string and produces
## Approach ## Approach
- **Correctness-first engine:** `FEN → board → legal movegen → PERFT` - **Correctness-first engine:** `FEN → board → legal movegen → PERFT`
## FEN (ForsythEdwards Notation)
FEN is a single line string that describes a chess position. Format:
<pieces> <side> <castling> <en-passant> <halfmove> <fullmove>
- **pieces**: 8 ranks (8→1) separated by `/`; letters for pieces (`PNBRQK`/`pnbrqk`), digits for empty squares.
- **side**: `w` (White) or `b` (Black) to move.
- **castling**: any of `KQkq` or `-` if none.
- **en-passant**: target square after a two-step pawn move, or `-`.
- **halfmove**: moves since last pawn move/capture (50-move rule).
- **fullmove**: move number (starts at 1, increments after Blacks move).
**Example (starting position)**
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
- pieces: starting layout
- side: `w` (White to move)
- castling: `KQkq` (both sides can castle both ways)
- en-passant: `-`
- halfmove: `0`
- fullmove: `1`
## Future Work ## Future Work
- Incorporate algorithms and evaluation methods for chess positions to enable an **AI player**. - Incorporate algorithms and evaluation methods for chess positions to enable an **AI player**.