Конечный генератор FEN

10

Можно ли генерировать строки FEN для эндшпилей на основе определенных критериев: n-частей, w / d / l и сторона для перемещения?

Скажем так, я хотел получить все FEN-струны для финалов King + Rook vs King + Pawn (KPKR), где белые должны двигаться, а белые рисуют с идеальной игрой.

Я знаю, что будет чрезвычайно большое количество результатов, и следующим шагом будет дальнейшая классификация этих результатов по другим критериям, например, скажем, белый король перед пешкой, или черная пешка прошла 6-е место.

Я предполагаю, что в таблице конечных игр (egtb) эта информация уже сохранена, но как получить эту информацию из них? Или есть какой-то другой способ создания этого?

Спасибо!!

Дэн Форбс
источник

Ответы:

1

Во-первых, нотация FEN используется для описания состояния или перестановки платы, а не семейства состояний или перестановок платы.

То, о чем вы говорите, - это способ индексирования позиций на основе ваших критериев. то есть игры Rook vs Knight или что-то подобное

Это может быть сделано большинством программного обеспечения базы данных (Fritz, Chessbase). Это делается путем поиска игр в базе данных и их извлечения на основе позиций на доске.

Например, если я хочу получить кучу игр ладья против коня, я могу найти все строки FEN, которые содержат только K, k, p, P, r, R, n, N. В основном, позиции, которые содержат пешек, рыцарей, грачей и королей.

Что касается egtb, формат хранится с использованием битовых баз, а позиции назначаются уникальному индексу. Я предполагаю, что именно так Chess Position Trainer хранит свои строки FEN для определения транспонирования.

Юсуф Али
источник
1
Спасибо за ответ! Я знаю, что шахматная база может выполнять эти поиски, проблема в том, что база данных использует реальные игры, что, естественно, означает, что в игре есть ошибки (скажем, позиция, которую следует выиграть с идеальными игровыми результатами в ничьей или даже проигрышем из-за плохой игры). Я хотел бы иметь возможность каким-то образом выполнить тот же поиск egtb или иметь какой-то способ получить egtb для генерации строки позиций. Имеет ли это смысл?
Дэн Форбс
0

Самый простой способ - начать с шахматной программы с возможностью использования табличной базы и добавить подпрограмму, которая будет генерировать каждую возможную позицию заданного класса эндшпиля и выводить те, у которых оценки по табличной базе соответствуют критериям выбора.

Общая информация: Пример из КРКП:

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
источник