Difference between revisions of "Make Move"

From Chessprogramming wiki
Jump to: navigation, search
 
(3 intermediate revisions by the same user not shown)
Line 20: Line 20:
  
 
=Forum Posts=
 
=Forum Posts=
 +
* [https://groups.google.com/d/msg/rec.games.chess.computer/EQxCixpytBg/e1R0a7u1WMsJ Working with moves or with positions] by Guillem Barnolas, [[Computer Chess Forums|rgcc]], February 22, 1998 » [[KC Chess]]
 
* [http://www.talkchess.com/forum/viewtopic.php?t=13764 doing undoing] by [[Fritz Reul]], [[CCC]], May 14, 2007
 
* [http://www.talkchess.com/forum/viewtopic.php?t=13764 doing undoing] by [[Fritz Reul]], [[CCC]], May 14, 2007
 
* [http://www.talkchess.com/forum/viewtopic.php?t=39938 performance of copy-make] by [[Rein Halbersma]], [[CCC]], August 02, 2011
 
* [http://www.talkchess.com/forum/viewtopic.php?t=39938 performance of copy-make] by [[Rein Halbersma]], [[CCC]], August 02, 2011
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=42665 make and unmake stadistics] by [[Fermin Serrano]], [[CCC]], February 28, 2012 » [[Search Statistics]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=42665 make and unmake stadistics] by [[Fermin Serrano]], [[CCC]], February 28, 2012 » [[Search Statistics]]
 +
* [http://www.open-chess.org/viewtopic.php?f=5&t=2250 Make and Unmake implementation] by [[Christian Daley|CDaley11]], [[Computer Chess Forums|OpenChess Forum]], February 01, 2013 » [[Unmake Move]]
 
* [http://www.open-chess.org/viewtopic.php?f=5&t=2554 Saving info before making a move] by [[Christian Daley|CDaley11]], [[Computer Chess Forums|OpenChess Forum]], December 30, 2013
 
* [http://www.open-chess.org/viewtopic.php?f=5&t=2554 Saving info before making a move] by [[Christian Daley|CDaley11]], [[Computer Chess Forums|OpenChess Forum]], December 30, 2013
  
 
=External Links=
 
=External Links=
* [[:Category:Hozier|Hozier]] - [https://en.wikipedia.org/wiki/Wasteland,_Baby! Movement], November 14, 2018, [https://en.wikipedia.org/wiki/YouTube YouTube] Video
+
* [[:Category:Hozier|Hozier]] - [https://en.wikipedia.org/wiki/Wasteland,_Baby! Movement], Live at [https://en.wikipedia.org/wiki/KCMP The Current], June 2019, [https://en.wikipedia.org/wiki/YouTube YouTube] Video
: feat.  Ukrainian [https://en.wikipedia.org/wiki/Ballet ballet] dancer [https://en.wikipedia.org/wiki/Sergei_Polunin Sergei Polunin]
+
: {{#evu:https://www.youtube.com/watch?v=Nc7tV0lRfYY|alignment=left|valignment=top}}
: {{#evu:https://www.youtube.com/watch?v=OSye8OO5TkM|alignment=left|valignment=top}}
 
  
 
'''[[Moves|Up one Level]]'''
 
'''[[Moves|Up one Level]]'''
 
[[Category:Hozier]]
 
[[Category:Hozier]]

Latest revision as of 10:34, 21 June 2020

Home * Chess * Moves * Make Move

Make Move is a function inside a chess program to update the internal chess position and its board representation as well as associated or dependent state variables and data by a move made on the internal board, such as zobrist keys to index the transposition table. That usually happens inside the Search algorithm, where the move acts like an edge connecting two nodes of a search tree, a parent and a child node. Dependent on the design of the data structures and the used search algorithms there are different approaches with respect to randomly accessing aspects of nodes and restoring the position while unmaking the move.

Operations

The general arithmetical and/or bitwise-logical operations to convert a node to its child are either reversible (even for irreversible moves), by inverse (e.g. addition and subtraction) or own inverse (exclusive or) operations, or are irreversible, for instance a sequence of addition and conjunction (add, and) of move aspects, to update ep state, castling rights and the halfmove clock.

Update

Aspects of a position altered by reversible operations may be kept in global structures, shared by all nodes of the tree, for instance square centric mailbox board arrays or bitboard board-definition, and require incremental updates by make and unmake. Irreversible aspects of the position, which can not generally restored from a child-position by unmaking a move, need to be restored by either re-playing the whole game record from the root position (too slow), or to be memorized inside an array indexed by ply or on a stack (LIFO), most notably ep state, castling rights and the halfmove clock enforcing the fifty-move rule.

All those aspects of a position, no matter if reversible by unmake or not, which may need random access in a branch of moves from the root (or initial position of the game) to the current position inside a certain implementation of a search algorithm, require an array of those aspects, indexed by ply, and updated by a Copy-Make approach.

See also

Forum Posts

External Links

Up one Level