Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: perft weirdness - getting weirder

Author: Robert Hyatt

Date: 07:25:13 01/03/03

Go up one level in this thread


On January 03, 2003 at 03:34:45, Andreas Stabel wrote:

>On January 02, 2003 at 21:48:22, Robert Hyatt wrote:
>
>>On January 02, 2003 at 15:51:30, Russell Reagan wrote:
>>
>>>[D]r3k2r/8/8/8/8/8/8/1R2K2R b Kkq - 0 1
>>>
>>>In the above position, I calculate perft 3:
>>>
>>>> perft 3
>>>26      0
>>>583     0
>>>14251   0.032
>>>total time: 0.032
>>>
>>>Other engines say that perft 3 is 14252, so I assume that I am wrong here and I
>>>went looking for the position where the error is. I wrote a function to tell me
>>>preft (n-1) for each of the legal moves so I can tell which branch the error is
>>>in, and I continue to narrow it down until I find the offending position. This
>>>has worked well so far, but now I'm getting this:
>>>
>>>> dperft 3
>>>h8h1    87      87
>>>a8a1    356     443
>>>a8a2    544     987
>>>a8a3    631     1618
>>>a8a4    631     2249
>>>a8a5    631     2880
>>>a8a6    631     3511
>>>a8a7    631     4142
>>>a8b8    524     4666
>>>a8c8    559     5225
>>>a8d8    488     5713
>>>h8h2    428     6141
>>>h8h3    547     6688
>>>h8h4    575     7263
>>>h8h5    602     7865
>>>h8h6    628     8493
>>>h8h7    650     9143
>>>h8f8    490     9633
>>>h8g8    560     10193
>>>e8d7    720     10913
>>>e8e7    742     11655
>>>e8f7    692     12347
>>>e8d8    510     12857
>>>e8f8    490     13347
>>>e8g8    474     13821
>>>e8c8    431     14252
>>>
>>>This function reports perft n-1 for each move, and keeps a running total on the
>>>right. The last number in the right column is, to my suprise, 14252, which is
>>>the correct perft 3.
>>>
>>>So when I calculate perft 3, it is incorrect, but when I ask it to give me a
>>>breakdown of perft 2 for each move, the sum (which should be the same as what I
>>>am getting for perft 3) is suddenly correct.
>>>
>>>Any idea what this could mean? I'm stumped...
>>
>>Here are a couple of things to check.  I've seen them all, and done most of
>>them myself.  :)
>>
>>(1) for castling, the king can not pass over a square that is under attack by
>>the opponent.  IE for kingside castling for white, the squares g1 and f1 must
>>not be attacked.  h1 can be attacked with no effect on castling.
>>
>>(2) for castling queenside, watch b1.  It _can_ be attacked with no problem
>>as the king doesn't pass over it.  Only d1 and c1 must be free of attack and
>>this is an easy mistake to make.  I did it in an early crafty, and would not
>>castle if b1 was attacked.
>>
>>(3) make certain that once you castle, you do not castle again deeper in the
>>tree.  :)  This is also an easy mistake to make.
>>
>>(4) make certain that if a rook moves, castling to _that_ side is prevented,
>>although castling the other way is still ok.
>>
>>(5) make certain that if the king moves, no castling can happen at all below
>>that point.
>>
>>I'd bet one of those is your problem...
>
>(6) If a rook is taken, then no castling is possible to that side.
>
>I had some strange results before I discovered this one :)
>
>Regards
>Andreas Stabel


Correct.  I've done _that_ also.  :)




This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.