Unique checkmate positons at ply 4 and 5

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Unique checkmate positons at ply 4 and 5

Post by sje »

Starting from the initial array and after four ply, there are 4 distinct checkmate positions:

Code: Select all

rnb1kbnr/pppp1ppp/8/4p3/6Pq/5P2/PPPPP2P/RNBQKBNR w KQkq - 1 3
rnb1kbnr/pppp1ppp/4p3/8/6Pq/5P2/PPPPP2P/RNBQKBNR w KQkq - 1 3
rnb1kbnr/pppp1ppp/8/4p3/5PPq/8/PPPPP2P/RNBQKBNR w KQkq - 1 3
rnb1kbnr/pppp1ppp/4p3/8/5PPq/8/PPPPP2P/RNBQKBNR w KQkq - 1 3
Starting from the initial array and after five ply, there are 105 distinct checkmate positions:

Code: Select all

rnbqkbnr/ppppp2p/8/5ppQ/4P3/N7/PPPP1PPP/R1B1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/N7/PPPP1PPP/R1B1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/N3P3/PPPP1PPP/R1B1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/N3P3/PPPP1PPP/R1B1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/2N5/PPPP1PPP/R1B1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/2N5/PPPP1PPP/R1B1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/2N1P3/PPPP1PPP/R1B1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/2N1P3/PPPP1PPP/R1B1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/7N/PPPP1PPP/RNB1KB1R b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/7N/PPPP1PPP/RNB1KB1R b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/4P2N/PPPP1PPP/RNB1KB1R b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/4P2N/PPPP1PPP/RNB1KB1R b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/P7/1PPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/P7/1PPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/P3P3/1PPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/P3P3/1PPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/P3P3/8/1PPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/P3P3/8/1PPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/P7/4P3/1PPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/P7/4P3/1PPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/1P6/P1PP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/1P6/P1PP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/1P2P3/P1PP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/1P2P3/P1PP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/1P2P3/8/P1PP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/1P2P3/8/P1PP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/1P6/4P3/P1PP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/1P6/4P3/P1PP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQ1/7p/8/2P5/PP1PPPPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQp/8/8/2P5/PP1PPPPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/2P5/PP1P1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/2P5/PP1P1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/2P1P3/PP1P1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/2P1P3/PP1P1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQ1/7p/2P5/8/PP1PPPPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQp/8/2P5/8/PP1PPPPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/2P1P3/8/PP1P1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/2P1P3/8/PP1P1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/2P5/4P3/PP1P1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/2P5/4P3/PP1P1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/3P4/PPP2PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/3P4/PPP2PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/3PP3/PPP2PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/3PP3/PPP2PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQ1/7p/3P4/8/PPP1PPPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQp/8/3P4/8/PPP1PPPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/3PP3/8/PPP2PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/3PP3/8/PPP2PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/3P4/4P3/PPP2PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/3P4/4P3/PPP2PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pB1/7p/8/4P3/PPPP1PPP/RNBQK1NR b KQkq - 1 3
rnbqkbnr/ppppp1p1/6Q1/5p1p/8/4P3/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQ1/7p/8/4P3/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pBp/8/8/4P3/PPPP1PPP/RNBQK1NR b KQkq - 1 3
rnbqkbnr/ppppp1p1/6Qp/5p2/8/4P3/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQp/8/8/4P3/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/8/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/8/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/7P/4P3/PPPP1PP1/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/7P/4P3/PPPP1PP1/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/4P2P/PPPP1PP1/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/4P2P/PPPP1PP1/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/4P1P1/PPPP1P1P/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/4P1P1/PPPP1P1P/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/5P2/4P3/PPPP2PP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/5P2/4P3/PPPP2PP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/B7/5ppQ/8/4P3/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/B4p2/6pQ/8/4P3/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/1B3ppQ/8/4P3/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/1B4pQ/8/4P3/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/2B5/4P3/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/2B5/4P3/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/3BP3/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/3BP3/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppB/8/4P3/PPPP1PPP/RNBQK1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pB/8/4P3/PPPP1PPP/RNBQK1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/8/4P3/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/8/4P3/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbq1bnr/ppppkppp/8/4Q3/8/4P3/PPPP1PPP/RNB1KBNR b KQ - 0 3
rnbqkbnr/ppppp1p1/6Q1/5p1p/4P3/8/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQ1/7p/4P3/8/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/6Qp/5p2/4P3/8/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp1p1/5pQp/8/4P3/8/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/4PppQ/8/8/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/4P1pQ/8/8/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P2P/8/PPPP1PP1/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P2P/8/PPPP1PP1/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/7P/PPPP1PP1/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/7P/PPPP1PP1/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/6P1/PPPP1P1P/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/6P1/PPPP1P1P/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4PP2/8/PPPP2PP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4PP2/8/PPPP2PP/RNB1KBNR b KQkq - 1 3
rnbqkbnr/ppppp2p/B7/5ppQ/4P3/8/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/B4p2/6pQ/4P3/8/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/1B3ppQ/4P3/8/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/1B4pQ/4P3/8/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppQ/4P3/3B4/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pQ/4P3/3B4/PPPP1PPP/RNB1K1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5ppB/4P3/8/PPPP1PPP/RNBQK1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/5p2/6pB/4P3/8/PPPP1PPP/RNBQK1NR b KQkq - 1 3
rnbqkbnr/ppppp2p/8/5PpQ/8/8/PPPP1PPP/RNB1KBNR b KQkq - 1 3
rnbq1bnr/ppppkppp/8/4Q3/4P3/8/PPPP1PPP/RNB1KBNR b KQ - 0 3
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Unique checkmate positons at ply 4 and 5

Post by sje »

And at six ply from the initial array, there are 1,251 unique checkmate positions.
User avatar
hgm
Posts: 28353
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Unique checkmate positons at ply 4 and 5

Post by hgm »

If there are 1251, why do you call them 'unique'? :?
User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: Unique checkmate positons at ply 4 and 5

Post by michiguel »

hgm wrote:If there are 1251, why do you call them 'unique'? :?
because you get those in unix with
sort mate.epd | uniq
:-)

Miguel
PS: Maybe "distinct" positions?
Dann Corbit
Posts: 12777
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Unique checkmate positons at ply 4 and 5

Post by Dann Corbit »

[quote="sje"]Starting from the initial array and after four ply, there are 4 distinct checkmate positions:

Code: Select all

rnb1kbnr/pppp1ppp/8/4p3/6Pq/5P2/PPPPP2P/RNBQKBNR w KQkq - 1 3
rnb1kbnr/pppp1ppp/4p3/8/6Pq/5P2/PPPPP2P/RNBQKBNR w KQkq - 1 3
rnb1kbnr/pppp1ppp/8/4p3/5PPq/8/PPPPP2P/RNBQKBNR w KQkq - 1 3
rnb1kbnr/pppp1ppp/4p3/8/5PPq/8/PPPPP2P/RNBQKBNR w KQkq - 1 3
An example of the havoc ambiguous or useless e.p. can cause, here are my forced mates from the same distance (also includes dm2):
rnbqkbnr/pppp1ppp/4p3/8/5P2/7P/PPPPP1P1/RNBQKBNR b KQkq - acn 6; acs 0; bm Qh4+; ce 32764; dm 2; pv Qh4+ g3 Qxg3#;
rnbqkbnr/pppp1ppp/4p3/8/5P2/7P/PPPPP1P1/RNBQKBNR b KQkq f3 acn 6; acs 0; bm Qh4+; ce 32764; dm 2; pv Qh4+ g3 Qxg3#;
rnbqkbnr/pppp1ppp/4p3/8/5PP1/8/PPPPP2P/RNBQKBNR b KQkq f3 acn 1; acs 0; bm Qh4#; ce 32766; dm 1; pv Qh4#;
rnbqkbnr/pppp1ppp/4p3/8/5PP1/8/PPPPP2P/RNBQKBNR b KQkq g3 acn 1; acs 0; bm Qh4#; ce 32766; dm 1; pv Qh4#;
rnbqkbnr/pppp1ppp/4p3/8/6P1/5P2/PPPPP2P/RNBQKBNR b KQkq - acn 1; acs 0; bm Qh4#; ce 32766; dm 1; pv Qh4#;
rnbqkbnr/pppp1ppp/4p3/8/6P1/5P2/PPPPP2P/RNBQKBNR b KQkq g3 acn 1; acs 0; bm Qh4#; ce 32766; dm 1; pv Qh4#;
rnbqkbnr/pppp1ppp/4p3/8/8/5P1P/PPPPP1P1/RNBQKBNR b KQkq - acn 6; acs 0; bm Qh4+; ce 32764; dm 2; pv Qh4+ g3 Qxg3#;
rnbqkbnr/pppp1ppp/8/4p3/5P2/7P/PPPPP1P1/RNBQKBNR b KQkq - acn 7; acs 0; bm Qh4+; ce 32764; dm 2; pv Qh4+ g3 Qxg3#;
rnbqkbnr/pppp1ppp/8/4p3/5P2/7P/PPPPP1P1/RNBQKBNR b KQkq f3 acn 7; acs 0; bm Qh4+; ce 32764; dm 2; pv Qh4+ g3 Qxg3#;
rnbqkbnr/pppp1ppp/8/4p3/5PP1/8/PPPPP2P/RNBQKBNR b KQkq f3 acn 1; acs 0; bm Qh4#; ce 32766; dm 1; pv Qh4#;
rnbqkbnr/pppp1ppp/8/4p3/5PP1/8/PPPPP2P/RNBQKBNR b KQkq g3 acn 1; acs 0; bm Qh4#; ce 32766; dm 1; pv Qh4#;
rnbqkbnr/pppp1ppp/8/4p3/6P1/5P2/PPPPP2P/RNBQKBNR b KQkq - acn 1; acs 0; bm Qh4#; ce 32766; dm 1; pv Qh4#;
rnbqkbnr/pppp1ppp/8/4p3/6P1/5P2/PPPPP2P/RNBQKBNR b KQkq g3 acn 1; acs 0; bm Qh4#; ce 32766; dm 1; pv Qh4#;
rnbqkbnr/pppp1ppp/8/4p3/8/5P1P/PPPPP1P1/RNBQKBNR b KQkq - acn 6; acs 0; bm Qh4+; ce 32764; dm 2; pv Qh4+ g3 Qxg3#;

[snip]
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Unique checkmate positons at ply 4 and 5

Post by sje »

Not this week, but eventually I will get the EPD code into the new CIL toolkit and with that I'll re-release a big bag of test suites with bogus e.p. target removal. As the new CIL improves, others may freely use it themselves for EPD and FEN file processing.

To run the CIL, all you need is a Lisp processor and five free ones are referenced in the ReadMe file in the slowly-expanding documentation directory.

All EPD data that I'm releasing uses the revised EPD record format that includes the half move counter and the full move number for each position; this makes the first six tokens on an EPD record the exact same an the six tokens on a FEN record. New EPD records can be mapped into the old style by simply removing the fifth and six tokens on each new style record. See the Unix "cut" utility on how to do this quite easily.

https://public.me.com/chessnotation
Dann Corbit
Posts: 12777
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Unique checkmate positons at ply 4 and 5

Post by Dann Corbit »

sje wrote:Not this week, but eventually I will get the EPD code into the new CIL toolkit and with that I'll re-release a big bag of test suites with bogus e.p. target removal. As the new CIL improves, others may freely use it themselves for EPD and FEN file processing.

To run the CIL, all you need is a Lisp processor and five free ones are referenced in the ReadMe file in the slowly-expanding documentation directory.

All EPD data that I'm releasing uses the revised EPD record format that includes the half move counter and the full move number for each position; this makes the first six tokens on an EPD record the exact same an the six tokens on a FEN record. New EPD records can be mapped into the old style by simply removing the fifth and six tokens on each new style record. See the Unix "cut" utility on how to do this quite easily.

https://public.me.com/chessnotation
Something that I would find helpful is a tool to recognize that an e.p. square cannot have any effect and then strip it off if it exists.
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Unique checkmate positons at ply 4 and 5

Post by sje »

Dann Corbit wrote:Something that I would find helpful is a tool to recognize that an e.p. square cannot have any effect and then strip it off if it exists.
The new CIL does this for FEN data. The CIL EPD parser is not there yet because it's all stuck inside my head.