Author: Edward Screven
Date: 16:23:03 04/17/98
Go up one level in this thread
On April 17, 1998 at 15:46:23, Dan Newman wrote:
>Here are two tricks I've used for this.
>
>1) When a piece is captured (and removed from the piece list (figure
>list))
> move the piece at the end of the list into the now empty location.
> When undoing the capture just put the un-captured piece at the end of
> the list. You would of course maintain a count of the pieces in each
> list to make it easy to find the ends of the lists and for iteration
> through the lists.
>
>2) Use one of the bits in the piece to mark the piece as captured but do
> not remove the piece from the list. Use this bit to skip over this
> piece when doing move generation, etc. When undoing the capture,
>just
> clear this bit. (You could use the high order bit in the 'what'
> member of the piece.)
>
>There are advantages and disadvantages to each of these. With 1) the
>piece
>list grows shorter as the game progresses. This helps with move
>generation
>in the endgame--it gets quite fast. But the order of the pieces in the
>list becomes scrambled and thus the order in which moves are generated
>may
>suffer.
>
>In 2) (the one I currently use--mainly because of its simplicity) the
>order
>of the pieces is fixed. This allows you to generate moves in order of
>piece type (which may help with move ordering). The main disadvantage
>is
>that the length is always 16 so that move generation has some overhead
>(especially noticeable in the endgame).
have you considered compacting the move list at beginning of each
search? this would make the move lists short in the endgame,
without requiring insert/remove per capture.
- edward
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.