Difference between revisions of "Sliding Pieces"
GerdIsenberg (talk | contribs) (Created page with "'''Home * Chess * Pieces * Sliding Pieces''' '''Sliding Pieces''' can move an indefinite number of squares along a horizontal, F...") |
GerdIsenberg (talk | contribs) |
||
Line 3: | Line 3: | ||
'''Sliding Pieces''' can move an indefinite number of [[Squares|squares]] along a [[Ranks|horizontal]], [[Files|vertical]], or [[Diagonals|diagonal]] line until the edge of the board or another piece obstructs the [[Rays|ray]] of a line. This applies for [[Bishop|bishops]], [[Rook|rooks]] and [[Queen|queen]]. Sliding piece [[Move Generation|move generation]] is more extensive than generation of none sliding [[Knight|knight]], [[Pawn|pawn]] or [[King|king]] moves. With board arrays it requires a loop along the ray, scanning each square for emptiness to continue, or [[Occupancy|occupancy]] by own or opponent piece to break, combined with an off the board test to terminate the ray loop as well. However, such a loop may be designed in an efficient way generalized for all pieces as broached in [[Table-driven Move Generation]] and in [[Bruce Moreland|Bruce Moreland's]] ''Programming Topics'' <ref>[http://web.archive.org/web/20070715002634/www.brucemo.com/compchess/programming/movetable.htm Move Table move generation] from [[Bruce Moreland|Bruce Moreland's]] [http://web.archive.org/web/20070607231311/www.brucemo.com/compchess/programming/index.htm Programming Topics]</ref>. With [[Bitboards|bitboards]] one relies on the various techniques to [[Sliding Piece Attacks|generate attack sets]], which further requires [[Bitboard Serialization|serialization]] to finally [[Encoding Moves|encode moves]] in move generation. | '''Sliding Pieces''' can move an indefinite number of [[Squares|squares]] along a [[Ranks|horizontal]], [[Files|vertical]], or [[Diagonals|diagonal]] line until the edge of the board or another piece obstructs the [[Rays|ray]] of a line. This applies for [[Bishop|bishops]], [[Rook|rooks]] and [[Queen|queen]]. Sliding piece [[Move Generation|move generation]] is more extensive than generation of none sliding [[Knight|knight]], [[Pawn|pawn]] or [[King|king]] moves. With board arrays it requires a loop along the ray, scanning each square for emptiness to continue, or [[Occupancy|occupancy]] by own or opponent piece to break, combined with an off the board test to terminate the ray loop as well. However, such a loop may be designed in an efficient way generalized for all pieces as broached in [[Table-driven Move Generation]] and in [[Bruce Moreland|Bruce Moreland's]] ''Programming Topics'' <ref>[http://web.archive.org/web/20070715002634/www.brucemo.com/compchess/programming/movetable.htm Move Table move generation] from [[Bruce Moreland|Bruce Moreland's]] [http://web.archive.org/web/20070607231311/www.brucemo.com/compchess/programming/index.htm Programming Topics]</ref>. With [[Bitboards|bitboards]] one relies on the various techniques to [[Sliding Piece Attacks|generate attack sets]], which further requires [[Bitboard Serialization|serialization]] to finally [[Encoding Moves|encode moves]] in move generation. | ||
− | The advantage of the bitboard method seems the cheaper generation of moves to certain subsets of squares, for instance [[Captures|captures]] in [[Quiescence Search|quiescence search]]. Despite [[Fritz Reul]] demonstrated dense and efficient [[Vector Attacks#NewArchitecture|blocking loops]] in [[Mailbox|mailbox]] based [[Board Representation|board representations]], and in conjunction with [[Pieces#DisjointPieceFlags|disjoint piece flags]] and [[Piece-Lists|piece-lists]] <ref>[[Fritz | + | The advantage of the bitboard method seems the cheaper generation of moves to certain subsets of squares, for instance [[Captures|captures]] in [[Quiescence Search|quiescence search]]. Despite [[Fritz Reul]] demonstrated dense and efficient [[Vector Attacks#NewArchitecture|blocking loops]] in [[Mailbox|mailbox]] based [[Board Representation|board representations]], and in conjunction with [[Pieces#DisjointPieceFlags|disjoint piece flags]] and [[Piece-Lists|piece-lists]] <ref>[[Fritz Reul]] ('''2009'''). ''New Architectures in Computer Chess'', Ph.D. Thesis, ''Chapter 2 Non-Bitboard Architectures''</ref>. |
=See also= | =See also= |
Latest revision as of 17:25, 7 May 2018
Home * Chess * Pieces * Sliding Pieces
Sliding Pieces can move an indefinite number of squares along a horizontal, vertical, or diagonal line until the edge of the board or another piece obstructs the ray of a line. This applies for bishops, rooks and queen. Sliding piece move generation is more extensive than generation of none sliding knight, pawn or king moves. With board arrays it requires a loop along the ray, scanning each square for emptiness to continue, or occupancy by own or opponent piece to break, combined with an off the board test to terminate the ray loop as well. However, such a loop may be designed in an efficient way generalized for all pieces as broached in Table-driven Move Generation and in Bruce Moreland's Programming Topics [1]. With bitboards one relies on the various techniques to generate attack sets, which further requires serialization to finally encode moves in move generation.
The advantage of the bitboard method seems the cheaper generation of moves to certain subsets of squares, for instance captures in quiescence search. Despite Fritz Reul demonstrated dense and efficient blocking loops in mailbox based board representations, and in conjunction with disjoint piece flags and piece-lists [2].
See also
- Bishop
- Blocking Loop
- Discovered Attack
- Discovered Check
- Move Generation
- Pin
- Rook
- Queen
- Sliding Piece Attacks with Bitboards
- Table-driven Move Generation
- Vector Attacks
- Vulnerable on Distant Checks from King Pattern in Bitboards
- X-ray
- X-ray Attacks (Bitboards)
References
- ↑ Move Table move generation from Bruce Moreland's Programming Topics
- ↑ Fritz Reul (2009). New Architectures in Computer Chess, Ph.D. Thesis, Chapter 2 Non-Bitboard Architectures