tt: Zobrist 数组在程序启动时初始化而非用静态值

This commit is contained in:
Calcitem 2020-09-02 00:29:54 +08:00
parent 70b8c8fa6a
commit 655d4cabce
3 changed files with 19 additions and 105 deletions

View File

@ -28,8 +28,6 @@
#include <string>
#include <vector>
#include <QString>
#include "types.h"
const std::string engine_info(bool to_uci = false);

View File

@ -38,109 +38,7 @@ string tips;
namespace Zobrist
{
#ifdef TRANSPOSITION_TABLE_CUTDOWN
const Key psq[PIECE_TYPE_NB][SQUARE_NB] = {
{
0x4E421A, 0x3962FF, 0x6DB6EE, 0x219AE1,
0x1F3DE2, 0xD9AACB, 0xD51733, 0xD3F9EA,
0xF5A7BB, 0xDC4109, 0xEE4319, 0x7CDA7A,
0xFD7B4D, 0x4138BE, 0xCCBB2D, 0xDA6097,
0x06D827, 0xCBC16C, 0x46F125, 0xE29F22,
0xCAAB94, 0x5B02DB, 0x877CD6, 0x35E438,
0x49FDAE, 0xE68314, 0xBE1664, 0x1F49D3,
0x50F5B1, 0x149AAF, 0xF509B9, 0x47AEB5,
0x18E993, 0x76BB4F, 0xFE1739, 0xF87B87,
0x0A8CD2, 0x630C6B, 0x88F5B4, 0x0A583E,
},
{
0xA0128E, 0x6F2251, 0x51E99D, 0x6D35BF,
0x66D6D9, 0x87D366, 0x75A57A, 0x534FC4,
0x1FE34B, 0xAD6FB0, 0xE5679D, 0xF88AFF,
0x0462DA, 0x4BDE96, 0xF28912, 0x10537E,
0x26D8EA, 0x37E6E7, 0x0871D9, 0xCD5F4F,
0xF4AFA1, 0x44A51B, 0x772656, 0x8B7965,
0xD8F17D, 0x80F3D7, 0x6B6206, 0x19B8BB,
0xFBC229, 0x0FCAB4, 0xFD7374, 0xA647B9,
0x296A8D, 0xA3D742, 0x624D6D, 0x459FD4,
0xCE8C26, 0x965448, 0x410171, 0x1EDD7A,
},
{
0x1FCF95, 0xA5634E, 0x21976A, 0x32902D,
0x55A27C, 0x49EC5F, 0x0176A1, 0xCAAAEF,
0x145886, 0xB4C808, 0x0153EE, 0x7D78DF,
0xE9C3C5, 0x66B7A6, 0x3CD930, 0xDBBA23,
0xF19841, 0x6BEFDF, 0xB979FE, 0xBA4D06,
0x96AECF, 0x33B96E, 0x76A99C, 0x1B8762,
0x747B20, 0x0DEC24, 0xA4E632, 0xBA2442,
0x59C91B, 0x41482D, 0xF2CD39, 0x30E9C1,
0x6B156D, 0xC7F191, 0x012D36, 0xC66B36,
0x631560, 0xA891FC, 0xF6C8AC, 0xD80B94,
},
{
0xF641E9, 0xF164BF, 0x2DBE4C, 0xE2A40C,
0x53FA06, 0x4F3117, 0x0ACA70, 0x2C72F5,
0xC81047, 0x4B76AE, 0xEB55C8, 0x0DB6EF,
0x7F57AB, 0x22D060, 0x390554, 0xDE9A43,
0x6583AF, 0x41D141, 0x9CBF92, 0x7E528F,
0x2BEFA1, 0x5C5FDC, 0x4DDAFA, 0x7C98A1,
0x65A13B, 0x2953BF, 0x8769A8, 0xE6DCA1,
0xD01A6E, 0xBCD935, 0x175659, 0xAD5A73,
0xB04E7D, 0x815F53, 0x12469A, 0xB2F25C,
0x564E4B, 0xD19437, 0xA4F63C, 0x7169E5,
},
};
#else
const Key psq[PIECE_TYPE_NB][SQUARE_NB] = {
{
0x618A9CF24E421A, 0xBA7A364A3962FF, 0xA4306AD06DB6EE, 0xBD592807219AE1,
0x83E4F70B1F3DE2, 0x5153D8FCD9AACB, 0x4A996847D51733, 0x2719CCC6D3F9EA,
0x7AE39BDEF5A7BB, 0xBCD7D5DEDC4109, 0x5B14285CEE4319, 0x9F721DD87CDA7A,
0x5D9ACD64FD7B4D, 0x620F60444138BE, 0x9725301DCCBB2D, 0x9275D47FDA6097,
0xF5EC163506D827, 0xDBF647FACBC16C, 0xB520224946F125, 0xB2889032E29F22,
0x964C65F0CAAB94, 0x461170C85B02DB, 0xA886E3A7877CD6, 0x26F1B8EF35E438,
0xF5B97EF849FDAE, 0xEE7C5D59E68314, 0x32648EFABE1664, 0x6189EDE91F49D3,
0x93CBB24B50F5B1, 0xF0F6C79D149AAF, 0x3A993B39F509B9, 0x1E5308DE47AEB5,
0x2600EE1A18E993, 0x390B489E76BB4F, 0x6F3B9027FE1739, 0x095BADF5F87B87,
0x8BEE19670A8CD2, 0x6CF81326630C6B, 0xADE52B7888F5B4, 0x8D3F6C790A583E,
},
{
0xCB53C13BA0128E, 0x3F72BC2E6F2251, 0xB42ED55551E99D, 0x4984708B6D35BF,
0x9543165266D6D9, 0xAAD0136987D366, 0x97D1867575A57A, 0xB207C471534FC4,
0xD2303A381FE34B, 0x93490C78AD6FB0, 0x87113B18E5679D, 0x54391F89F88AFF,
0xB6DEDA460462DA, 0x5185B8464BDE96, 0x51C69A99F28912, 0x46774A0A10537E,
0xE006203726D8EA, 0xA5474E6237E6E7, 0x39AC6AA70871D9, 0x3DEE0C9FCD5F4F,
0xF818EB3AF4AFA1, 0x8F3A441844A51B, 0x8A25D496772656, 0xCE06B0CA8B7965,
0x626F5F46D8F17D, 0x944977DB80F3D7, 0x7A227AA66B6206, 0x4DCC135019B8BB,
0x711EC2C8FBC229, 0xE7BB68800FCAB4, 0xD3955CDAFD7374, 0xE7534419A647B9,
0x9FDCA93E296A8D, 0xFDB2801DA3D742, 0xE3C38E0C624D6D, 0x4D69B7E2459FD4,
0x5A3A714CCE8C26, 0x05D969D4965448, 0x34FFB957410171, 0x9B1A08811EDD7A,
},
{
0xC6F613271FCF95, 0xCD947ECFA5634E, 0x8DB775C121976A, 0xD8E8477932902D,
0x1CAD3B5655A27C, 0x8AC13C7C49EC5F, 0xBA076D030176A1, 0xAC96DC58CAAAEF,
0xFEEFB931145886, 0x0E5CCD93B4C808, 0x9BDB4F0C0153EE, 0xAEB4F8927D78DF,
0x621E3A9EE9C3C5, 0xDE5AA56E66B7A6, 0x030E97EE3CD930, 0xE9A79619DBBA23,
0x77B25AEAF19841, 0xB8E4263C6BEFDF, 0xCE932447B979FE, 0xFFEE0A6DBA4D06,
0x241CFD8796AECF, 0xFE8A5B9C33B96E, 0xD47296D976A99C, 0x7AB3259A1B8762,
0x7977FD45747B20, 0x84C2C36A0DEC24, 0x12CF8CDEA4E632, 0xC02BE51BBA2442,
0xBD78281F59C91B, 0x5058264241482D, 0xA79BA355F2CD39, 0x3274B36F30E9C1,
0x751C8B5D6B156D, 0xB7C8814FC7F191, 0x11E74CCF012D36, 0xF58E3A35C66B36,
0xF92812B1631560, 0x6E98FEA1A891FC, 0x3A00752DF6C8AC, 0xDE4AC1B9D80B94,
},
{
0x1382738DF641E9, 0xF698FD60F164BF, 0xC1E4F6772DBE4C, 0x80AD23BCE2A40C,
0x22AD6ADB53FA06, 0xFB5D2D614F3117, 0x1DDDDF550ACA70, 0x962A4AD92C72F5,
0x46EB4A0AC81047, 0x140BB5664B76AE, 0xF5088729EB55C8, 0x148E44E10DB6EF,
0x1623D3EB7F57AB, 0x6E826D9722D060, 0x49C27320390554, 0x0C35E2C5DE9A43,
0x594468826583AF, 0xE190283B41D141, 0xEA3D0B0A9CBF92, 0x36BDEA707E528F,
0x4FE884872BEFA1, 0xE70A0AB95C5FDC, 0xA8EE1E864DDAFA, 0xDD58D6957C98A1,
0xFD678C8865A13B, 0xFF15F6332953BF, 0xDCE23A318769A8, 0xDF4C292EE6DCA1,
0xFD34EA18D01A6E, 0xFA1300F7BCD935, 0xAAC5CC68175659, 0xE0C64BA5AD5A73,
0x5ECF7987B04E7D, 0xAB38FFE6815F53, 0x94EA1A1812469A, 0x20EDFF94B2F25C,
0x0B2D4606564E4B, 0x83381E3CD19437, 0xD3DB04A0A4F63C, 0x789C60EF7169E5,
},
};
#endif // TRANSPOSITION_TABLE_CUTDOWN
Key psq[PIECE_TYPE_NB][SQUARE_NB];
}
#ifdef ONLY_USED_FOR_CONVERT
@ -159,6 +57,12 @@ int main(void)
#endif
namespace
{
constexpr PieceType PieceTypes[] = { NO_PIECE_TYPE, BLACK_STONE, WHITE_STONE, BAN };
} // namespace
/// operator<<(Position) returns an ASCII representation of the position
#if 0
@ -213,6 +117,16 @@ Move cuckooMove[8192];
void Position::init()
{
PRNG rng(1070372);
for (PieceType pt : PieceTypes)
for (Square s = SQ_0; s < SQUARE_NB; ++s)
Zobrist::psq[pt][s] = rng.rand<Key>();
// Prepare the cuckoo tables
std::memset(cuckoo, 0, sizeof(cuckoo));
std::memset(cuckooMove, 0, sizeof(cuckooMove));
return;
}

View File

@ -20,6 +20,7 @@
#include "gamewindow.h"
#include "misc.h"
#include "bitboard.h"
#include "position.h"
QString APP_FILENAME_DEFAULT = "MillGame";
@ -43,6 +44,7 @@ QString getAppFileName()
int main(int argc, char *argv[])
{
Bitboards::init();
Position::init();
QApplication a(argc, argv);
MillGameWindow w;