Nếu bạn chuẩn bị sử dụng các công cụ dòng lệnh Linux tiêu chuẩn như wc
và grep
sau đó tôi nghĩ bộ xử lý PGN miễn phí của tôi, pgn-extract , sẽ thực hiện nhiều công việc tiền xử lý cần thiết để đếm các trò chơi trong mỗi danh mục. Dưới đây là một kịch bản bash cơ bản tôi đưa ra như một bằng chứng về khái niệm. Nó giả sử tập tin trò chơi của bạn được gọi inputfile.pgn
- điều chỉnh khi cần thiết hoặc chuyển nó dưới dạng đối số dòng lệnh:
#!/bin/bash
# Output stats on castling.
src=inputfile.pgn
# Pre-process the games to allow textual analysis.
pgn-extract -C -V -N --notags --nochecks --linelength 10000 -s -o stripped.pgn ${src}
# Castling by white: detect a preceding move number.
grep '\. O-O ' stripped.pgn > Wkingside.pgn
grep '\. O-O-O ' stripped.pgn > Wqueenside.pgn
# Castling by black: detect no preceding move number.
grep '[^.] O-O ' stripped.pgn > Bkingside.pgn
grep '[^.] O-O-O ' stripped.pgn > Bqueenside.pgn
# Find games in which no castling occurred.
grep -v ' O-O ' stripped.pgn | grep -v ' O-O-O ' | grep -v '^$' > nocastle.pgn
# Output the FEN of the final position to include castling rights and
# look for the presence of rights.
pgn-extract -C -V -N --notags --nomovenumbers --linelength 10000 -s nocastle.pgn --dropply -1 -F | grep ' [wb] [KkQq]' > rights.txt
# Output the results - assumes valid Result tags in the source.
echo 'Number of games: ' `grep '^\[Result ' ${src} | wc -l`
echo 'W Kingside: ' `cat Wkingside.pgn | wc -l`
echo 'W Queenside: ' `cat Wqueenside.pgn | wc -l`
echo 'B Kingside: ' `cat Bkingside.pgn | wc -l`
echo 'B Queenside: ' `cat Bqueenside.pgn | wc -l`
echo 'Neither: ' `cat nocastle.pgn | wc -l`
echo 'Rights retained: ' `cat rights.txt | wc -l`
Tôi đã thử tập lệnh trên cơ sở dữ liệu KingBase (tháng 4 năm 2019) và sau khi xóa các trò chơi bị hỏng và các bản sao đã nhận được các số liệu thống kê sau:
Number of games: 2072354
W Kingside: 1633762
W Queenside: 246158
B Kingside: 1670870
B Queenside: 128124
Neither: 69776
Rights retained: 24280
Con số 'không' là khoảng 3,4% trong khi con số 'quyền được giữ lại là khoảng 1,2%. Nếu các trò chơi có 20 ply trở xuống bị xóa thì con số 'không' giảm xuống còn khoảng 2,9% và con số 'quyền được giữ lại' còn khoảng 0,7%.