use crate::board::Square; pub(crate) const BISHOP_SHR: u8 = 55; pub(crate) const fn bishop_factor(square: Square) -> u64 { match square { Square::A1 => 0x0000404040404040, Square::B1 => 0x0040C100081000E8, Square::C1 => 0x0000401020200000, Square::D1 => 0x0040802004000000, Square::E1 => 0x10403C0180000000, Square::F1 => 0x0040210100800000, Square::G1 => 0x0068104002008000, Square::H1 => 0x0048082080040080, Square::A2 => 0x0000004040404040, Square::B2 => 0x0000002020202020, Square::C2 => 0x00040080184001E4, Square::D2 => 0x0040008020040000, Square::E2 => 0x1040003C01800000, Square::F2 => 0x0078002001008000, Square::G2 => 0x0068001040020080, Square::H2 => 0x0068000820010040, Square::A3 => 0x0000400080808080, Square::B3 => 0x0000200040404040, Square::C3 => 0x0000400080808080, Square::D3 => 0x0000200200801000, Square::E3 => 0x0060200100080000, Square::F3 => 0x0000100021C60021, Square::G3 => 0x0000040010410040, Square::H3 => 0x0000020008208020, Square::A4 => 0x0000804000810100, Square::B4 => 0x0000402000408080, Square::C4 => 0x0000040800802080, Square::D4 => 0x000020100C010020, Square::E4 => 0x0000840000802000, Square::F4 => 0x0001801800240010, Square::G4 => 0x0000080800104100, Square::H4 => 0x0000040400082080, Square::A5 => 0x0000010278010040, Square::B5 => 0x000000813C004040, Square::C5 => 0x000001027A010040, Square::D5 => 0x0000018180280200, Square::E5 => 0x0000204018003080, Square::F5 => 0x0000202040008040, Square::G5 => 0x0000101010002080, Square::H5 => 0x0000080808001040, Square::A6 => 0x0000004100F90080, Square::B6 => 0x0000002080BC0040, Square::C6 => 0x0000004103440080, Square::D6 => 0x0000000080FD0080, Square::E6 => 0x0000020040100100, Square::F6 => 0x0000404040400080, Square::G6 => 0x000000206027D010, Square::H6 => 0x00000008400DE806, Square::A7 => 0x0000002101007200, Square::B7 => 0x0000001041003900, Square::C7 => 0x080000000F8080A0, Square::D7 => 0x0000000008003FC0, Square::E7 => 0x0000000100202000, Square::F7 => 0x0000004040802000, Square::G7 => 0x00000060401043D0, Square::H7 => 0x00000020200413F0, Square::A8 => 0x1400000F00410088, Square::B8 => 0x0000000010410039, Square::C8 => 0x000080000800807E, Square::D8 => 0x000C69003008003F, Square::E8 => 0x0000000001002020, Square::F8 => 0x0000000040408020, Square::G8 => 0x001980004010801F, Square::H8 => 0x0000404040404040, } } pub(crate) const ROOK_SHR: u8 = 52; pub(crate) const fn rook_factor(square: Square) -> u64 { match square { Square::A1 => 0x002000A28110000C, Square::B1 => 0x0018000C01060001, Square::C1 => 0x0040080010004004, Square::D1 => 0x0028004084200028, Square::E1 => 0x0030018000900300, Square::F1 => 0x0020008020010202, Square::G1 => 0x001800410080001F, Square::H1 => 0x0068006801040004, Square::A2 => 0x000028010114000A, Square::B2 => 0x00000C0083000600, Square::C2 => 0x0000080401020008, Square::D2 => 0x0000200200040020, Square::E2 => 0x0000200100020020, Square::F2 => 0x00001800C0006018, Square::G2 => 0x0000180070400018, Square::H2 => 0x0000180030640018, Square::A3 => 0x00300018010C0004, Square::B3 => 0x0004001000080010, Square::C3 => 0x0001000804020008, Square::D3 => 0x0002002004002002, Square::E3 => 0x0001002002002001, Square::F3 => 0x0001001000801040, Square::G3 => 0x0000004040008001, Square::H3 => 0x0000802000200040, Square::A4 => 0x0040200010080008, Square::B4 => 0x0000080010040010, Square::C4 => 0x0001020008040008, Square::D4 => 0x0000020020040020, Square::E4 => 0x0000010020020020, Square::F4 => 0x0000008020010020, Square::G4 => 0x0000008020200040, Square::H4 => 0x0000200020004081, Square::A5 => 0x0000081C00380020, Square::B5 => 0x0000080400100010, Square::C5 => 0x0000400880410010, Square::D5 => 0x0000200200200400, Square::E5 => 0x0000200100200200, Square::F5 => 0x0000200080200100, Square::G5 => 0x0000008000404001, Square::H5 => 0x0000802000200040, Square::A6 => 0x0000010B14002800, Square::B6 => 0x0000030086000C00, Square::C6 => 0x0000084040804200, Square::D6 => 0x0000020004002020, Square::E6 => 0x0000009001803003, Square::F6 => 0x0000004001004002, Square::G6 => 0x000000100800A804, Square::H6 => 0x000000082800D002, Square::A7 => 0x00000109040200A8, Square::B7 => 0x000000808A050014, Square::C7 => 0x0000004048038018, Square::D7 => 0x0000020020040020, Square::E7 => 0x0000002030018030, Square::F7 => 0x0000001800E08018, Square::G7 => 0x0000000810580050, Square::H7 => 0x0000000C04600050, Square::A8 => 0x0000001020891046, Square::B8 => 0x00000080090015C1, Square::C8 => 0x0000004005489101, Square::D8 => 0x0000040810204002, Square::E8 => 0x000C040810002022, Square::F8 => 0x0008000404883002, Square::G8 => 0x0008000400548802, Square::H8 => 0x0000000224104486, } }