残局FEN生成器


10

是否可以基于特定标准(n件,w / d / l和移动侧边)为最终比赛生成FEN琴弦?

这么说吧,我想要King + Rook vs King + Pawn(KPKR)残局的所有FEN字符串,在这种情况下,白棋可以移动,白棋可以完美发挥。

我知道会有大量结果,下一步就是按照其他标准对结果进行进一步分类,例如说白王在棋子前面,或者黑棋已经超过了第六名。

我假设终端游戏表库(egtb)中已经存储了此信息,但是如何从中获取这些信息呢?还是有其他产生这种情况的方式?

谢谢!!

Answers:


1

首先,FEN表示法用于描述板状态或排列,而不是板状态或排列的族。

您所说的是一种根据您的标准为董事会排名编制索引的方法。即Rook vs Knight决赛或类似比赛

这可以通过大多数数据库软件(Fritz,Chessbase)来完成。这是通过在数据库中搜索游戏,然后根据棋盘位置将其拉出来完成的。

例如,如果我想获得一堆rook vs骑士终局游戏,我可以搜索仅包含K,k,p,P,r,R,n,N的所有FEN字符串。基本上,这些位置包含兵,骑士,新手和国王。

对于egtb,使用位基础存储格式,并将位置分配给唯一索引。我想这就是国际象棋位置训练器如何存储其FEN字符串以确定换位的方式。


1
感谢您的答复!我知道国际象棋库可以运行这些搜索,问题是数据库使用的是真实的游戏,这自然意味着比赛中存在错误(例如,应该以完美的比赛结果赢得位置,导致平局,甚至由于劣等比赛而造成损失)。我希望能够以某种方式对egtb进行完全相同的搜索,或者以某种方式获取egtb来生成位置字符串。那有意义吗?
丹·福布斯

0

最直接的方法是从具有桌面功能的国际象棋程序开始,并添加一个例程,该例程将生成给定残局类的每个可能位置,并输出具有匹配选择标准的桌面得分的那些。

琐事:来自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#}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.