Pytanie:
Która gra zawodowa ma najszybszą sekwencję, począwszy od pierwszego ruchu, a skończywszy na poczwórnych pionkach?
Rewan Demontay
2019-04-10 09:01:52 UTC
view on stackexchange narkive permalink

Z tego, co znalazłem na tej witrynie, najkrótsza sekwencja, począwszy od pierwszego ruchu w profesjonalnej grze w szachy, aż do poczwórnych pionków, to 18 ruchów. Wspomniana gra to:

  [Tytuł "Zheliandinov-T. Sereteli, 35-te Mistrzostwa ZSRR, Charków, 1967"] [FEN "2r1kbr1 / pp3pqp / 5p2 / 3N1p2 / 5p2 / 6P1 / PPn1BR1P / R2Q2K1 w - - 0 1 "]  

Koncentruję się na trzech punktach.

1) Czy jest to najkrótsza znana gra, która spełnia moje wymagania?

2) Nie mogę nigdzie znaleźć wspomnianej gry. Jeśli możesz go znaleźć, umieść go w odtwarzaczu wraz z linkiem.

3) Czy w ogóle mogę łatwo znaleźć kolekcje poczwórnych pionków w dowolnym miejscu online?

Trzy odpowiedzi:
#1
+5
Ellie
2019-04-11 15:15:04 UTC
view on stackexchange narkive permalink

Odnośnie twojego ostatniego pytania:

3) Czy mimo wszystko mogę łatwo znaleźć kolekcje poczwórnych pionków w dowolnym miejscu w Internecie?

Nie trzeba szukać online, możesz to zrobić samodzielnie.

Znalazłem 3 dodatkowe przykłady po przeanalizowaniu około 300000 gier z TWIC DB:

1)

  [fen ""] [Event "FSIM May"] [Site "Budapest HUN"] [Date "1996.05.13"] [Round "11"] [White "Lochte, T."] [Black "Gross , S. "] [Wynik" 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. Sxc3 d6 5. Bc4 Nc6 6. Sf3 e6 7. OO Bd7 8. Gf4 Hb8 9. Sb5 Ne5 10. Sxe5 dxe5 11. Bg3 Sf6 12. He2 a6 13. Sd4 Gd6 14. Rad1 Bc7 15. Sf3 Bc6 16. Bh4 h6 17. Gxf6 gxf6 18. H4 h5 19. Hf3 Gd8 20. Hg3 Hc7 21. Hg7 Wf8 22. f4 exf4 23. Wfe1 He5 24 . Gd5 Hg5 25. Gxc6 + bxc6 26. Sf5 Gb6 + 27. Kh1 exf5 0-1  

2)

  [fen ""] [Event "8th World Seniors "] [Strona" Gries kirchen GER "] [Data" 1998.11.09 "] [Round" 2 "] [White" Wegener, H. "] [Black" Knebel, W. "] [Wynik" 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. Sxd4 Sf6 5. Sc3 a6 6. Bg5 e6 7. Bd3 Be7 8. OO b5 9. a4 b4 10. Na2 a5 11. e5 dxe5 12. Gxf6 gxf6 13. Hf3 Ra7 14. Gb5 + Kf8 15. Nf5 exf5 16. He3 Hd4 17. Hh6 + Kg8 18. c3 Hg4 19. He3 Wc7 20. cxb4 axb4 21. Wfc1 Wxc1 + 22. Wxc1 Kg7 23. h3 Hg5 24. f4 exf4 25. Hxe7 Be6 26. h4 Hg3 27. b3 f3 0-1  

3)

  [fen ""] [Event "Open"] [Site "Pula CRO"] [Date "2001.05.24"] [Round "7"] [Biały "Molnar, Be"] [Czarny "Polak, T."] [Wynik "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. Sc3 e6 6. Nf3 Be7 7. cxd5 Nxd5 8. Bd3 Sc6 9. OO OO 10. Re1 Bf6 11. Be4 Nce7 12. Hd3 h6 13. Ne5 Sxc3 14. Hxc3 Sf5 15. Be3 a5 16. Rad1 a4 17. Sg4 Bg5 18. Gxf5 exf5 19. Gxg5 hxg5 20. Ne5 Qa5 21. Hc4 Be6 22. d5 Rac8 23. b4 axb3 24. Hxb3 Rc5 25. Sg6 Rc3 26. Hxb7 Wc7 27. Hb1 fxg6 28. Wxe6 Kh7 29. d6 Wd7 30. Hb3 Wfd8 31. G4 Hc5 32. Hd5 Hxd5 33. Wxd5 fxg4 34. a4 Ra8 35. Re7 Rdd8 36. a5 Ra6 37. d7 Ra7 38. Kg2 Raa8 39. Rxg5 Ra7 40. Rd5 Raa8 1-0  

Krótko, jak zrobiłem to w Pythonie i używając python-chess do czytania PGN DB :

Przeglądam każdą grę DB, mapując każdą pozycję na jej FEN, a następnie rozszerzam FEN, zastępując cyfry odpowiednią ilością myślników „-”. W notacji FEN liczby pomiędzy rzędem '/' - sekcje oddzielone oznaczają, ile pustych kwadratów jest przed osiągnięciem elementu w danym wierszu), więc np. Ten FEN

  '3r4 / 3PR1pk / r5p1 / P2R2p1 / 6p1 / 8 / 5P1P / 6K1 ' 

staje się:

 ' --- r ---- / --- PR -pk / r ----- p- / P - R - p - / ------ p - / -------- / ----- PP / ---- --K- ' 

co możesz łatwo zrobić w następujący sposób:

(po usunięciu wszystkiego po pierwszej spacji fen = fen [0: fen. index ('')] )

  def isinteger (s): try: int (s) return True oprócz ValueError: return Falsefor el in fen: if isinteger (el): fen = fen.replace (el, int (el) * '-')  

Wtedy wiemy, że chcemy znaleźć kolejne wiersze zawierające pionki (tego samego koloru) na tych samych plikach, więc jeśli podzielisz ciąg FEN zgodnie z separatorami '/' na listę ( splitfen = fen.split ('/') ), musisz dopasować wzór do litery 'p' (oznaczającej czarne pionki w FEN podobnie „P” dla biały) występuje w 4 kolejnych elementach listy i na tej samej pozycji łańcuchów o rozmiarze 8 (aby upewnić się, że są w tym samym pliku), które można obchodzić się na wiele różnych sposobów:

  # (funkcja znajdująca wszystkie kolejno pasujące wzorce dla t) def checkpattern (sp, t): start = [sp [0]] for i in sp [1:]: if any (all (t == c for c in b) for b in zip (* (start + [i]))): start.append (i) else: if len (start) > 1: yield start start = [i] returnplitfen = fen. split ('/') forblack = list (checkpattern (splitfen, 'p')) forwhite = list (checkpattern (splitfen, 'P')) total = forblack + forwhite dla el łącznie: if len (el) == 4 : # (ponieważ chcemy poczwórnych pionków) res = True break  

Wszystkie tego rodzaju zapytania wyszukiwania w bazie danych szachowych można łatwo wykonać za pomocą odrobiny skryptów wokół FEN, aby znaleźć pożądane wzorce (czy to struktury pionków, liczba figur itp.).

Wygląda to bardziej stabilnie niż próba wyliczenia, kiedy gracz czterokrotnie zwiększy pionki na podstawie samego wyniku gry, co mogłem próbować zrobić. Moglibyśmy przypisać wartości słownikowe black ['a7'] = ... = black ['h7'] = 1 na początku każdej gry, a następnie przeanalizować każde zbicie pionka lub przez niego. To byłoby interesujące ćwiczenie, ale twoja droga po prostu ma sens.
#2
+4
kentdjb
2019-04-21 12:07:23 UTC
view on stackexchange narkive permalink

Pomyślałem, że byłoby interesujące wypróbowanie odmiany podejścia @ Phonon i potraktowanie wyszukiwania jako zasadniczo zadania polegającego na dopasowywaniu wzorców przy użyciu wyrażeń regularnych. Tak więc, po wykonaniu tego samego rozwinięcia FEN i wyodrębnieniu środkowych sześciu rang, przekazałem wynikowy ciąg do funkcji search pakietu re Pythona, szukając wystąpień pionka znaki oddzielone dowolnymi ośmioma znakami (nie usunąłem separatorów rang z rozwiniętego FEN):

  # Poszukaj gier w podanym pliku, # które mają 4 sąsiadujące ze sobą pionki w kolumnie. def process_file (file): file = open (file, encoding = "ISO-8859-1") # Tworzą wyrażenia regularne dla obu kolorów. white_pattern = "P ........ P ........ P ........ P" black_pattern = "p ........ p ..... ... p ........ p "game = chess.pgn.read_game (file) while game: board = game.board () for move in game.mainline_moves (): board.push (move) fen = board.fen () # Rozwiń puste kwadratowe cyfry w FEN do kropek # i wyodrębnij tylko pozycję tablicy. pieces = "" .join (["." * int (c) if c.isdigit () else c for c in fen]) [: 71] # Porzuć pierwszą i ostatnią pozycję, ponieważ nie mogą zawierać pionków. match_area = pieces [9: -9] # Poddaj się, jeśli żadna ze stron nie ma wystarczającej liczby pionków. if match_area.count ('P') < 4 and match_area.count ('p') < 4: break if (re.search (white_pattern, match_area)): print (game, "\ n") break if (re. search (black_pattern, match_area)): print (game, "\ n") break game = chess.pgn.read_game (plik)  

Utrzymałem logikę tak prostą, jak to tylko możliwe dla jasności ale oczywistym ulepszeniem byłoby dostosowanie go do różnej liczby pionków przez generowanie ciągów wzorców przy użyciu replikacji.

W praktyce stwierdziłem, że dopasowywanie przebiega stosunkowo wolno - około 100 gier na sekundę na moim komputerze, co zajęłoby około 8 godzin przeszukanie bazy danych 3 000 000 gier. Nie wiem, czy ta prędkość jest ograniczona przez bibliotekę python-chess czy przez dopasowanie wzorców.

Jako alternatywę wypróbowałem własny program pgn-extract, który akceptuje wyrażenia regularne wzorce FEN do dopasowania podczas analizowania gier. Dla poczwórnych pionków są tylko 24 możliwe konfiguracje dla każdej strony, więc są one stosunkowo łatwe do wyliczenia (ręcznie lub programowo); na przykład:

  FENPatternI "* / ??????? p / ??????? p / ??????? p / ?????? ? p / * / * / * "FENPatternI" * / * / ??????? p / ??????? p / ??????? p / ??????? p / * / * "FENPatternI" * / * / * / ??????? p / ??????? p / ??????? p / ??????? p / * „ 

Dzięki temu podejściu udało mi się przeszukać bazę danych 3 200 000 gier w około 9 minut, co daje około 5500 gier na sekundę. Co ciekawe, znalazłem nieco krótszą wersję czegoś podobnego do oryginalnego przykładu OP, z dopasowaniem po 17 ruchu czarnych:

  [fen ""] [Event "CSR-chT 9091 "] [Witryna" CSR "] [Data" 1991.01.19 "] [Okrągła" 5.2 "] [Biała" Novotny, Jiri "] [Czarna" Obsivac, Josef "] [Wynik" 1-0 "]  
  1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 Bd7 7. Be2 Qa5 8. Bxf6 gxf6 9. Nb3 Hg5 10. g3 f5 11. Nd5 Rc8 12. f4 Hg7 13. e5 dxe5 14. Sc5 Nd4 15. Nxd7 Nxc2 + 16. Kf2 exf4 17. N7f6 + exf6 {2r1kb1r / pp3pqp / 5p2 / 3N1p2 / 5p2 / 6P1 / PPn1BK1P / R2Q3Rb wk - 0 + 18} K2Q3Rb 195 + 18} . Ne7 + 1-0  

Zapraszamy. To mega baza danych ChessBase sprzed kilku lat.
#3
+3
Brandon_J
2019-04-10 19:00:01 UTC
view on stackexchange narkive permalink

Znalazłem grę w bazie danych chess365.com. Oto link.

Tutaj jest wyszukiwanie, którego użyłem, aby go znaleźć.

Oto gra w odtwarzaczu.

  [FEN ""] 1. e4 c5 2. Sf3 Sc6 3. d4 cxd4 4. Sxd4 Sf6 5. Sc3 d6 6. Bg5 Bd7 7. Be2 Qa5 8. Gxf6 gxf6 9. Nb3 Hg5 10. Nd5 Rc8 11. OO Wg8 12. g3 f5 13. f4 Hg7 14. e5 dxe5 15. Sc5 Sd4 16. Sxd7 Sxc2 17. Rf2 exf4 18. N7f6 + exf6 19. Gb5 + Kd8 20. Rxc2 fxg3 21. Qd4 1-0  

Znalazłem też ta kolekcja gier z pojedynczymi potrójnymi pionkami. Może być pomocna.

Niektóre wyszukiwarki Google znalazły słynną grę w poczwórne pionki rozgrywaną przez wielkiego Alechina.

  [fen ""] 1. d4 d5 2. Sf3 e6 3. e3 c6 4. Bd3 f5 5. Ne5 Hf6 6. Nd2 Nd7 7. f4 Sxe5 8. fxe5 Hf7 9. OO Hc7 10. c4 Nh6 11. b3 Bd7 12. a4 Be7 13. cxd5 cxd5 14. Ba3 Gxa3 15. Wxa3 OO 16. Ra2 Rac8 17. He2 Hb6 18. Wc2 Wxc2 19. Gxc2 Rc8 20. Bd3 Hb4 21. h3 Sf7 22. Rb1 Rc3 23. Kh2 a6 24. Hf1 Qa3 25. Rd1 Hb2 26. He2 Sd8 27. Wb1 Qa3 28. Wf1 Hb4 29. Gb1 b5 30. g4 bxa4 31. gxf5 Gb5 32. Sc4 Wxb3 33. fxe6 dxc4 34. Hf3 Wxb1 35. Wxb1 Hxb1 36. e7 Ne6 Q d5 Hxe 39. Hd5 h6 40. Hc5 c3 41. Hxc3 Hxe7 42. Hc8 + He8 43. Hc7 Hxe6 0-1  

Zobacz także odpowiedź @Phonona; zawiera dodatkowe gry.

@RewanDemontay dodał także kolekcję gier. Myślę, że to prawdopodobnie będzie moja ostateczna odpowiedź.
@Brandon_J fajny przykład Alekhine, fajne miejsce! Wygląda na to, że firma Phonon znalazła również dodatkowe interesujące przykłady.
Każdy przykład jest po stronie K. Czy są jakieś przykłady poczwórnych pionków po stronie Q?
Hmmm ... nie znam @IanBush
O co chodzi z ostatnim ruchem (21) w tej grze? Czy Qd4 po prostu nie przegrywa?
@konsolas na mobile rn. Sprawdzę tak szybko, jak będę mógł.
@RewanDemontay lol - Myślę, że „Myślę, że to prawdopodobnie będzie moja ostateczna odpowiedź”, która była prawdziwsza niż oczekiwano. Może któregoś dnia wrócę do tego ...


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...