diff options
| -rw-r--r-- | match-manager/.gitignore | 2 | ||||
| -rw-r--r-- | match-manager/extract.py | 55 | ||||
| -rw-r--r-- | match-manager/match.py | 127 | ||||
| -rw-r--r-- | match-manager/positions.txt | 249 |
4 files changed, 0 insertions, 433 deletions
diff --git a/match-manager/.gitignore b/match-manager/.gitignore deleted file mode 100644 index 70d1315..0000000 --- a/match-manager/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -results.json -big_games.pgn diff --git a/match-manager/extract.py b/match-manager/extract.py deleted file mode 100644 index 61125a0..0000000 --- a/match-manager/extract.py +++ /dev/null @@ -1,55 +0,0 @@ -import random - -import chess.pgn - -INPUT = "big_games.pgn" -OUTPUT = "positions.txt" - - -def get_random_position(game): - moves = list(game.mainline_moves()) - - # Game is too short - if len(moves) <= 10: - return None - - move_number = random.randint(10, min(len(moves) - 1, 40)) - - board = game.board() - - for i, move in enumerate(moves): - board.push(move) - if i == move_number: - break - - return board.fen() - - -def main(): - max_games = int(input("Enter number of game to extract: ")) - - saved = 0 - - with open(INPUT, "r") as pgn_file, open(OUTPUT, "w") as fen_file: - for i in range(max_games): - game = chess.pgn.read_game(pgn_file) - - if game is None: - break - - fen = get_random_position(game) - - if fen is None: - continue - - fen_file.write(fen + "\n") - - saved += 1 - - print(f"{i + 1}/{max_games} > saved {saved}") - - print(f"Saved {saved} positions.") - - -if __name__ == "__main__": - main() diff --git a/match-manager/match.py b/match-manager/match.py deleted file mode 100644 index 1e3aa08..0000000 --- a/match-manager/match.py +++ /dev/null @@ -1,127 +0,0 @@ -import random - -import chess -import chess.engine - -ENGINE_A = "./engines/chessV0" -ENGINE_B = "./engines/chessV1" - -POSITIONS_FILE = "positions.txt" -MAX_GAMES = 100 - - -class UCIEngine: - def __init__(self, path, name, depth): - self.name = name - self.depth = depth - - print(f"Starting {name}: {path}") - - self.engine = chess.engine.SimpleEngine.popen_uci(path) - - print(f"{name} ready") - - def get_move(self, board): - result = self.engine.play(board, chess.engine.Limit(depth=self.depth)) - return result.move - - def quit(self): - self.engine.quit() - - -def play_game(engine_white, engine_black, fen, game_number): - board = chess.Board(fen) - - print("\n" + "=" * 60) - print(f"GAME {game_number}") - print("=" * 60) - - print("Starting FEN:") - print(fen) - - move_number = 1 - - while not board.is_game_over() and move_number <= 200: - if board.turn == chess.WHITE: - engine = engine_white - color = "White" - else: - engine = engine_black - color = "Black" - - move = engine.get_move(board) - - print(f"{move_number}. {color} ({engine.name}) plays {move}") - - board.push(move) - - if board.turn == chess.WHITE: - move_number += 1 - - result = board.result() - - print("Game finished:", result) - print("Moves played:", board.fullmove_number) - - return result - - -def main(): - depth = int(input("Search depth: ")) - - with open(POSITIONS_FILE) as f: - positions = [line.strip() for line in f if line.strip()] - - random.shuffle(positions) - - engine_a = UCIEngine(ENGINE_A, "chessV0", depth) - - engine_b = UCIEngine(ENGINE_B, "chessV1", depth) - - results = {"chessV0 wins": 0, "chessV1 wins": 0, "draws": 0} - - try: - for i, fen in enumerate(positions[:MAX_GAMES], 1): - # alternate colors - if i % 2 == 0: - white = engine_a - black = engine_b - a_color = chess.BLACK - else: - white = engine_b - black = engine_a - a_color = chess.WHITE - - result = play_game(white, black, fen, i) - - if result == "1-0": - if a_color == chess.WHITE: - results["chessV0 wins"] += 1 - else: - results["chessV1 wins"] += 1 - - elif result == "0-1": - if a_color == chess.BLACK: - results["chessV0 wins"] += 1 - else: - results["chessV1 wins"] += 1 - - else: - results["draws"] += 1 - - print("\nCurrent score:") - print(results) - - finally: - engine_a.quit() - engine_b.quit() - - print("\n" + "=" * 60) - print("FINAL RESULTS") - print("=" * 60) - - print(results) - - -if __name__ == "__main__": - main() diff --git a/match-manager/positions.txt b/match-manager/positions.txt deleted file mode 100644 index 1b72454..0000000 --- a/match-manager/positions.txt +++ /dev/null @@ -1,249 +0,0 @@ -r2qk2r/2p2ppp/p2p1n2/1pb1p2b/2BnP1P1/1P1P1N1P/PBPN1P2/R2QK2R b KQkq - 0 11 -2r1k2r/1b1q1p1p/p2p2pQ/1p2p3/4n3/P1NR1P2/1PP1N1PP/3R2K1 w k - 0 18 -r2qkb1r/pp1b1p1p/1n1p1np1/2pP4/2P5/2NB1N1P/PP3PP1/R1BQ1RK1 w kq - 4 12 -r2q1Q1r/pppbk1Q1/2nb4/3n4/7P/1P2P3/PBPP1P2/R3K1NR b KQ - 0 17 -rq3rk1/1p1n1pp1/p3pn1p/3pb3/P2N4/3PBN2/1PP2PP1/R2Q1R1K b - - 1 17 -r1bqkb1r/1p1p1ppp/p7/2p1P2n/6P1/2NQ4/PPP2P1P/R1B1KB1R b KQkq - 0 9 -r2qk2r/1b1nbpp1/p2p1n1p/1p1Pp3/7P/PBN2N2/1PP2PP1/R1BQR1K1 b kq - 0 13 -r2qkbnr/pppb1ppp/8/3Np3/4PP2/8/PPP3PP/R1BQKB1R b KQkq - 0 8 -rn1qkb1r/pb1n1ppp/1p2p3/2ppP3/3P1P2/2N2N2/PPPB2PP/R2QKB1R b KQkq - 0 8 -r1q1k2r/pp1bnp1p/2Ppp1p1/1B6/1N2P3/b4N2/P1RB1PPP/3Q1RK1 b kq - 0 16 -5rk1/1pq1n1bp/r4pp1/p1Pp4/P2B2b1/1NP2PN1/1P4PP/2QR1RK1 b - - 0 20 -r6r/p1p1k1pp/1bp5/4N2n/4P1b1/2Pq4/P5PP/RNB1QR1K b - - 0 15 -r3k2r/4qpp1/2pbb2p/pp1pn3/4n3/PP2P2P/KBP1NPP1/2NRQB1R b kq - 3 16 -rn1q2r1/p2k4/2p1pp2/5Q2/1p1PN2p/4P3/PPP3PP/R4K1R w - - 0 20 -r2r2k1/pQ3ppp/8/3Pp3/8/2N5/P1P1KP1q/R7 b - - 2 19 -2kr3r/2qbbp2/p1npp2p/1p4p1/2pPP3/2P2NPP/PPB3P1/RN1QR1K1 w - - 5 17 -r2bk2r/2p4p/p1nPb1p1/1p1N4/2B2B2/5P2/PPP3PP/2KRR3 b kq - 0 17 -6k1/p2r3p/b1p1p1p1/5p2/N3P3/1P2KP2/P1P3PP/7R b - - 1 21 -r3kbnr/pppq1ppp/2np2b1/4pP2/6P1/1PN1PN1P/PBPP4/R2QKB1R b KQkq - 0 9 -6k1/p4ppp/Np5n/8/8/1PbP1K1P/Pq3PP1/2RQ3R b - - 3 20 -r2qr1k1/pp3pp1/2pbnnp1/3p4/3P1PP1/2N1B2P/PPB1Q3/R3R1K1 b - - 0 19 -r2qkb1r/pp2pppp/2n1bn2/2p1N3/2pP4/2N1P3/PP3PPP/R1BQKB1R w KQkq - 2 7 -rnb1k2r/1p1pqppp/p2Qpn2/8/4P3/2N5/PPP2PPP/R1B1KB1R w KQkq - 1 9 -r2qkb1r/pppbnppp/5n2/3P4/2B5/2N2N2/pB3PPP/R2Q1RK1 b kq - 4 11 -rnbq4/p1k1p3/2ppP3/1p3Q2/3PnB2/6Pp/PPP4P/RN3RK1 b - - 1 18 -2kr3r/1bp1qpbp/pp2p2p/3pP3/5P2/N5P1/PPP1P1BP/R2Q1RK1 w - - 2 13 -r2r2k1/ppp2pb1/6pp/5b2/2PN1P2/2N5/PP2BPPP/R4RK1 b - - 0 15 -r4rk1/ppp4p/3p2p1/5b2/2P1Bq2/3Q3P/PP2K3/R6R w - - 1 19 -r1b2rk1/p1Q2pp1/4p3/1p4p1/4B3/P7/1P2nPPP/3R1RK1 w - - 2 20 -r3kb1r/pp1qn2p/3p2p1/3bp3/6Q1/5NP1/PP1N1P1P/R1B1K2R w KQkq - 0 16 -r4rk1/pbpqbppp/1p1p1n2/2nPp3/1P2P3/2P2N2/P1BN1PPP/R1BQR1K1 b - - 0 12 -rn1qkb1r/pb1pn2p/1p2p1p1/4Pp2/3p1P2/2P2N2/PP2B1PP/RNBQK2R w KQkq - 0 9 -r3k1nr/p1P2p2/bp1Q3p/8/2P3pq/4Bn2/PP2KP1P/RN3B1R b kq - 0 14 -3rr2k/pp3ppp/4p1b1/n7/3PN1P1/P7/B1P2P1P/2KRR3 b - - 0 19 -r4r1k/pp3ppp/2pR1n2/8/8/2Nn1Q2/P1q2PPP/1R4K1 w - - 0 21 -r1b4k/pp1q2p1/3p1r1p/5p2/3N2nP/2QB4/PPP2PP1/2KR3R w - - 4 20 -rnbqr1k1/1pp2p1p/pb3np1/1P1pp1N1/P3P1P1/B1PQ3P/3P1P2/RN2KB1R b KQ - 2 12 -2rqk1nr/p3p1bp/p4p2/3pP3/2PP1B2/N1P3PP/P3Q3/R3K2R b KQk - 0 14 -rnbqkb1r/pp2pp1p/3p1np1/8/3NP3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 1 6 -rnb1k1nr/p6p/2p1p1p1/1p1pNpq1/3P4/P1B1P2P/1PP2PP1/R2QKB1R w KQkq - 1 10 -rn1qkb1r/p3pp1p/b1p3p1/3p4/1p1P4/1Q6/PPPBNPPP/R3KB1R b KQkq - 0 11 -rn1q1rk1/ppp1n1pp/1b1p1p2/1B1P3b/4P3/2N1BN1P/PP3PP1/R2Q1RK1 w - - 1 13 -1k5r/p1p3pp/2pb1q2/8/2P3Q1/8/PP3PPP/3R1RK1 w - - 1 19 -rn2k2r/pp3ppp/4b3/2p5/1BBb4/8/P4PPP/4R1K1 w kq - 0 16 -r1bqr1k1/p4pbp/6p1/1p1pn3/2p5/1PP1P3/P1BN1PPP/R1BQ1RK1 w - - 1 15 -rn1qkb1r/pbpp1ppp/1p2p3/3nP3/3P4/2PB1N2/PP3PPP/RNBQK2R b KQkq - 2 6 -r3k2r/ppp2ppp/2nb1N2/4p3/q7/3P2Q1/PPPBNPPP/R4RK1 b kq - 0 12 -r2qk2r/ppp2ppp/2nb1n2/3ppb2/8/PP2P2P/1BPPNPP1/RN1QKB1R w KQkq - 1 7 -rbb2rk1/p1q3pp/2p1pp2/2pn2B1/2N5/2PP1N2/PP2QPPP/R4RK1 w - - 0 14 -r4bnr/3nkppp/2p5/p3p3/Pp2P3/1B3PN1/1PP2P1P/R1B1K2R b KQ - 3 13 -2r1k2r/5ppp/1q2pn2/1N1p4/Pbp5/2P2BP1/1P2PP1P/R1B2RK1 b k - 0 15 -2rr2k1/p1q1ppbp/b5p1/8/8/2N1P3/PPQ1N1PP/R1R3K1 b - - 0 19 -rn1qkb1r/pp3pp1/2n1p2p/3pP3/3P1PP1/3Q3P/PP6/RNB1K1NR w KQkq - 1 11 -2r2rk1/pp3pp1/3B3p/8/2B3n1/6P1/P1bN1P1P/R5K1 b - - 2 20 -rnbq1b1r/pp2pk1p/3p1np1/2p5/4PP2/3P1N2/PPP3PP/RNBQK2R b KQ - 1 6 -rnbqkbnr/1pp2pp1/p2p3p/3Pp3/4P3/1PN2N2/P1P2PPP/R1BQKB1R b KQkq - 0 6 -2k2r2/1pp2Npp/p1nbP3/8/8/4BP2/PP3P1P/2KR4 w - - 1 20 -8/pp1bk2p/2nR2p1/5p2/4pP2/1P2P3/P1P1N1PP/2K4R w - - 2 19 -r1bqkb1r/3p1ppp/p1p1pn2/2p5/4PP2/3P1N2/PPP3PP/RNBQK2R w KQkq - 0 7 -rnb1kbnr/ppp2pp1/3p4/3Pp2p/7P/4B1P1/PPP1NP2/RN1QKB1q b Qkq - 1 7 -r1bq1rk1/ppp2pp1/1bn2n1p/6N1/3p3P/1B6/PP1BQPP1/RN2K2R w KQ - 0 14 -rnbqk1nr/1p3ppp/p3p3/3p4/1b1P4/2N3P1/PP1BPPBP/R2QK1NR b KQkq - 3 7 -r3r1k1/pp1b1pp1/1npb1q1p/3p4/3P4/2P1B2P/PP1n1PP1/1BRQRNK1 w - - 0 17 -r1bqkb1r/1pp2pp1/p2p1n1p/3Bp3/3nP3/2NP1N1P/PPP2PP1/R1BQ1RK1 b kq - 0 8 -r2qk1nr/pp3ppp/2nb4/2p5/4B1PP/1P2P3/PBPP1P2/R2QK1NR b KQkq - 0 10 -rnbqkbnr/5ppp/p2pp3/2p5/1p2P3/P4N2/BPPPNPPP/R1BQK2R b KQkq - 1 7 -r1b1k2r/1p1pbpp1/p3p3/4q2p/P3B3/2N1Q3/1PP2P1P/2KR3R w kq - 0 16 -r2qk2r/3n1pbp/1p2pnp1/3p4/3P4/2N1PN2/P2B1PPP/R2Q1RK1 b k - 3 13 -r4rk1/2pb1ppp/p4n2/1p1Pp3/2B1P3/5PP1/PP4P1/2RNR1K1 w - - 0 21 -r2qkb1r/pp2pppp/2n2n2/2pp4/3P4/2PBPb1P/PP3PP1/RNBQK2R w KQkq - 0 7 -3qkb1r/4n3/2rpQpb1/1B4Np/1p1P1P1P/4B3/PP4P1/R3K2R b KQk - 2 21 -rnb1k1nr/p1p1qppp/1p2p3/2N5/4P3/5N2/PP1P1PPP/R1BQKB1R b KQkq - 0 8 -r6k/p3br1p/2q2nB1/1pp1p1B1/4P3/2PP3Q/PP4PP/R4RK1 w - - 1 19 -r1b1k2r/1ppp1ppp/p4nn1/2qPp3/2P1P3/2NBPN2/PP4PP/R2QK2R w KQkq - 3 11 -r1b2bnr/p1p1p2p/1p3pk1/3N2p1/2Bn4/4P1B1/PP3PPP/2KR3R w - - 0 13 -r2qk2r/pp1bppbp/2np1np1/1B1P4/4P3/2N2N2/PP3PPP/R1BQ1RK1 b kq - 0 9 -1rbq1rk1/ppppbppp/5n2/8/2PQ4/2N3P1/PP2PPBP/R1B1K2R w KQ - 3 9 -3r1rk1/pp3ppp/2n2qb1/2p1p3/4P3/2PP1N1P/PP2BPP1/2RQ1RK1 w - - 5 17 -r1bqk2r/p1p2ppp/2p2n2/3pp3/1b2P3/2NP1N2/PPP2PPP/R1BQ1RK1 b kq - 0 7 -3qk2r/3b1pbp/1rn1pnp1/p2p4/P7/4P1P1/1P1NQPBP/1RB1K1NR w Kk - 0 15 -r2qkbnr/pppb1ppp/2Bp4/8/3QP3/2N5/PPP2PPP/R1B1K1NR b KQkq - 0 6 -r4rk1/2pbqppp/p2b1n2/1p2p3/1P6/P1N1P3/1BQ2PPP/1NKR1B1R b - - 1 15 -rn1qkb1r/pp3Bpp/2pp1n2/4p1B1/4P1PN/2N4P/PPP2P2/R2QK2R b KQkq - 0 11 -rn1q1rk1/pbpp2b1/1p4np/5PN1/6p1/2NPB3/PPPQ4/2KR1B1R b - - 0 15 -rn1qkb1r/ppp3pp/3p1n2/8/3PP1b1/5N2/PP4PP/RNBQKB1R w KQkq - 1 8 -r1b1kb1r/ppp1pppp/2P1qn2/8/8/2N5/PPP1BPPP/R1BQK1NR b KQkq - 2 7 -r3kb1r/pp1npppp/1q1p4/8/B2BP3/5b1P/P3QPP1/R4RK1 w kq - 2 15 -r1bqkr2/p1pp1ppQ/1pnbp3/3n2P1/7P/1P2P3/PBPP1P2/RN2KBNR w KQq - 1 9 -rn1q1bnr/pbppk3/1p3pB1/4p1pp/7Q/1P2PP2/PBPP2PP/RN2K1NR w KQ - 2 9 -2krr3/ppqb4/1np2b1p/4P1p1/P3Q1N1/1PP4P/3B1PP1/RN3RK1 b - - 2 19 -2kr3r/1pp1q1p1/p1n5/3p1Qp1/6P1/3P1B1P/PPP5/2K1R2R b - - 1 21 -rn1qkb1r/3b1ppp/pp1ppn2/2p5/3P4/1QP1P3/PP3PPP/RNB1KBNR w KQkq - 2 8 -r2q1rk1/1bp2ppp/pp1p3n/3Pp3/2P1Pn2/1PB2N1P/P1Q1Bb2/R2K1N1R w - - 0 19 -r1bq1rk1/pp1n1ppp/2nbp3/3p4/3P1P2/2P1BN2/PPQN2PP/2KR1B1R b - - 6 10 -r4rk1/p1p1bppp/3p1n2/2pPp3/1qP1P3/1PN2B1P/P2Q1PP1/R3K2R w KQ - 3 15 -rnb1kbnr/pp2qp1p/2pp2p1/8/3NP3/2NB4/PPP2PPP/R1BQ1RK1 b kq - 1 7 -r2qkb2/pbpp1p1p/1p2p2p/7Q/2PnP3/N2B4/PP3P1P/2KR2N1 b q - 1 11 -rn1q1rk1/1b2bppp/p3pn2/1pP5/4P3/2NB1N2/PPQ2PPP/R1B2RK1 b - - 0 11 -r2q1b1r/pppb1kpp/2np4/8/4Pp2/8/PPPP2PP/RNBQ1RK1 w - - 0 9 -rn4kr/1b4qp/2pNpnp1/p3N3/1p6/7Q/PPP1BPPP/3R1RK1 w - - 10 18 -rn3r2/pp1p2kp/3N2p1/4p3/2N1n3/2P1P3/PP4PP/R2Q1K2 w - - 0 18 -r2qr1k1/1p3ppp/5b2/p7/2P2Q2/P7/R3BP1P/1b2K1R1 w - - 0 19 -r1bqkb1r/1pp2ppp/p1n1p3/8/2BPn3/P3PN2/1P3PPP/RNBQ1RK1 w kq - 2 8 -r1b1k2r/p1p2ppp/pn1bq3/4p3/4P3/PPN1B2P/2Q2PP1/R4RK1 w kq - 1 17 -rnbq1rk1/pp2bppp/3p1n2/2pPp3/2P1P3/6P1/PP2NPBP/RNBQ1RK1 b - - 0 9 -r4rk1/p3np1p/np2p1p1/2ppq3/5N2/P1B1P3/1PP2PPP/R2Q1RK1 b - - 1 16 -2kr3r/pppqp1bp/3pp3/4n2Q/4P3/3P4/PPP2PP1/R1B1KB1R w KQ - 1 13 -r2q1rk1/ppp2pbp/2npbnp1/4p3/2B1P3/2PP3P/PP3PPN/RNBQ1RK1 w - - 6 9 -r1bq1rk1/1p3pbp/p1nppnp1/6B1/2B1P3/5N1Q/PPP2PPP/RN3RK1 w - - 6 11 -r4rk1/p1p2ppp/1p2p3/3pP3/3PbR1q/8/PPPB2PP/R2Q2K1 b - - 4 14 -r1b1k2r/pp3ppp/8/2p5/2PqP1P1/P2P1p1P/3K3R/R4BN1 b kq - 3 20 -r4rk1/2pq2p1/p1ppb2p/4pp2/4Pn2/1PBP2QP/P1P2PPK/R4RN1 b - - 1 16 -N7/pp2k2p/4b1p1/8/3n4/PP6/2P1QKPP/4RBNR w - - 3 21 -r3k1nr/3b1ppp/BQ1bpq2/3p4/3P4/2P1P3/PP3PPP/RNB1K1NR b KQkq - 0 11 -2rqk2r/1p3pp1/p2b1n2/3pn2p/1Pp2P2/P1P1P2P/3NB1P1/R1BQ1RK1 b k - 0 14 -r1b2rk1/ppp2ppp/4pq2/2P5/5Q2/2N3P1/PP3K1P/R4B1R b - - 2 16 -r4rk1/pp3ppp/nqp1pn2/3p4/3P2b1/P1B2NP1/1PP1PPBP/R2QK2R b KQ - 0 11 -1r2r1k1/pb3p1p/3bp1pB/8/3pB2q/1P4P1/P1P1QP1P/3R1RK1 b - - 0 21 -r1b1k2r/4bpp1/pqp1p3/2ppP3/5P1p/2NP1N1P/PPPB1QP1/2K4R w kq - 0 15 -r2q1rk1/1b2bppp/2n1p3/p7/2PP4/2NBnN2/PP1Q1PPP/R3K2R w KQ - 0 12 -r4r1k/pppq2pp/3p4/4p1B1/2B1PnQ1/3P3P/PPP2P2/R4R1K b - - 4 18 -3r1bk1/pp1n1p1p/2p1bnp1/4p3/2P1P3/1P2BPP1/P1N1N1BP/5RK1 w - - 1 18 -rnb1k2r/1pp1n3/pb4q1/3pPpB1/3p1P2/3B1NQP/PPP3P1/R3K2R b KQkq - 3 16 -rnbqkb1r/ppp3pp/5n2/3p1p2/3Pp3/1P2P3/PBPN1PPP/RN1QKB1R w KQkq - 0 7 -r1b2r2/p3k3/2p2b1p/1pn1p3/4P3/1PN2N1P/P1P2PP1/1K1R1R2 b - - 5 19 -r1b1r1k1/4bpp1/p2p1n1p/qp2pN2/2PpPP2/1P1P2PN/P5BP/R2Q1K1R b - - 0 15 -r3r1k1/p2nR1pp/5p2/3p4/3P4/2P5/PP3PPP/R1B3K1 w - - 2 21 -4kb1r/5p2/p1rp1B1p/4pp2/N7/8/PP3PPP/R4RK1 b k - 1 20 -r2qk1nr/pbpnp1Bp/1p1p1pp1/8/2P1P3/1P1P1P2/P5PP/RN1QKBNR w KQkq - 0 8 -r1bqk2r/pp2pp2/3p1n1b/2p2P2/2P1P2P/2N3Q1/PPP3P1/R1B1K2R w KQkq - 3 14 -r4rk1/2pnq1pp/p4p2/1pp1p3/4P3/3PB1QP/PPP2PP1/R4RK1 w - - 0 16 -r2qkb1r/ppp2pp1/2n2n2/3p3b/3Pp3/PPN1P2P/1BPQNP2/R3KB1R b KQkq - 1 11 -r1bqkb1r/ppn2pp1/3p1n1p/2p1p3/4P3/P1NP1NPP/1PP2PB1/R1BQK2R b KQkq - 2 8 -r4rk1/pp3ppp/3pb3/5n2/4QP1q/2P1P3/PP2K1BP/6RR b - - 3 21 -r4rk1/pp3ppp/3q1n2/2pP4/2B5/3Q2Pb/PPP1NP2/3RR1K1 b - - 1 17 -r1bqk2r/p1pp1ppp/1pnb1n2/4p3/3PP3/P1P2N2/1P2BPPP/RNBQK2R b KQkq - 0 7 -r3k2r/pppq2pp/2nbb3/5p2/2PP4/1P1B1N2/PB2Q1PP/R4nK1 w kq - 0 15 -r2qk2r/p1pbbppp/1pn2n2/4p3/2PP4/4P1P1/PB1NNPBP/R2Q1RK1 b kq - 1 12 -r2q4/ppp2kpp/2n1b3/2b1p3/Q3p1nP/8/PPPP1P2/RNB1K2R w KQ - 0 12 -rn2kbnr/ppp2ppp/8/4P3/8/6Pb/PPP1N2P/RNBQKB1q w Qkq - 1 8 -r2qr1k1/pp3ppp/1bb2n2/3p4/5B2/1PNQ4/P1P1BPPP/R4RK1 w - - 1 15 -rnb2rk1/p4ppp/2pp3n/1p5q/1P1p1N2/P2P3P/B1P2PP1/R1B2RK1 w - - 0 15 -r3kb1r/pbppqp2/1pn4p/8/4p3/2NPQN1B/PPP4P/2KR3R w kq - 0 14 -2rqk2r/1b2pp1p/p1np1npQ/1p4N1/4P3/1BN5/PPP2PPP/R4RK1 b k - 2 15 -r5k1/pp3ppp/2nN1n2/q2p1b2/8/2P1r3/PP2B1PP/R2QK2R b KQ - 1 16 -r2qk2r/4b2p/p2p1pbp/2pP4/1p4PN/2N4P/PPP1QP2/2KRR3 w kq - 0 19 -r2qkb1r/pppb1pp1/2np1n1p/4p3/2B1P3/2PPBN2/PP3PPP/RN1Q1RK1 b kq - 2 7 -r4rk1/p2qbppp/2pp4/2pPp3/2P5/1P3N2/P4PPP/R1BQK2R w KQ - 0 13 -r3kbnr/pp2pppp/n1p5/8/3P2P1/2P5/PP1KQ1BP/R1B3q1 w kq - 2 12 -r2qk2r/3bpp2/p2p1bpp/n2Q4/4P3/2NB1N2/PPP2PPP/2KR3R b kq - 2 13 -r4rk1/2p1b1p1/pn5p/1pp1P3/2Pp1P2/6P1/PP1N3P/R1B2RK1 w - - 1 20 -r4rk1/p2bbppp/8/Qp2N3/4n3/4B2P/PPP2PP1/1K5R b - - 0 16 -6rk/ppp2p1p/1b1p1p2/4pNq1/1Pb1P3/2P2QPP/P4P2/R3K2R w KQ - 0 20 -r2qkb1r/ppp2pp1/2np1nb1/4p2p/4P1P1/3P3P/PPP1NPB1/RNBQ1RK1 w kq - 0 9 -r2q1rk1/pb1n1pbp/1p1pp1p1/4P3/2Pp1P2/1P3N2/PB2B1PP/R3QRK1 w - - 0 15 -rnbqk1nr/pp1p1ppp/1bp5/4p1N1/1PBPP3/2P5/P4PPP/RNBQK2R b KQkq - 1 7 -3r1rk1/pp3ppp/2p2b2/3pn3/4bN2/PP2P1PP/2PQ1PB1/1R1R2K1 b - - 3 19 -r1b1kr2/ppppqpQp/8/n2PN3/8/8/P4PPP/RN1K1B1R b q - 2 15 -rnbqk1nr/ppp2pbp/4p1p1/3pN3/3P4/3BPQ2/PPP2PPP/RNB1K2R b KQkq - 7 7 -2rqk2r/1b2ppbp/p2p1np1/1p2P3/3N1P2/1BN1Q3/PPP4P/2KR3R b k - 0 15 -r2q1rk1/ppp2ppp/2np1n2/b7/2BPP1b1/P1N2N2/1P3PPP/R1BQR1K1 w - - 1 11 -r1bq1rk1/pp1pbppp/2n2n2/8/3NP3/6P1/PP3PBP/RNBQ1RK1 b - - 0 9 -r4rk1/ppp2pp1/4p1bp/3p4/3P1PP1/NPn1PN1P/P4K1R/R7 b - - 1 21 -rnb1kbnr/pp1p2pp/4qp2/2pNP3/4P3/5N2/PPP2PPP/R1BQKB1R w KQkq - 2 7 -r1b1k2r/ppP2ppp/1n1p4/2b1p2Q/8/3PB3/PPP2PqP/R3KR2 b Qkq - 1 13 -r3kb1r/p2b1pp1/7p/2p5/4P3/2P2P2/PP3P1P/R3KB1R b KQkq - 0 15 -2b1k2r/2qpbpp1/4pn1p/2p1P3/1n6/2NPBN2/1PP2PPP/3QK2R b Kk - 0 14 -r1bqk1nr/pp1p1ppp/4p3/4P3/1n6/8/PPPB1PPP/RN2KBNR b KQkq - 1 7 -r2q1rk1/2p1b1pp/2ppb3/p3p3/3P4/2nQ4/PPP2PPP/R3KB1R w KQ - 0 14 -1r1q1rk1/4ppbp/5np1/2pPp3/2B1P3/1P3Q1P/3N1PP1/3R1RK1 w - - 0 18 -Nnbk1b1r/1p1n1ppp/p7/4p3/2Bp4/5N2/PPP2PPP/R2Q1RK1 w - - 0 15 -r2qkb1r/1bppnpp1/p3p2p/1p6/3PP3/1PN2N2/1PP2PPP/R1BQR1K1 b kq - 1 10 -rnb2rk1/3p1ppp/2p5/1p2P3/p2N1P2/1BP5/P5PP/R3K2R w KQ - 0 16 -rn1qkbnr/pbpp4/1p3p2/3p3p/2P3N1/2N1P3/PP3PPP/R1BQKB1R w KQkq - 0 9 -r1bqk2r/ppp1bpp1/3p3p/2nPpP2/2P3P1/7N/PP5P/RNBQ1RK1 w kq - 1 12 -2kr1br1/ppp3pp/2np4/5p2/8/P1n2PP1/1BK1P2P/3R1BNR w - - 0 19 -r2q1rk1/pp3ppp/3p2b1/2pPn1b1/4PN2/2P3P1/PP4BP/R1BQ1RK1 w - - 3 15 -rn1qkb1r/ppp2ppp/8/3pPb2/2PNn3/5P2/PP2Q1PP/RNB1KB1R b KQkq - 0 8 -r3k2r/pp2n3/2pq3p/5bp1/8/2P5/PP2QPPP/2KR3R w kq - 0 17 -r2q1rk1/ppp1ppbp/2np1np1/8/3PP1b1/2P2N2/PPQ1BPPP/RNB2RK1 b - - 0 8 -r1bqk1nr/ppp2pQp/2n2b2/3p4/8/2P5/PP2PPPP/RNB1KBNR w KQkq - 1 7 -rn1qkb1r/ppp3pp/4Nn2/5p2/4p3/2N5/PPPP1PPP/R1BQK2R b KQkq - 0 7 -r4r2/p1p1q1pk/1p2p2p/3n1p2/2P1Q3/3P3P/PBP2PP1/4RRK1 w - - 0 20 -r1bqkb1r/p1p2ppp/2Q2n2/3pp3/8/2P1P3/PP1P1PPP/RNB1KBNR b KQkq - 0 7 -r4k2/ppp2ppp/5n2/1P4q1/8/2P2QPb/P2P1K2/RN2R3 b - - 0 20 -2kr4/1pp2pp1/p3pn1p/8/P3N1P1/1P3r1P/5PK1/3R1R2 b - - 1 20 -r1bqk2r/pp2b2p/5p2/2p4Q/3pBB2/8/PPP2PPP/R3R1K1 b kq - 3 15 -1r1q1rk1/1pp2pb1/p2p4/3B4/3pP1QP/P2P4/1PP2PP1/R3K2R w KQ - 0 18 -r2qk1nr/pb3pbp/np1pp1p1/2pP4/2P1P3/PPN2N2/4BPPP/R1BQK2R b KQkq - 0 9 -r1bqk2r/ppp1ppbp/2n2np1/3p4/3P4/2N1PN2/PPP1BPPP/R1BQ1RK1 b kq - 3 6 -3qk2r/1br1ppbp/p2p1np1/1p6/3NP1P1/1PN1BP2/P1PQ3P/1K1R3R w k - 1 16 -r4r2/pp2q1bk/2ppb1pp/4pp2/4PP2/1B1PB2P/PPP1Q1P1/R4RK1 w - - 0 17 -1r2k2r/pp1nppb1/6bp/4P1p1/3N4/2N2P2/PPP3PP/2KR1B1R w k - 1 16 -r1bq1rk1/p3bppp/2p2n2/3p4/8/2P3P1/PP3PBP/RNBQ1RK1 w - - 0 11 -r3k2r/pppqbppp/3pbn2/4p3/2P1P3/Pn1P1N1P/1PNB1PP1/1R1QKB1R b Kkq - 4 10 -rnb1kbnr/1pqp1pp1/p3p2p/8/3NP3/2NBB3/PPP2PPP/R2QK2R b KQkq - 3 7 -r1bq1rk1/ppp1np2/1n1pp1p1/4P1Np/3P3Q/1PN5/P1P2PPP/R3K2R b KQ - 0 13 -r2qkb1r/1bpp2pp/pp3p2/2n1p3/1PP5/P1N1BN2/2P1QPPP/R3R1K1 b kq - 1 14 -r1bqk1nr/pp1nbppp/2ppp3/8/3PP3/2NBBN2/PPP2PPP/R2QK2R b KQkq - 5 6 -rn2kbnr/pp1b1ppp/3p4/8/2B1P3/5N2/PP3PPP/RNBQK2R b KQkq - 0 7 -r1bq3r/p3nkb1/1p2pn1p/2ppP1p1/P2P1p2/1PPB1P2/2QB2PP/RN2K2R w KQ - 0 19 -r1bq1rk1/ppp1nppp/3p4/n1b1p1B1/2B1P3/2NP1N2/PPP2PPP/R2Q1RK1 w - - 2 8 -r1bqkb1r/pp1p1ppp/2n1pn2/8/2BNP3/2P5/PP3PPP/RNBQK2R b KQkq - 0 6 -r3kb1r/p1pn1pp1/1p2p2p/3q4/2P5/3PBN2/PP3PPP/R2Q1RK1 b kq - 0 11 -N1b4r/pp3pb1/5k1p/8/5p2/3B4/PPP3PP/3R1RK1 b - - 3 19 -r1b2rk1/p3qpp1/1p1N3p/2bQ4/3B1P2/PP4P1/2P1P2P/2KR1BNR b - - 0 16 -rn5r/pp3k2/2ppbb1p/4p1p1/4P3/2NP1P2/PPP1Q2P/2K2R2 w - - 1 19 -r2q1rk1/pp3pp1/2p2n1p/4bb2/2B4B/2N1P3/PP3PPP/R2Q1RK1 w - - 2 14 -rn2k2r/pp3p1p/3pp1pn/8/3P3Q/2P3N1/PP3PqP/2KR2NR b kq - 3 14 -rn1qk2r/pp3ppp/2p5/3p4/3Pn1b1/2PBPN2/P4PPP/R1BQR1K1 w kq - 6 11 -4rrk1/pp3p1p/2n3p1/3qp3/3b1P2/1P1N2QP/P1P3P1/4RR1K b - - 0 21 -rnb1k2r/pp3ppp/2pbpn2/q7/8/P1NP4/BPP2PPP/R1BQK1NR w KQkq - 1 8 -r4q1r/4k3/p2p3p/1p1np1p1/8/P2PB1Q1/1P3PPP/R4RK1 w - - 0 21 -rnbqk2r/1pp2ppp/4pn2/p7/1bpP1B2/P1N1P3/1P3PPP/R2QKBNR w KQkq - 0 7 -3q1rk1/Q2b1ppp/3p1b2/3P4/8/4B1P1/P3rPBP/1R3RK1 w - - 2 19 -2r2r2/pb3pk1/1p2pn1N/2bq2B1/8/2PB4/PP3PPP/R2QR1K1 w - - 1 20 -r1b1kb1r/3p1ppp/2p2n2/pp2p3/2B1P3/P1NP4/1PP2PPP/R1B1K2R w KQkq - 0 10 -r2qkb1r/2p3pp/ppn2p2/3n4/2BP4/4PQ1P/PP3PP1/R1B2RK1 b kq - 1 12 -3qkb1r/2p1pppp/p2p1n2/2P5/4N1b1/1P3N1P/P1P2PP1/R1BQ1RK1 b k - 0 11 -r2qkb1r/ppp2ppp/2npbn2/8/2BNP3/2N5/PPP2PPP/R1BQK2R w KQkq - 2 7 -r2qkbnr/p4ppp/2p1p3/3pP3/8/2N5/PPP2PPP/R1BQK2R b KQkq - 1 9 -r1b4r/2pkbppp/p4n2/3p4/3N1B2/3P4/PPP2PPP/RN2R1K1 w - - 5 16 -r1bqkb1r/1p3ppp/p1nppn2/2p5/2B1P3/P2P4/1PP2PPP/RNBQK1NR w KQkq - 0 7 -1kr2bnr/ppq1p3/2b2p1p/6p1/3P4/2Q1BN2/PPPN1PPP/R4RK1 w - - 4 13 -rnb1k2r/pp1p1p1p/4p1p1/B7/6Q1/P7/2P1NPPP/R3K2R b KQkq - 0 14 -r4rk1/ppqn1ppp/2p1pn2/2b5/2P3b1/1P2PNP1/P2N1PBP/R1BQ1RK1 w - - 3 11 -rnb1k1nr/ppp1bpp1/3p2qp/4P3/3P4/2P2NB1/PP3PPP/RN1QKB1R w KQkq - 0 10 -r1bqk2r/pp2bppp/3ppn2/8/3PP3/6P1/PP3PBP/RNBQ1RK1 b kq - 0 9 -rnbqkb1r/1p3p1p/p2p1np1/2pP2B1/4P3/2N5/PP3PPP/R2QKBNR w KQkq - 0 8 -rn1qk2r/pbpp1p2/1p2p1pp/8/4PP1P/2PPQN2/P1P3P1/2KR1B1R b kq - 0 11 -r4rk1/1Q3ppp/p1nppn2/q7/p2P4/3BPN2/3N1PPP/R1R3K1 b - - 0 15 -2r3k1/p4ppp/4p3/1PP5/7N/7P/1P3PP1/R1BNK2R b KQ - 0 19 -r1bq1rk1/p4p1n/2p1p1p1/3p2Np/2pP1P1Q/P6P/1PP1N1P1/R4RK1 b - - 0 18 -r1bqkbnr/pp1p1ppp/8/n3p3/1P2P3/2Np4/P4PPP/R1BQK1NR w KQkq - 0 8 -r1b1kb1r/1pppqppp/p4n2/3N4/2BpP3/P4Q2/1PPP1PPP/R1B1K2R b KQkq - 1 8 -r2q1rk1/p3bppp/1pb1p3/n1p1P3/2Pp1P2/3PnNP1/PP1NBK1P/R2Q3R b - - 8 20 -rnb1k2r/1p1p1pb1/pq2p2p/4P1pQ/3N4/2N3B1/PPP2PPP/2KR1B1R b kq - 2 11 -rnbqk2r/1p1p1ppp/p3pn2/1N6/1b2P3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 7 -r3kbnr/pp3ppp/8/2p5/1PqBp3/P1NnP1P1/2QP1P1P/2R2RKB w kq - 0 18 -r2qkb1r/1pp5/p1np1p1p/4p2b/2B5/3PBN1P/PPP1QPP1/R3K2R w KQkq - 0 12 -r1bqk1nr/2p3pp/1b3p2/pPp1p3/P1PP4/N5P1/3PNP1P/R1BQ1RK1 b kq - 0 13 -r1bqkb1r/ppp3p1/2np1B1p/4p3/2B1P3/P4N2/1PP2PPP/RN1QK2R b KQkq - 0 8 -rnbqr3/pp2k2p/5p2/bNBB2p1/6Q1/2P4P/PP3PP1/RN2K2R b KQ - 0 14 -r1b1kbnr/1pp2ppp/p1p5/8/4q3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 7 -rnbqk2r/ppp1bppp/3p1n2/3Pp3/2P1P3/3B1N2/PP3PPP/RNBQ1RK1 b kq - 4 7 -rnb2rk1/pppp1ppp/5q2/b7/3P2P1/P2BP3/1P1N1K1P/R1BQ2NR w - - 1 10 -rn1qk1nr/pbpp1pbp/1p2p1p1/4P3/3P4/2N1BN2/PPP2PPP/R2QKB1R b KQkq - 0 6 -1r1q1rk1/pb2npbp/1p2p1p1/2ppP3/3P1PPN/2PB4/P2N1R1P/1R1Q2K1 b - - 0 17 -r1bq1rk1/ppp1bppp/2np1n2/6B1/Q1B1P3/2N5/PPP2PPP/2KR2NR b - - 1 8 |
