buildTable static method

List<List<int>> buildTable(
  1. BuiltVariant variant,
  2. int seed
)

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;
}