Commit graph

100 commits

Author SHA1 Message Date
76f3c41110 Add naive knight move generation 2022-07-22 10:37:12 +02:00
8428ac0028 Add naive king move generation 2022-07-22 10:37:12 +02:00
e3ea602bb9 Remove spurious links in 'Square' documentation 2022-07-22 10:37:12 +02:00
8fdbdd1f61 Remove spurious links in 'Bitboard' documentation 2022-07-22 10:36:59 +02:00
fa68be533a Add 'Bitboard::iter_powerset' 2022-07-22 10:36:59 +02:00
2b9b637ab5 Add 'Piece' enum 2022-07-22 10:36:59 +02:00
337b8f61f4 Add 'NUM_VARIANTS' constant to all 'board' enums 2022-07-22 10:36:59 +02:00
2c140d0481 Consistently use 'Self' type in 'impl' blocks 2022-07-22 10:36:59 +02:00
3f4c23321f Fix typo in 'board::Color' documentation 2022-07-22 10:36:59 +02:00
500e6fd22f Add 'Color::slide_board_with_blockers' 2022-07-22 10:36:59 +02:00
b3222276ab Improve 'board::BitboardIterator'
All checks were successful
continuous-integration/drone/push Build is passing
* Accurate 'size_hint'.
* Exact size.
* Fused iterator (keeps returning 'None' after returning 'None' once).
2022-07-18 18:21:16 +02:00
7c8dce8f49 Add 'Color::{forward,backward}_direction' 2022-07-18 17:37:24 +02:00
aa3b464bb8 Add 'CastleRights::unmoved_rooks'
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-18 13:50:23 +02:00
c5949fb01e Add 'CastleRights::without_{king,queen}_side' 2022-07-18 13:38:52 +02:00
562182d26b Add 'CastleRights::has_{king,queen}_side' 2022-07-18 13:28:23 +02:00
63c5d2dc34 Add 'CastleRights' enum 2022-07-18 13:27:03 +02:00
e0c667d090 Add 'Color' enum 2022-07-18 13:22:04 +02:00
3a6c4113fc Rename 'board::direction{s,}' 2022-07-18 13:11:37 +02:00
fcf309fad4 Fix 'cargo clippy' launched by hand
All checks were successful
continuous-integration/drone/push Build is passing
Mis-matching 'rustc' versions lead to errors.
2022-07-18 11:50:08 +02:00
66e5109157 Statically assert zero-cost invariants
All checks were successful
continuous-integration/drone/push Build is passing
Since some or all of those invariants will come in handy to ensure we
use as little memory as possible, to maximize the speed of the move
generation later on.
2022-07-18 11:05:41 +02:00
ca4603ff02 Add 'static_assert' macro 2022-07-18 11:04:52 +02:00
d132e3779e Enable 'doCheck' in nix package 2022-07-18 10:04:47 +02:00
74d2a2cf6a Add 'Bitboard::{LIGHT,DARK}_SQUARES
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-18 10:01:23 +02:00
f1f6198e5f Make use of 'Bitboard::is_empty' 2022-07-18 10:01:23 +02:00
057b383f8c Add 'Bitboard::is_empty' 2022-07-18 00:33:24 +02:00
0dde0d5dbd Add 'Direction::slide_{square,board}' 2022-07-18 00:33:24 +02:00
896f615bba Add 'Bitboard::{ANTI_,}DIAGONAL' 2022-07-18 00:33:24 +02:00
8e92bc2370 Add 'Direction::move_square' 2022-07-18 00:33:24 +02:00
52d3974063 Add 'Direction::iter_{rook,bishop,royalty,knight}' 2022-07-18 00:33:24 +02:00
8b27d302d7 Add 'Direction::move_board'
Encapsulates the way to move a piece on a board, avoiding the need to
mask and shift by hand.
2022-07-18 00:33:24 +02:00
4e98678ccd Add 'board::Direction' enum 2022-07-18 00:33:24 +02:00
e8b5c9f73c Use 'Square::index' in 'Square::{file,rank}_index' 2022-07-18 00:33:24 +02:00
17b8ee5eb3 Add 'Square::index' 2022-07-18 00:33:24 +02:00
61e7a4e8d1 Add 'Bitboard::count' 2022-07-18 00:33:24 +02:00
db0a7e9f60 Add 'Rank::{up,down}' 2022-07-17 21:26:03 +02:00
63228c2d9e Add 'File::{left,right}' 2022-07-17 21:26:03 +02:00
87473908cf Add 'Square' constructor from 'File', 'Rank' 2022-07-17 21:26:03 +02:00
77b15edc36 Don't return 'Bitboard' from 'Square::{file,rank}' 2022-07-17 21:26:03 +02:00
bb04368f41 Add 'File' enum 2022-07-16 14:41:07 +02:00
4eff49f367 Add 'Rank' enum 2022-07-16 14:41:07 +02:00
fdfc1fcf63 Add GDB pretty-printers 2022-07-16 14:41:07 +02:00
41903be143 Introduce 'Bitboard::ALL' 2022-07-16 14:41:07 +02:00
bf71a5c205 Add Drone CI 2022-07-16 14:41:07 +02:00
3c157efe84 Add bitboard iteration
Introduce 'BitboardIterator', use it to implement 'IntoIterator' for
'Bitboard'.
2022-07-16 14:41:07 +02:00
4bc597439e Move 'board::bitboard' into folder module
I will be adding a 'BitboardIterator' type, and it makes more sense to
use a folder for this module at this point.
2022-07-16 14:41:07 +02:00
755e891b17 Add 'Bitboard' and 'Square' definitions 2022-07-16 14:41:07 +02:00
2c36ee266d Move binary crate into 'bin' folder 2022-07-15 21:32:39 +02:00
36656a6a40 Add generated files to git ignore 2022-07-15 19:57:21 +02:00
454267e4ad Add nix flake 2022-07-15 19:56:54 +02:00
2ad2927b14 Bootstrap build system 2022-07-15 19:56:01 +02:00