Riguardo alla tua ultima domanda:
3) Posso comunque trovare facilmente raccolte di giochi di pedoni quadruplicati ovunque online?
Non c'è bisogno di guardare online, puoi farlo da solo.
Ho trovato 3 esempi aggiuntivi dopo aver analizzato circa 300000 giochi di un TWIC DB:
1)
[fen ""] [Evento "FSIM May"] [Sito "Budapest HUN"] [Data "1996.05.13"] [Round "11"] [White "Lochte, T."] [Black "Gross , S. "] [Risultato" 0-1 "] [WhiteElo" 2220 "] [BlackElo" 2290 "] [PlyCount" 54 "] [EventDate" 1996. ??. ?? "] [SourceDate" 2011.01.01 " ] [StartPly "54"] 1. e4 c5 2. d4 cxd4 3. c3 dxc3 4. Nxc3 d6 5. Bc4 Nc6 6. Nf3 e6 7. OO Bd7 8. Bf4 Qb8 9. Nb5 Ne5 10. Nxe5 dxe5 11. Bg3 Nf6 12. Qe2 a6 13. Nd4 Bd6 14. Rad1 Bc7 15. Nf3 Bc6 16. Bh4 h6 17. Bxf6 gxf6 18. Nh4 h5 19. Qf3 Bd8 20. Qg3 Qc7 21. Qg7 Rf8 22. f4 exf4 23. Rfe1 Qe5 24 . Bd5 Qg5 25. Bxc6 + bxc6 26. Nf5 Bb6 + 27. Kh1 exf5 0-1
2)
[fen ""] [Evento "8th World Seniors "] [Sito" Gries kirchen GER "] [Data" 1998.11.09 "] [Round" 2 "] [White" Wegener, H. "] [Black" Knebel, W. "] [Risultato" 0-1 "] [ECO" B95 "] [WhiteElo "2115"] [PlyCount "54"] [EventDate "1998. ??. ??"] [SourceDate "2011.01.01"] [StartPly "48"] 1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. Bd3 Be7 8. OO b5 9. a4 b4 10. Na2 a5 11. e5 dxe5 12. Bxf6 gxf6 13. Qf3 Ra7 14. Bb5 + Kf8 15. Nf5 exf5 16. Qe3 Qd4 17. Qh6 + Kg8 18. c3 Qg4 19. Qe3 Rc7 20. cxb4 axb4 21. Rfc1 Rxc1 + 22. Rxc1 Kg7 23. h3 Qg5 24. f4 exf4 25. Qxe7 Be6 26. h4 Qg3 27. b3 f3 0-1
3)
[fen ""] [Evento "Open"] [Sito "Pula CRO"] [Data "2001.05.24"] [Round "7"] [Bianco "Molnar, Be"] [Nero "Polak, T."] [Risultato "1-0"] [ECO "D42"] [WhiteElo "2352"] [BlackElo "2503"] [PlyCount " 80 "] [EventDate" 2001.05.18 "] [SourceDate" 2011.01.01 "] [StartPly" 66 "]
1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. Nc3 e6 6. Nf3 Be7 7. cxd5 Nxd5 8. Bd3 Nc6 9. OO OO 10. Re1 Bf6 11. Be4 Nce7 12. Qd3 h6 13. Ne5 Nxc3 14. Qxc3 Nf5 15. Be3 a5 16. Rad1 a4 17. Ng4 Bg5 18. Bxf5 exf5 19. Bxg5 hxg5 20. Ne5 Qa5 21. Qc4 Be6 22. d5 Rac8 23. b4 axb3 24. Qxb3 Rc5 25. Ng6 Rc3 26. Qxb7 Rc7 27. Qb1 fxg6 28. Rxe6 Kh7 29. d6 Rd7 30. Qb3 Rfd8 31. g4 Qc5 32. Qd5 Qxd5 33. Rxd5 fxg4 34. a4 Ra8 35. Re7 Rdd8 36. a5 Ra6 37. d7 Ra7 38. Kg2 Raa8 39. Rxg5 Ra7 40. Rd5 Raa8 1-0
In breve, come l'ho fatto in Python e usando python-chess per leggere il DB PGN :
Scorro ogni gioco del DB mappando ogni posizione al suo FEN, quindi espando il FEN sostituendo i numeri con una quantità corrispondente di trattini "-". Nella notazione FEN i numeri tra il rango "/" - le sezioni separate indicano quanti quadrati vuoti ci sono prima che un pezzo raggiunga una data riga) quindi ad esempio, questo FEN
'3r4 / 3PR1pk / r5p1 / P2R2p1 / 6p1 / 8 / 5P1P / 6K1 '
diventa:
' --- r ---- / --- PR -pk / r ----- p- / P - R - p - / ------ p - / -------- / ----- PP / ---- --K- '
che puoi facilmente fare come segue:
(dopo aver rimosso tutto dopo il primo spazio fen = fen [0: fen. index ('')]
)
def isinteger (s): try: int (s) return True eccetto ValueError: return False per el in fen: if isinteger (el): fen = fen.replace (el, int (el) * '-')
Quindi sappiamo che vogliamo trovare righe consecutive con pedine (dello stesso colore) sugli stessi file, quindi se dividi la stringa FEN secondo i separatori "/" in una lista ( splitfen = fen.split ('/')
), devi far corrispondere lo schema con la lettera 'p' (che denota pedoni neri in FEN, allo stesso modo, "P" per bianco) si trova in 4 elementi consecutivi della lista e nella stessa posizione delle stringhe di dimensione 8 (per assicurarti che siano sullo stesso file) che puoi fare in molti modi diversi:
# (la funzione che trova tutti i pattern consecutivamente corrispondenti per t) def checkpattern (sp, t): start = [sp [0]] for i in sp [1:]: if any (all (t == c per c in b) per b in zip (* (start + [i]))): start.append (i) else: if len (start) > 1: yield start start = [i] returnsplitfen = fen. split ('/') forblack = list (checkpattern (splitfen, 'p')) forwhite = list (checkpattern (splitfen, 'P')) total = forblack + forwhite for el in totale: if len (el) == 4 : # (dato che vogliamo pedoni quadruplicati) res = True break
Tutti questi tipi di query di ricerca sui DB degli scacchi possono essere facilmente eseguiti con un po 'di scripting intorno al FEN per individuare i modelli desiderati (siano essi strutture di pedoni, numero di pezzi, ecc.).