Здравствуйте дорогие друзья Предыдущая публикация Итак позицию мы описываем с помощью zobrist ключей. Для того чтобы хранить эти ключи в таблице или проще говоря в массиве нужна хеш-функция на вход которой подается ключ и на выходе получаем значение (индекс массива), куда положим ключ. Ясно, что позиций и соответственно ключей будет ну очень много. А таблица будет ограниченного размера и соответственно для разных ключей можно получить одно и то же значение. Это называется коллизией. Простор для экспериментов с разными хеш-функциями широчайший. Бене на глаза попалась PJW-32 (hashpjw) —хеш-функция , разработанная Питером Вэйнбергером (Peter J. Weinberger). Zobrist.java public static int PJWHash(long key,int size) { int hash=0; int test=0; for (int i = 0; i < 8; i++) { hash=(hash<<4)+(byte)(key); if ((test = hash & 0xf0000000) != 0) { hash = ((hash ^ (test >>> 24)) & (0xfffffff)); } key>>>=8; } return hash % size; } public static void cle