1
0
Fork 0

const lookup table

This commit is contained in:
Paul-Nicolas Madelaine 2025-10-22 22:59:53 +02:00
parent 752150107e
commit 0d22c59cc3
8 changed files with 573 additions and 542 deletions

View file

@ -4,7 +4,7 @@
use crate::bitboard::*;
use crate::board::*;
use crate::lookup::*;
use crate::lookup;
use crate::position::*;
/// **A builder type for chess positions.**
@ -253,7 +253,6 @@ impl Setup {
debug_assert!((self.p_b_q & self.n_b_k & self.r_q_k).is_empty());
let mut reasons = IllegalPositionReasons::new();
let d = InitialisedLookup::init();
let blockers = self.p_b_q | self.n_b_k | self.r_q_k;
let pieces = self.bitboards();
@ -274,13 +273,13 @@ impl Setup {
if pieces.get(!self.turn).king().any(|enemy_king| {
let pieces = pieces.get(self.turn);
!(d.king(enemy_king) & *pieces.get(Role::King)
| d.bishop(enemy_king, blockers)
!(lookup::king(enemy_king) & *pieces.get(Role::King)
| lookup::bishop(enemy_king, blockers)
& (*pieces.get(Role::Queen) | *pieces.get(Role::Bishop))
| d.rook(enemy_king, blockers)
| lookup::rook(enemy_king, blockers)
& (*pieces.get(Role::Queen) | *pieces.get(Role::Rook))
| d.knight(enemy_king) & *pieces.get(Role::Knight)
| d.pawn_attack(!self.turn, enemy_king) & *pieces.get(Role::Pawn))
| lookup::knight(enemy_king) & *pieces.get(Role::Knight)
| lookup::pawn_attack(!self.turn, enemy_king) & *pieces.get(Role::Pawn))
.is_empty()
}) {
reasons.add(IllegalPositionReason::HangingKing);
@ -353,7 +352,7 @@ impl Setup {
.king()
.first()
.is_some_and(|king_square| {
!(d.bishop(king_square, blockers)
!(lookup::bishop(king_square, blockers)
& (pieces.get(!self.turn).queen() | pieces.get(!self.turn).bishop()))
.is_empty()
})