buildTable static method
Builds a Zobrist lookup table given variant
and seed
.
Implementation
static List<List<int>> buildTable(BuiltVariant variant, int seed) {
const int numAux =
16; // we need some extra entries for castling rights, ep, etc
const int numParts = 4;
Random r = Random(seed);
int dimX = variant.boardSize.numIndices + numAux;
int dimY = max(variant.pieces.length * 4, Castling.mask + 1);
// castling = dimY + 1;
// turn = dimY + 2;
List<List<int>> table = List<List<int>>.generate(
dimX,
(i) => List<int>.generate(dimY, (j) => 0),
);
for (int i = 0; i < dimX; i++) {
for (int j = 0; j < dimY; j++) {
int value = 0;
for (int k = 0; k < numParts; k++) {
// compute a random 64 bit int
int part = r.nextInt(1 << 16); // 16 bit because max value is 2^32-1
value <<= 16;
value += part;
}
table[i][j] = value;
}
}
return table;
}