Changes

Jump to: navigation, search

Incremental Updates

No change in size, 21:36, 15 May 2018
m
no edit summary
Incremental updates by make/unmake are obligatory for square centric board [[Array|arrays]] like [[Mailbox|mailbox]] and [[0x88]] along with their [[Piece-Lists#IncrementalUpdate|piece-lists]], as well for the classical [[Bitboard Board-Definition|bitboard board-definition]]. A move only affects a small fraction of the complete board structure and the update cost is small compared to a copy of the whole board. Also one usually doesn't need an array of boards for random access, but only the current one.
However, there are aspects of a [[Chess Position|chess position]], which can not generally restored from a child-position by unmaking a move, and which therefor need to be restored by either re-playing the whole game record from the root position, or to be memorized inside an [[Array|array]] indexed by [[Ply|ply]] or on a [[Stack|stack]] ([https://en.wikipedia.org/wiki/LIFO_(computing) LIFO]), most notably [[En passant|ep state]], [[Castling rightsRights|castling rights]] and the [[Halfmove Clock|halfmove clock]] enforcing the [[Fifty-move Rule|fify-move rule]]. Also, if one doesn't keep a captured piece (if any) inside the move object, one has to memorize those pieces elsewhere as well, to restore the target square of the move about to unmake.
=Material and Hash keys=

Navigation menu