The tables in question are present in virtually all bitboard programs, with some small variety depending on board layout. They are nothing more than precomputed bitboard masks for detecting passed pawns, doubled pawns, etc. Nothing very interesting.Tony wrote: So he changes the tables befor he uses them ? So the tables can't be compared with data tables from another program ?
Now why would somebody do that ? I really wonder. Could it be meant to hide something ? No, it couldn't.
Strelka's main function contains a big 'for' loop which iterates over all 64 squares of the board and XORs all entries of all bitboard arrays by Random[0][13]:
Code: Select all
for (i = 0; i < 64; i++) {
MaskPawnDoubled[i] ^= Random[0][13];
MaskPawnIsolated[i] ^= Random[0][13];
MaskPawnProtectedW[i] ^= Random[0][13];
MaskPawnProtectedB[i] ^= Random[0][13];
MaskPawnAttacksW1[i] ^= Random[0][13];
MaskPawnAttacksB1[i] ^= Random[0][13];
MaskPawnAttacksW2[i] ^= Random[0][13];
MaskPawnAttacksB2[i] ^= Random[0][13];
MaskPawnPassedW[i] ^= Random[0][13];
MaskPawnPassedB[i] ^= Random[0][13];
...
}
The arrays Christopher asks about below are not XORed with Random[0][13].
Yuri probably doesn't read the CCC, but I hope he won't mind that I explain the purpose of these two arrays. The two arrays are used to compute king shelter scores. The program looks at the white and black pawns in a 3x4 rectangle in front of the king, and considers these as two 12-bit integers. One of these integers is used to look up a value in PawnStruScore0, the other a value in PawnStruScore1. These values are added to obtain a king shelter score. It's all very simple and straightforward.Christopher Conkie wrote: PawnStruScore0 and PawnStruScore1
I would like to know what Yuri thinks these two arrays do.
Tord