function parseFen(fen) { const [board, activeColor, castling, enPassant, halfMoves, fullMoves] = fen.split(' '); const ranks = board.split('/'); const pieces = ranks.map(rank => rank.split('').reduce((acc, char) => { if (/\d/.test(char)) { return acc + ' '.repeat(Number(char)); } return acc + char; }, '')); return { pieces: pieces.join('').split(''), activeColor, castling, enPassant, halfMoves: Number(halfMoves), fullMoves: Number(fullMoves), }; } const fenString = 'rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq e3 0 1'; const parsedFen = parseFen(fenString); console.log('Parsed FEN:', parsedFen);