Now I got the following problem: how to rotate/mirror the board for a unique representation.Both are the same board, but has anyone made an algorithm that rotates the board or an area of the board in a unique way?
I don't need the move order, just the "snapshot" of the board.

Compute the the min(8 Zobrist hashes for all mirror/rot combinations)

(x, y), (inv Y, x), (inv X, inv Y), (y, inv X), (inv X, y), (inv Y, inv X), (x, inv Y), (y, x).

Call the smallest of the 8 hashes the "canonical hash".

Make a database of "canonical hashes". Since Zobrist hashes can be updated incrementally, checking over the legal moves is just xoring the 8 hashes of the each legal move (with a given mirror/rot) to the hashes of the current position in that same mirror/rot. You store 8 hashes for the current position (=without the move) and compute the 8 hashes of the next position. The smallest of these is the canonical of the next position. This is repeated for each legal move. Its simple, but perhaps my explanation makes it sound more complicated than it is ;-)
This is going to sound really stupid. How do I compute the Zobrist Hash?

What is the Zobrist Hash of the following board?

$$c
$$ +---------------------------------------+
$$ | . . . . . . . . . . . . . . . . . . . |
$$ | . . X X O . . . . . . . . . . . . . . |
$$ | . . X O O X . O . . O . . . . . . . . |
$$ | . . X O . . . . . , . . . . . X . . . |
$$ | . . . O . . . . . . . . . . . X X . . |
$$ | . . X . . . . . . . . . . . O X O . . |
$$ | . . . . . . . . . . . . . . . O . . . |
$$ | . . O . . . . . . . . . . . . . . . . |
$$ | . . . . . . . . . . . . . . . . X . . |
$$ | . . . , . . . . . , . . . . . X . . . |
$$ | . . . . . . . . . . . . . . O O O . . |
$$ | . . . . . . . . . . . . . . . . . . . |
$$ | . . . . . . . . . . . . . . . X . . . |
$$ | . . O . . . . . . . . . . . O O O . . |
$$ | . . . . . . . . . . . . . . . . . . . |
$$ | . . O O . . . . . X . . X . . , X . . |
$$ | . . O X . X . . . . . . . . . X . . . |
$$ | . . X . X . . . . . . . . . . . . . . |
$$ | . . . . . . . . . . . . . . . . . . . |
$$ +---------------------------------------+

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

Reply via email to