Difference between revisions of "Leorik"

From Chessprogramming wiki
Jump to: navigation, search
Line 9: Line 9:
 
=Leorik Attacks=
 
=Leorik Attacks=
 
Leorik is a [[Bitboards|bitboard]] engine and applies an unique approach in determining [[Sliding Piece Attacks|sliding piece attacks]] based on [[On an empty Board#LineAttacks|line-wise attacks on the otherwise empty board]] (either pre-calculated or calculated on the fly). All bits below the slider's [[Origin Square|origin square]] [[General Setwise Operations#BitbySquare|bit]] are used to separate [[On an empty Board#PositiveRays|positive]] and [[On an empty Board#NegativeRays|negative]] [[Rays|rays]] to scan the nearest blocker (if any) accordingly.  
 
Leorik is a [[Bitboards|bitboard]] engine and applies an unique approach in determining [[Sliding Piece Attacks|sliding piece attacks]] based on [[On an empty Board#LineAttacks|line-wise attacks on the otherwise empty board]] (either pre-calculated or calculated on the fly). All bits below the slider's [[Origin Square|origin square]] [[General Setwise Operations#BitbySquare|bit]] are used to separate [[On an empty Board#PositiveRays|positive]] and [[On an empty Board#NegativeRays|negative]] [[Rays|rays]] to scan the nearest blocker (if any) accordingly.  
Positive rays use the line occupancy, intersected with the bits not below to [[General Setwise Operations#LS1BSeparation|fill its LS1B]] (if any) down (MaskLow => bb ^ (bb - 1)). Negative Rays use the line occupancy, intersected with the bits below to fill its [[General Setwise Operations#TheMostSignificantOneBitMS1B|MS1B]] (if any) down (MaskHigh => 0x7FFFFFFFFFFFFFFFUL >> [[BitScan#TrailingZeroCount|trailingZeroCount]](bb|1)). The [[General Setwise Operations#ExclusiveOr|symmetric difference]] of both down fills, restricted to the line-wise attacks on the otherwise empty board results in the sliding attack bitboard from that square on one particular line <ref>[https://github.com/lithander/Leorik/blob/master/Leorik.Core/Bitboard.cs Leorik/Bitboard.cs at master · lithander/Leorik · GitHub]</ref> <ref>[https://www.talkchess.com/forum3/viewtopic.php?f=7&t=79049&start=2 Re: Devlog of Leorik] by [[Thomas Jahn]], [[CCC]], January 04, 2022</ref>.
+
Positive rays use the line occupancy, intersected with the bits not below to [[General Setwise Operations#LS1BSeparation|fill its LS1B]] (if any) down (MaskLow => bb ^ (bb - 1)). Negative Rays use the line occupancy, intersected with the bits below to fill its [[General Setwise Operations#TheMostSignificantOneBitMS1B|MS1B]] (if any) down (MaskHigh => 0x7FFFFFFFFFFFFFFFUL >> [[BitScan#LeadingZeroCount|leadingZeroCount]](bb|1)). The [[General Setwise Operations#ExclusiveOr|symmetric difference]] of both down fills, restricted to the line-wise attacks on the otherwise empty board results in the sliding attack bitboard from that square on one particular line <ref>[https://github.com/lithander/Leorik/blob/master/Leorik.Core/Bitboard.cs Leorik/Bitboard.cs at master · lithander/Leorik · GitHub]</ref> <ref>[https://www.talkchess.com/forum3/viewtopic.php?f=7&t=79049&start=2 Re: Devlog of Leorik] by [[Thomas Jahn]], [[CCC]], January 04, 2022</ref>.
  
 
=Selected Features=  
 
=Selected Features=  

Revision as of 09:01, 26 March 2022

Home * Engines * Leorik

Leorik Logo [1]

Leorik,
an UCI compatible, didactic open source chess engine by Thomas Jahn, written in C#, and first published in January 2022 - its development reported in a CCC devlog [2]. Unshackled from the constraints of minimalism and simplicity, Leorik is the successor of Thomas Jahn's bare-bones chess engine MinimalChess [3], and as of Spring 2022, work in progress.

Leorik Attacks

Leorik is a bitboard engine and applies an unique approach in determining sliding piece attacks based on line-wise attacks on the otherwise empty board (either pre-calculated or calculated on the fly). All bits below the slider's origin square bit are used to separate positive and negative rays to scan the nearest blocker (if any) accordingly. Positive rays use the line occupancy, intersected with the bits not below to fill its LS1B (if any) down (MaskLow => bb ^ (bb - 1)). Negative Rays use the line occupancy, intersected with the bits below to fill its MS1B (if any) down (MaskHigh => 0x7FFFFFFFFFFFFFFFUL >> leadingZeroCount(bb|1)). The symmetric difference of both down fills, restricted to the line-wise attacks on the otherwise empty board results in the sliding attack bitboard from that square on one particular line [4] [5].

Selected Features

[6]

Board Representation

Search

Evaluation

See also

Forum Posts

External Links

Chess Engine

Misc

References

Up one level