mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Compute KK_idx[] at init time
This commit is contained in:
parent
f68df60fe5
commit
6f11b0438d
1 changed files with 30 additions and 103 deletions
|
@ -162,7 +162,7 @@ auto item(DTZPiece& e, int , int ) -> decltype(e)& { return e; }
|
|||
auto item(WDLPawn& e, int stm, int f) -> decltype(e.file[stm][f])& { return e.file[stm][f]; }
|
||||
auto item(DTZPawn& e, int , int f) -> decltype(e.file[f])& { return e.file[f]; }
|
||||
|
||||
const uint8_t MapA1D1D4[] = {
|
||||
const uint8_t MapA1D1D4[64] = {
|
||||
6, 0, 1, 2, 0, 0, 0, 0,
|
||||
0, 7, 3, 4, 0, 0, 0, 0,
|
||||
0, 0, 8, 5, 0, 0, 0, 0,
|
||||
|
@ -208,108 +208,7 @@ const uint8_t Invflap[] = {
|
|||
11, 19, 27, 35, 43, 51
|
||||
};
|
||||
|
||||
const short KK_idx[10][64] = {
|
||||
{
|
||||
-1, -1, -1, 0, 1, 2, 3, 4,
|
||||
-1, -1, -1, 5, 6, 7, 8, 9,
|
||||
10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25,
|
||||
26, 27, 28, 29, 30, 31, 32, 33,
|
||||
34, 35, 36, 37, 38, 39, 40, 41,
|
||||
42, 43, 44, 45, 46, 47, 48, 49,
|
||||
50, 51, 52, 53, 54, 55, 56, 57
|
||||
},
|
||||
{
|
||||
58, -1, -1, -1, 59, 60, 61, 62,
|
||||
63, -1, -1, -1, 64, 65, 66, 67,
|
||||
68, 69, 70, 71, 72, 73, 74, 75,
|
||||
76, 77, 78, 79, 80, 81, 82, 83,
|
||||
84, 85, 86, 87, 88, 89, 90, 91,
|
||||
92, 93, 94, 95, 96, 97, 98, 99,
|
||||
100,101,102,103,104,105,106,107,
|
||||
108,109,110,111,112,113,114,115
|
||||
},
|
||||
{
|
||||
116,117, -1, -1, -1,118,119,120,
|
||||
121,122, -1, -1, -1,123,124,125,
|
||||
126,127,128,129,130,131,132,133,
|
||||
134,135,136,137,138,139,140,141,
|
||||
142,143,144,145,146,147,148,149,
|
||||
150,151,152,153,154,155,156,157,
|
||||
158,159,160,161,162,163,164,165,
|
||||
166,167,168,169,170,171,172,173
|
||||
},
|
||||
{
|
||||
174, -1, -1, -1,175,176,177,178,
|
||||
179, -1, -1, -1,180,181,182,183,
|
||||
184, -1, -1, -1,185,186,187,188,
|
||||
189,190,191,192,193,194,195,196,
|
||||
197,198,199,200,201,202,203,204,
|
||||
205,206,207,208,209,210,211,212,
|
||||
213,214,215,216,217,218,219,220,
|
||||
221,222,223,224,225,226,227,228
|
||||
},
|
||||
{
|
||||
229,230, -1, -1, -1,231,232,233,
|
||||
234,235, -1, -1, -1,236,237,238,
|
||||
239,240, -1, -1, -1,241,242,243,
|
||||
244,245,246,247,248,249,250,251,
|
||||
252,253,254,255,256,257,258,259,
|
||||
260,261,262,263,264,265,266,267,
|
||||
268,269,270,271,272,273,274,275,
|
||||
276,277,278,279,280,281,282,283
|
||||
},
|
||||
{
|
||||
284,285,286,287,288,289,290,291,
|
||||
292,293, -1, -1, -1,294,295,296,
|
||||
297,298, -1, -1, -1,299,300,301,
|
||||
302,303, -1, -1, -1,304,305,306,
|
||||
307,308,309,310,311,312,313,314,
|
||||
315,316,317,318,319,320,321,322,
|
||||
323,324,325,326,327,328,329,330,
|
||||
331,332,333,334,335,336,337,338
|
||||
},
|
||||
{
|
||||
-1, -1,339,340,341,342,343,344,
|
||||
-1, -1,345,346,347,348,349,350,
|
||||
-1, -1,441,351,352,353,354,355,
|
||||
-1, -1, -1,442,356,357,358,359,
|
||||
-1, -1, -1, -1,443,360,361,362,
|
||||
-1, -1, -1, -1, -1,444,363,364,
|
||||
-1, -1, -1, -1, -1, -1,445,365,
|
||||
-1, -1, -1, -1, -1, -1, -1,446
|
||||
},
|
||||
{
|
||||
-1, -1, -1,366,367,368,369,370,
|
||||
-1, -1, -1,371,372,373,374,375,
|
||||
-1, -1, -1,376,377,378,379,380,
|
||||
-1, -1, -1,447,381,382,383,384,
|
||||
-1, -1, -1, -1,448,385,386,387,
|
||||
-1, -1, -1, -1, -1,449,388,389,
|
||||
-1, -1, -1, -1, -1, -1,450,390,
|
||||
-1, -1, -1, -1, -1, -1, -1,451
|
||||
},
|
||||
{
|
||||
452,391,392,393,394,395,396,397,
|
||||
-1, -1, -1, -1,398,399,400,401,
|
||||
-1, -1, -1, -1,402,403,404,405,
|
||||
-1, -1, -1, -1,406,407,408,409,
|
||||
-1, -1, -1, -1,453,410,411,412,
|
||||
-1, -1, -1, -1, -1,454,413,414,
|
||||
-1, -1, -1, -1, -1, -1,455,415,
|
||||
-1, -1, -1, -1, -1, -1, -1,456
|
||||
},
|
||||
{
|
||||
457,416,417,418,419,420,421,422,
|
||||
-1,458,423,424,425,426,427,428,
|
||||
-1, -1, -1, -1, -1,429,430,431,
|
||||
-1, -1, -1, -1, -1,432,433,434,
|
||||
-1, -1, -1, -1, -1,435,436,437,
|
||||
-1, -1, -1, -1, -1,459,438,439,
|
||||
-1, -1, -1, -1, -1, -1,460,440,
|
||||
-1, -1, -1, -1, -1, -1, -1,461
|
||||
}
|
||||
};
|
||||
int KK_idx[10][64];
|
||||
|
||||
const uint8_t WDL_MAGIC[] = { 0x71, 0xE8, 0x23, 0x5D };
|
||||
const uint8_t DTZ_MAGIC[] = { 0xD7, 0x66, 0x0C, 0xA5 };
|
||||
|
@ -1689,6 +1588,34 @@ void Tablebases::init(const std::string& paths)
|
|||
}
|
||||
}
|
||||
|
||||
// Compute KK_idx[] that encodes all the 461 possible legal positions of a couple of
|
||||
// kings where first king is on a1-d1-d4 triangle. When first king is on the a1-d4
|
||||
// diagonal, second king is assumed not to be above the a1-h8 diagonal.
|
||||
int code = 0;
|
||||
std::vector<std::pair<int, Square>> bothOnDiagonal;
|
||||
|
||||
for (int idx = 0; idx < 10; idx++)
|
||||
for (Square s1 = SQ_A1; s1 <= SQ_H8; ++s1)
|
||||
if (idx == MapA1D1D4[s1] && (idx || s1 == SQ_B1)) // SQ_B1 is mapped to 0
|
||||
for (Square s2 = SQ_A1; s2 <= SQ_H8; ++s2)
|
||||
{
|
||||
if ((StepAttacksBB[KING][s1] | s1) & s2) // Illegal position
|
||||
KK_idx[idx][s2] = -1;
|
||||
|
||||
else if (!off_A1H8(s1) && off_A1H8(s2) > 0)
|
||||
KK_idx[idx][s2] = -1; // First king on diagonal, second above
|
||||
|
||||
else if (!off_A1H8(s1) && !off_A1H8(s2))
|
||||
bothOnDiagonal.push_back(std::make_pair(idx, s2));
|
||||
|
||||
else
|
||||
KK_idx[idx][s2] = code++;
|
||||
}
|
||||
|
||||
// Legal positions with both kings on diagonal are encoded as last ones
|
||||
for (auto p : bothOnDiagonal)
|
||||
KK_idx[p.first][p.second] = code++;
|
||||
|
||||
for (PieceType p1 = PAWN; p1 < KING; ++p1) {
|
||||
WDLHash.insert({KING, p1, KING});
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue