Author: Robert Hyatt
Date: 10:22:45 10/22/98
Go up one level in this thread
On October 22, 1998 at 03:12:32, Roberto Waldteufel wrote: > >On October 21, 1998 at 04:28:43, Ernst A. Heinz wrote: > >>On October 20, 1998 at 18:13:24, Robert Hyatt wrote: >>> >>>The main idea of rotated bitmaps is that it eliminates that incremental >updating >>>of the attack bitmaps as pieces are moved. >> >>If I understood Roberto correctly, he is primarily concerned about the full >>"attack tables" which is obviously different from what you call "attack >>bitmaps". Without incremental updating the whole bitboard stuff (normal & >>rotated) allows *only* for the quick detection of the "attack-from" relation, >>i.e., which squares does a piece attack when it resides on location X. The >>bitboard stuff answers this question by means of pre-computed attack bitboards >>and some masking operations to account for other pieces on the board. >> >>Unfortunately, however, the bitboard stuff does not fundamentally simplify the >>calculation of the "attack-to" relation (i.e., which pieces attack location X). >>Without incrementally updated "attack-to" tables you still need to loop in >>order to determine the relation. As usual it therefore depends on your specific >>program if incrementally updated "attack-to" tables are to be preferred or not. >> >>=Ernst= > >Hi Ernst, > >Yes, you see my dilemma. At present my incremental updating is very fast on the >attack-from maps, but slower on the attack-to maps. I think this is also the >case with attack detection using the rotated bitboards and no attack tables. I >intend to try the rotated bitboard method to see if I can make the search >faster. Only trouble is, my present code uses the attack tables everywhere, so >it will be a big job to rewrite it for the new data structure. > >Best wishes, >Roberto A simple bit of software engineering advice... for *any* data structure that might change, rather than referencing it explicitly, use a C macro instead. IE I have macros like AttacksRank(square), AttacksFile(square) and so forth. When I changed from normal bitmaps to rotated, I changed these macros and was ready to go. I do this for *anything* that might change later, so I can change it in one place only. This is called "design for change"... and works well, not to mention that the macros can make the code more readable...
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.