official-pikafish / Pikafish

UCI xiangqi engine
http://pikafish.org
GNU General Public License v3.0
867 stars 162 forks source link

BUG 特定的moves 导致盘面翻转 提前走步 #65

Closed liuzimo closed 7 months ago

liuzimo commented 7 months ago

Describe the issue

在这个时候 这个指令的盘面还是正常的

回合数 : 25 对方走子: c2c3 走法: 車3退1 指令: 1Cbakrb2/5n3/9/p2R4p/4p4/2p6/P1r5P/4B4/9/1RBAKA3 w moves b7e7 b0c2 b9c7 h0g2 a9b9 a0b0 g6g5 c3c4 b9b3 g0e2 b3c3 g2e1 h9g7 h2h3 g7f5 g3g4 f5g3 g4g5 h7g7 h3h6 c6c5 g5g6 i9h9 i0h0 g7g8 h0h3 e6e5 g6g7 e7e3 c2e3 c3e3 e1c2 e3c3 g7g8 c3c2 h3g3 h9h6 g8f8 h6f6 g3g7 c7e6 f8f9 f6f9 g7d7 e6f8 d7d6 c5c4 b2b9 c2c3 回合数 : 25 机器走子: b0b7 走法: 車八进七

出现错误的如下指令: 盘面发生翻转

回合数 : 26 对方走子: e9e8 走法: 将5进1 指令: 1Cba1rb2/4kn3/1R7/p2R4p/4p4/2p6/P1r5P/4B4/9/2BAKA3 w moves b7e7 b0c2 b9c7 h0g2 a9b9 a0b0 g6g5 c3c4 b9b3 g0e2 b3c3 g2e1 h9g7 h2h3 g7f5 g3g4 f5g3 g4g5 h7g7 h3h6 c6c5 g5g6 i9h9 i0h0 g7g8 h0h3 e6e5 g6g7 e7e3 c2e3 c3e3 e1c2 e3c3 g7g8 c3c2 h3g3 h9h6 g8f8 h6f6 g3g7 c7e6 f8f9 f6f9 g7d7 e6f8 d7d6 c5c4 b2b9 c2c3 b0b7 e9e8 回合数 : 26 机器走子: e8e7 走法: 将5进1

Expected behavior

盘面与fen字符串 不符合 而且go depth 1 获取出招是对方的出招。 fen字符串 产生了自走 fen 1Cba1rb2/4kn3/1R7/p2R4p/4p4/2p6/P1r5P/4B4/9/2BAKA3 w moves b7e7 b0c2 b9c7 h0g2 a9b9 a0b0 g6g5 c3c4 b9b3 g0e2 b3c3 g2e1 h9g7 h2h3 g7f5 g3g4 f5g3 g4g5 h7g7 h3h6 c6c5 g5g6 i9h9 i0h0 g7g8 h0h3 e6e5 g6g7 e7e3 c2e3 c3e3 e1c2 e3c3 g7g8 c3c2 h3g3 h9h6 g8f8 h6f6 g3g7 c7e6 f8f9 f6f9 g7d7 e6f8 d7d6 c5c4 b2b9 c2c3 b0b7 e9e8 d

+---+---+---+---+---+---+---+---+---+ | | C | b | a | | r | b | | | 9 +---+---+---+---+---+---+---+---+---+ | | | | | k | n | | | | 8 +---+---+---+---+---+---+---+---+---+ | | | | | R | | | | | 7 +---+---+---+---+---+---+---+---+---+ | p | | | R | | | | | p | 6 +---+---+---+---+---+---+---+---+---+ | | | | | p | | | | | 5 +---+---+---+---+---+---+---+---+---+ | | | p | | | | | | | 4 +---+---+---+---+---+---+---+---+---+ | P | | r | | | | | | P | 3 +---+---+---+---+---+---+---+---+---+ | | | | | B | | | | | 2 +---+---+---+---+---+---+---+---+---+ | | | | | | | | | | 1 +---+---+---+---+---+---+---+---+---+ | | | B | A | K | A | | | | 0 +---+---+---+---+---+---+---+---+---+ a b c d e f g h i

Steps to reproduce

fen 1Cba1rb2/4kn3/1R7/p2R4p/4p4/2p6/P1r5P/4B4/9/2BAKA3 w moves b7e7 b0c2 b9c7 h0g2 a9b9 a0b0 g6g5 c3c4 b9b3 g0e2 b3c3 g2e1 h9g7 h2h3 g7f5 g3g4 f5g3 g4g5 h7g7 h3h6 c6c5 g5g6 i9h9 i0h0 g7g8 h0h3 e6e5 g6g7 e7e3 c2e3 c3e3 e1c2 e3c3 g7g8 c3c2 h3g3 h9h6 g8f8 h6f6 g3g7 c7e6 f8f9 f6f9 g7d7 e6f8 d7d6 c5c4 b2b9 c2c3 b0b7 e9e8 d

Anything else?

No response

Operating system

Windows

Pikafish version

12-3

xiangqishare commented 7 months ago

正确的fen+movelist应该是:rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR b moves b7e7 b0c2 b9c7 h0g2 a9b9 a0b0 g6g5 c3c4 b9b3 g0e2 b3c3 g2e1 h9g7 h2h3 g7f5 g3g4 f5g3 g4g5 h7g7 h3h6 c6c5 g5g6 i9h9 i0h0 g7g8 h0h3 e6e5 g6g7 e7e3 c2e3 c3e3 e1c2 e3c3 g7g8 c3c2 h3g3 h9h6 g8f8 h6f6 g3g7 c7e6 f8f9 f6f9 g7d7 e6f8 d7d6 c5c4 b2b9 c2c3 b0b7 e9e8

liuzimo commented 7 months ago

正确的fen+movelist应该是:rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR b moves b7e7 b0c2 b9c7 h0g2 a9b9 a0b0 g6g5 c3c4 b9b3 g0e2 b3c3 g2e1 h9g7 h2h3 g7f5 g3g4 f5g3 g4g5 h7g7 h3h6 c6c5 g5g6 i9h9 i0h0 g7g8 h0h3 e6e5 g6g7 e7e3 c2e3 c3e3 e1c2 e3c3 g7g8 c3c2 h3g3 h9h6 g8f8 h6f6 g3g7 c7e6 f8f9 f6f9 g7d7 e6f8 d7d6 c5c4 b2b9 c2c3 b0b7 e9e8 如果在这一步使用b 那么 回合数 : 25 对方走子: c2c3 走法: 車3退1 指令: 1Cbakrb2/5n3/9/p2R4p/4p4/2p6/P1r5P/4B4/9/1RBAKA3 w moves b7e7 b0c2 b9c7 h0g2 a9b9 a0b0 g6g5 c3c4 b9b3 g0e2 b3c3 g2e1 h9g7 h2h3 g7f5 g3g4 f5g3 g4g5 h7g7 h3h6 c6c5 g5g6 i9h9 i0h0 g7g8 h0h3 e6e5 g6g7 e7e3 c2e3 c3e3 e1c2 e3c3 g7g8 c3c2 h3g3 h9h6 g8f8 h6f6 g3g7 c7e6 f8f9 f6f9 g7d7 e6f8 d7d6 c5c4 b2b9 c2c3 回合数 : 25 机器走子: b0b7 走法: 車八进七

这里也应该使用b 但是 这样前面就是翻转的 错误的

liuzimo commented 7 months ago

image

不管都使用b 或者 都使用w 。在这一步 都将发生盘面翻转

liuzimo commented 7 months ago

错误发生在 从25回合 到26回合,第26回合 引擎的出招 发生盘面翻转。

pickaxe919 commented 7 months ago

非引擎bug,传递了非法的fen+moves

liuzimo commented 7 months ago

并不非法 鹏飞都能识别。皮卡鱼 引擎本身也能识别。

PikaCat-OuO commented 7 months ago

并不非法 鹏飞都能识别。皮卡鱼 引擎本身也能识别。

1Cbakrb2/5n3/9/p2R4p/4p4/2p6/P1r5P/4B4/9/1RBAKA3 w moves b7e7 请问,b7e7是哪一步?

PikaCat-OuO commented 7 months ago

并不非法 鹏飞都能识别。皮卡鱼 引擎本身也能识别。

皮卡鱼不对fen的正确性做检查,这是界面的工作,但是,引擎没有崩溃不代表fen是正确的。可以“识别”不代表错误的fen可以正确工作。