Gerador FEN de fim de jogo

10

é possível gerar strings FEN para jogos finais com base em critérios específicos: n-pieces, w / d / l e side to move?

Então diga que eu queria todas as seqüências de caracteres FEN para os jogos finais King + Rook vs King + Pawn (KPKR), onde é branco o movimento e o branco empata com o jogo perfeito.

Eu sei que haveria um número extremamente grande de resultados, e o próximo passo seria categorizá-los ainda mais por outros critérios, como dizer que o rei branco está na frente do peão ou o peão preto passou na 6ª posição.

Presumo que uma base de tabela de fim de jogo (egtb) já tenha essas informações armazenadas, mas como obter essas informações? Ou existe alguma outra maneira de gerar isso?

Obrigado!!

Dan Forbes
fonte

Respostas:

1

Em primeiro lugar, a notação FEN é usada para descrever um estado ou permutação da placa, não uma família de estados ou permutações da placa.

O que você está falando é uma maneira de indexar as posições do quadro com base em seus critérios. ou seja, Rook vs Knight jogos finais ou algo do tipo

Isso pode ser feito pela maioria dos softwares de banco de dados (Fritz, Chessbase). Isso é feito pesquisando jogos no banco de dados e retirando-os com base nas posições do tabuleiro.

Por exemplo, se eu quiser obter vários jogos de torre versus final de cavaleiro, posso procurar por todas as seqüências FEN que contêm apenas K, k, p, P, r, R, n, N. Basicamente, posições que contêm peões, cavaleiros, gralhas e reis.

Quanto ao egtb, o formato é armazenado usando bases de bits e as posições são atribuídas a um índice exclusivo. Eu diria que é assim que o Chess Position Trainer armazena suas seqüências FEN para determinar transposições.

Yusuf Ali
fonte
1
Obrigado pela resposta! Eu sei que o chessbase pode executar essas pesquisas, o problema é que o banco de dados usa jogos reais, o que naturalmente significa que há erros no jogo (digamos que uma posição que deva ser conquistada com um jogo perfeito resulte em um empate ou até perda devido ao jogo inferior). Eu gostaria de poder, de alguma forma, fazer exatamente a mesma pesquisa de um egtb ou ter alguma maneira de obter um egtb para gerar uma sequência de posições. Isso faz sentido?
Dan Forbes
0

A maneira mais direta seria começar com um programa de xadrez com capacidade de base de tabela e adicionar uma rotina que geraria todas as posições possíveis de uma determinada classe de final de jogo e produziria aquelas que tivessem pontuações de base de tabela correspondentes aos critérios de seleção.

Curiosidades: Um exemplo do 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#}
ChessNotation
fonte