I'm relatively new to chessengine programming. Currently I'm trying to squash all the bugs in my movegenerator using perft/divide-functions of other engines (roce38 and sharper). It might be that I still understand something wrong but I think I found a bug/inconsistent behaviour.
The position in question is the following:
rnbqkbnr/1ppppppp/8/8/1p6/P7/2PPPPPP/RNBQKBNR w KQkq - 0 3
Sharper:
- Code: Select all
setboard rnbqkbnr/1ppppppp/8/8/1p6/P7/2PPPPPP/RNBQKBNR w KQkq - 0 3
divide 2
b1c3 26
c1b2 25
a1a2 25
g1h3 25
g1f3 25
c2c3 26
c2c4 26
d2d3 25
d2d4 25
e2e3 25
e2e4 25
f2f3 25
f2f4 25
g2g3 25
g2g4 25
h2h3 25
h2h4 25
a3a4 23
a3b4 25
Nodes: 476
Moves: 19
roce38:
- Code: Select all
roce: setboard rnbqkbnr/1ppppppp/8/8/1p6/P7/2PPPPPP/RNBQKBNR w KQkq - 0 3
roce: divide 2
a3a4 23
a3b4 25
c2c3 26
c2c4 26
d2d3 25
d2d4 25
e2e3 25
e2e4 25
f2f3 25
f2f4 25
g2g3 25
g2g4 25
h2h3 25
h2h4 25
a1a2 25
b1c3 26
c1b2 25
g1h3 25
g1f3 25
Moves: 19
Nodes: 476
Both engines give (c2c4 26). My engine however gives (c2c4 25). So, naturally, I try the position with c2c4 played with (divide 1) and to my surprise both engines now give 25:
Sharper:
- Code: Select all
setboard rnbqkbnr/1ppppppp/8/8/1pP5/P7/3PPPPP/RNBQKBNR b KQkq - 0 3
divide 1
b7b6 1
b7b5 1
c7c6 1
c7c5 1
d7d6 1
d7d5 1
e7e6 1
e7e5 1
f7f6 1
f7f5 1
g7g6 1
g7g5 1
h7h6 1
h7h5 1
a8a7 1
a8a6 1
a8a5 1
a8a4 1
a8a3 1
b8c6 1
b8a6 1
b4b3 1
b4a3 1
g8h6 1
g8f6 1
Nodes: 25
Moves: 25
roce38:
- Code: Select all
roce: setboard rnbqkbnr/1ppppppp/8/8/1pP5/P7/3PPPPP/RNBQKBNR b KQkq - 0 3
roce: divide 1
b7b6 1
b7b5 1
c7c6 1
c7c5 1
d7d6 1
d7d5 1
e7e6 1
e7e5 1
f7f6 1
f7f5 1
g7g6 1
g7g5 1
h7h6 1
h7h5 1
b4b3 1
b4a3 1
a8a7 1
a8a6 1
a8a5 1
a8a4 1
a8a3 1
b8a6 1
b8c6 1
g8f6 1
g8h6 1
Moves: 25
Is this really a bug or am I crazy?
I hope someone could verify this or enlighten me.
Thank you very much in advance!