Author: Robert Hyatt
Date: 13:25:17 08/20/04
Go up one level in this thread
On August 20, 2004 at 13:31:31, Gerd Isenberg wrote:
>On August 20, 2004 at 10:59:16, Robert Hyatt wrote:
>
>>On August 20, 2004 at 05:05:19, Tord Romstad wrote:
>>
>>>On August 20, 2004 at 00:37:26, Eric Oldre wrote:
>>>
>>>>On August 19, 2004 at 18:46:32, Robert Hyatt wrote:
>>>>>
>>>>>
>>>>>Has to do with passed pawns and no pieces on the board. If you form a square
>>>>>with one side going from the pawn to its promotion square, if the king is inside
>>>>>that square, the pawn can't run and promote. If the king is outside that square
>>>>>then the pawn promotes and wins. Simple idea with a few wrinkles to deal with.
>>>>
>>>>Thanks Robert,
>>>>that is actuall something I know i've read about at some point on this board.
>>>>and it's something that i hope i'll get to at some point.
>>>>
>>>>wouldn't you need to have 2 different bit boards? depending on who's turn it is
>>>>to move?
>>>
>>>You don't need even a single bitboard. Just compare the distance of the
>>>passed pawn to the promotion square to the distance of the defending king
>>>to the promotion square. Subtract 1 from the defending king's distance
>>>if it is the defender's turn to move.
>>>
>>>Tord
>>>
>>
>>Bitboards don't need any subtraction, any correction for side to move, nor even
>>the exact king square. It looks something like this:
>>
>>if (white_pawn_race[square of white pawn] & BlackKing) pawn can't run.
>
>Funny, i index with the square of Black King,
>but "and" with a set of all white passers instead ;-)
Either way works. Is the king in the square of the pawn or is the pawn in the
square of the king? :)
>
>
>passedPawnsOutsideSquareOfKing[WHITE] =
> passedPawns[WHITE] & sOutsideSquares[WHITE][bKingSq][color2move];
>
>with passedPawns[WHITE] probably stored in pawn-hash table or generated on the
>fly with some 64-bit instructions:
>
>passedPawns[WHITE] = pawns[WHITE] & ~filldown(allPawns|pawnAttacks[BLACK]);
>
>BitBoard fillDown(BitBoard b)
>{ // Kogge-Stone parallel prefix algorithm
> b |= b >> 8;
> b |= b >> 16;
> b |= b >> 32;
> return b;
>}
>
>
>>
>>
>>>>
>>>>Eric
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.