2

I'm writing a chess engine just for fun, and during the validation of movement generation, I found some positions in Perft Results that differ from what my engine is producing.

As an example, take the below position.

[FEN "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1"]

I found in the Chess programming wiki, the number of possible positions in depth 5 is 193690690, and my program matches this value.

However, regarding the number of possible double checks, my program found 8 more positions. The Perft Results from the Wiki indicate a total of 2637, while I found 2645.

I don't know what to think. Maybe the Perft Result from the Wiki does not consider positions where a pawn promotes with check whilst revealing a check, aka a discovered check. But there are only 6 moves where a pawn promotion results in a double check (3 positions, where the pawn may promote to queen or rook). Are the positions from Wiki wrong?

If someone wants to look at the positions, they can be found here on Google Drive.

1
  • Yes, a double check is a double check. Commented Sep 28, 2019 at 22:58

2 Answers 2

6

Yes, a double check is when two pieces give check at the same time. It doesn't matter how you got to that position. As to whether there's an error on that wiki, it's probably best to try to ask its author. Maybe they can provide the full list of positions for you to compare.

I can think of two ways of giving double check while promoting. One is where you have say the black king in front of the white pawn, and a white queen or rook behind the pawn, and the pawn promotes with a capture, ending up as a new white queen or rook next to the black king. The other is where say the black king is on the seventh rank, white has a rook or queen on the other side of the pawn, and White promotes to a knight, queen or bishop giving check.

2
  • 1
    Thank you for the feedback. The author of perft results is Peter McKenzie, worker of Google. I found him LinkedIn profile and send him a message. Maybe he can answer me. Commented Sep 20, 2019 at 22:30
  • Another way is e.g. bKe6, wPd7, wBc8, d8=N++.
    – Rosie F
    Commented Jan 20, 2022 at 8:32
3

Yes, the case you mentioned would also qualify as a double check.

But it also depends on what your definitions are. If the Perft result does consider that to not be a double check, it doesn't mean you have to abide by it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.