Generator FEN gry końcowej


10

czy możliwe jest generowanie ciągów FEN dla gier końcowych na podstawie określonych kryteriów: n-sztuk, w / d / l i side to move?

Powiedzmy, że chciałem wszystkich ciągów FEN dla gier końcowych King plus Rook vs King plus Pawn (KPKR), w których ruch jest biały, a białe rysują z doskonałą grą.

Wiem, że byłaby wyjątkowo duża liczba wyników, a następnym krokiem byłoby dalsze skategoryzowanie tych wyników według innych kryteriów, takich jak powiedzenie, że biały król stoi przed pionkiem lub czarny pionek przekroczył 6. pozycję.

Zakładam, że baza tabel gry końcowej (egtb) ma już w sobie te informacje, ale jak je uzyskać? Czy jest jakiś inny sposób na wygenerowanie tego?

Dzięki!!

Odpowiedzi:


1

Po pierwsze, notacja FEN służy do opisu stanu tablicy lub permutacji, a nie rodziny stanów tablicy lub permutacji.

To, o czym mówisz, to sposób na indeksowanie pozycji na tablicy na podstawie twoich kryteriów. tj. gry końcowe Rook vs. Knight

Można to zrobić za pomocą większości programów bazodanowych (Fritz, Chessbase). Odbywa się to poprzez przeszukiwanie gier w bazie danych i wyciąganie ich na podstawie pozycji na planszy.

Na przykład, jeśli chcę uzyskać kilka gier typu Rook vs. Knight End, mogę wyszukać wszystkie ciągi FEN zawierające tylko K, k, p, P, r, R, n, N. Zasadniczo pozycje, które zawierają pionki, rycerzy, wieże i królów.

Jeśli chodzi o egtb, format jest przechowywany przy użyciu baz bitów, a pozycje są przypisywane do unikalnego indeksu. Zakładam, że w ten sposób Chess Position Trainer przechowuje swoje ciągi FEN w celu ustalenia transpozycji.


1
Dziękuję za odpowiedź! Wiem, że baza szachowa może uruchamiać te wyszukiwania, problem polega na tym, że baza danych używa prawdziwych gier, co oczywiście oznacza, że ​​w grze występują błędy (powiedzmy, że pozycja, którą należy wygrać z idealną grą, spowoduje remis lub nawet przegraną z powodu gorszej gry). Chciałbym móc jakoś dokładnie przeszukać egtb lub uzyskać sposób na wygenerowanie ciągu pozycji przez egtb. Czy to ma sens?
Dan Forbes,

0

Najprostszym sposobem byłoby rozpoczęcie od programu szachowego z funkcją tablebase i dodanie procedury, która generowałaby każdą możliwą pozycję danej klasy gry końcowej i generowała te, które miały wyniki tablebase spełniające kryteria wyboru.

Ciekawostki: przykład z KRKP:

Longest mate score (BTM): MateIn43
Sample BTM longest mating position: 8/8/8/8/5R2/2pk4/5K2/8 b - - 0 1

Optimal move sequence from the above BTM longest mating position:

1... c2 2. Rf3+ Kd4 3. Rf4+ Kd5 4. Rf5+ Kc6 {Kd6} 5. Rf8 Kb7 {Kc7} 6. Rf7+ Kb6
7. Rf6+ Kb5 8. Rf5+ Kb4 9. Rf4+ Kb3 10. Rf3+ Kb2 11. Ke3 {Rf8} c1=Q+ 12. Kd4
Qc6 {Qc7 Qc8 Qd2+ Qe1 Qg1+ Qg5 Qh6} 13. Re3 Kc2 {Qb6+ Qd6+ Qf6+} 14. Re2+ Kb3
15. Re3+ Kb4 16. Ke5 Kc4 17. Re4+ Kd3 18. Rd4+ Ke3 19. Rd6 Qe4+ 20. Kf6 Kf4 21.
Re6 Qb4 {Qc2} 22. Kf7 Qb7+ {Qc3 Qc4} 23. Ke8 Kf5 {Qc7} 24. Rd6 Ke5 {Qc8+} 25.
Rd7 {Rh6} Qa8+ {Qb3 Qb5 Qc8+} 26. Kf7 Qc6 27. Re7+ Kf5 28. Kf8 {Kg8} Qd5 29.
Ke8 {Kg7} Qg8+ 30. Kd7 Kf6 31. Re8 Qf7+ 32. Kd8 Qb7 33. Re1 Qb4 34. Re2 {Re8}
Kf7 {Qa5+ Qb6+ Qb8+ Qd4+ Qd6+} 35. Kc7 {Kd7 Ra2 Rc2 Rf2+ Rg2} Qc4+ 36. Kd6 Qxe2
37. Kd5 Ke7 {Qd1+ Qd2+ Qd3+ Qe3 Qg4} 38. Kc5 Kd7 {Ke6 Qd2 Qd3 Qe3+ Qe4} 39. Kb4
{Kd4 Kd5} Qd3 {Qe3} 40. Ka4 {Kc5} Kc6 {Kc7 Kd6 Qb1} 41. Kb4 Kb6 42. Ka4 Kc5 43.
Ka5 Qa3# {Qb5#}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.