我正在使用标准alpha beta修剪搜索算法构建一个Reversi播放器.我正在尝试添加转换表以在搜索树中存储先前计算的节点.所以我需要哈希表示游戏板(状态)的二维数组并存储一个值.
我不能提出任何比循环迭代我的数组并将所有值加在一起更好的东西,将它们与偏移相乘以获得唯一的哈希值.
@Override
public int hashCode() {
if (dirtyHash) {
int hash = 0;
for (int i = 0; i < Board.SIZEX; i++)
for (int j = 0; j < Board.SIZEY; j++)
hash += board[i][j] * (i + Board.SIZEY * j);
hashValue = hash;
dirtyHash = false;
}
return hashValue;
}
Run Code Online (Sandbox Code Playgroud)
我怀疑必须有一个更聪明的方法来做到这一点?有人有任何想法吗?
如果我有两个UUID,是否有"安全"方法来生成第三个复合UUID.这是对unique这个词的一些统计定义.所以我正在寻找下面的函数f
UUID generatedUUID = f(UUID a, UUID b)
Run Code Online (Sandbox Code Playgroud)
XOR?
我正在迁移使用Bean Validation的引用Hibernate实现构建的应用程序.在此代码中使用了注释@NotBlank(org.hibernate.validator.constraints.NotBlank).
但是,在我的新Websphere 8容器中,捆绑了一个Bean Validation实现,我想使用它.但是,@NotBlank似乎没有参与Bean Validation API.
有关如何使用正确的Bean Validation注释模拟标记的任何建议?我想有些东西开头:
@NotNull@Size(min=1)