Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: piece list possibilities

Author: Paul Tillotson

Date: 20:26:56 07/07/98

Go up one level in this thread


I imagine you could gain some speed if there was a way to ignore promotion. :-)
Since this is impossible I think it's best to leave it as is.  This way
you can easily reorganize(promotion) and pack the list at the base node.  You
can store the number of pieces per side so eventually your iterations will
become fewer and faster.

Enjoy!
Paul

On July 07, 1998 at 23:14:58, Tom Kerrigan wrote:

>Yes, this is probably what I will do.
>
>Anyway, a quick suggestion: what would happen if you separated your piece lists
>into piece lists and pawn lists?
>
>My guess is that you would save a lot of grief in a few places...
>
>Cheers,
>Tom
>
>On July 07, 1998 at 22:23:30, Paul Tillotson wrote:
>
>>Hello.
>>
>>In my program (which I'm am relatively new to chess programming) is
>>to 2 char[64] arrays and 2 char[16] arrays.  Basically the board[64] array
>>has the current board status.  The 2 char[16] arrays are a sorted list of
>>the pieces which point to the board[64] array.  The other map[64] points to
>>the piece list.  What this does is allows me to only have 16 iterations
>>to generate moves, eval, etc.  The map structure allows me to locate where
>>the pieces is in the list if there is a capture, etc.
>>
>>A little example:
>>board[1] == N            // board piece
>>map[1] == 6              // index to piece list
>>white_pieces[6] == 1     // index to board array
>>
>>A full circle.
>>
>>It may not be helpfull, but it seems to work well for me.
>>If this seems insane to anyone please suggest an alternative.
>>
>>Thanks,
>>Paul
>>
>>On July 07, 1998 at 21:32:42, Tom Kerrigan wrote:
>>
>>>Yes, the arrays you describe are mandatory if you don't want to spend most of
>>>your CPU time looping through the board. :)
>>>
>>>The problem that I was thinking of, more specifically, is removing an entry from
>>>the piece list.
>>>
>>>Let's say a piece is captured. How do you know which section of the piece list
>>>it belongs to? You need a block of code like this:
>>>
>>>if(color[move.to]==WHITE&&piece[move.to]!=PAWN)
>>>  remove the piece from the white piece list;
>>>if(color[move.to]==WHITE&&piece[move.to]==PAWN)
>>>  remove the piece from the white pawn list;
>>>
>>>and so forth.
>>>
>>>Are there any elegant solutions to this problem?
>>>
>>>Cheers,
>>>Tom
>>>
>>>
>>>On July 07, 1998 at 19:55:12, Robert Hyatt wrote:
>>>
>>>>On July 07, 1998 at 19:23:39, Tom Kerrigan wrote:
>>>>
>>>>>I want to write a very small chess program and I'm considering possible methods
>>>>>to store a list of pieces.
>>>>>Practically every time a chess program loops through a piece list, it's only
>>>>>concerned with pieces or pawns of a particular color. Thus, I had this in mind:
>>>>>
>>>>>int piece_list[32];
>>>>>/* piece_list 0 to 7: white pieces
>>>>>   piece_list 8 to 15: white pawns
>>>>>   piece_list 16 to 23: black pieces
>>>>>   piece_list 24 to 31: black pawns
>>>>>*/
>>>>>int white_pieces;
>>>>>int white_pawns;
>>>>>int black_pieces;
>>>>>int black_pawns;
>>>>>
>>>>>I think this is reasonable until a piece needs to be removed. Then the computer
>>>>>needs to figure out which list the piece belongs to, and this sounds
>>>>>time-consuming.
>>>>>Any comments or suggestions?
>>>>>
>>>>>Cheers,
>>>>>Tom
>>>>
>>>>
>>>>we used this in Cray Blitz.  Since you have a board[x] array, use a
>>>>pboard[x] array... where if you access pboard[x] it gives you an index
>>>>into the piece list rather than the piece on that square.  Worked well
>>>>for us, although we did it for vector-processing reasons...



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.