I only use 2 random numbers per point, one for black and one for white.  I
xor another random number indicating the side to move.

 

David

 

  _____  

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Álvaro Begué
Sent: Wednesday, December 19, 2007 4:15 AM
To: computer-go
Subject: Re: [computer-go] rotate board

 

Say you represent the content of each point with 0 for empty, 1 for black
and 2 for white. Start by creating a table of 19x19x3 random 64-bit numbers.

unsigned long long zobrist_table[19][19][3];

...
unsigned long long zobrist_key=0; 

for(int row=0;row<19;++row){
  for(int col=0;col<19;++col){
    int point_content = board[row][col];
    zobrist_key ^= zobrist_table[row][col][point_content];
  }
}

The result is the zobrist key. In practice, you would make the zobrist key
part of your representation of the board, and when you modify the board, you
just incrementally update the zobrist key. Just remember that when you
change the content of a point, 
new_zobrist_key = old_zobrist_key ^
zobrist_table[row][col][old_point_content] ^
zobrist_table[row][col][new_point_content];

Get that working first and then reread Jacques's post.

Álvaro.




_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to