artificial-intelligence - 如何将位板数组转换为列表?

标签 artificial-intelligence chess

如有错误,请指正。搜索算法,即修改后的 alpha beta,探索合法 Action 列表。首先,需要初始化 像这样的位板数组:

unsigned long long Knight_attacks[64]= {0x020800、0x050800 等等...}

每个元素在该方格的所有可能的攻击方格上都将具有 1,例如,knight_attacks[f4] 将在对应于可能的攻击方格的 d5、e6、g6、h5、d3、e2、g2 和 h3 上具有 1来自 f4。

一旦初始化,就需要以某种方式转换为列表......

如何将位板数组转换为列表? 感谢各位 sibling 的帮助。

最佳答案

简单的解决方案包括循环位板的位:

while ( x ) {
   U64 ls1b = x & -x; // isolate LS1B
   ...
   x &= x-1; // reset LS1B
}

更高级的算法可以在国际象棋编程维基中找到: https://chessprogramming.wikispaces.com/Bitboard+Serialization

关于artificial-intelligence - 如何将位板数组转换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37534823/

相关文章:

user-interface - 将国际象棋引擎连接到用 Javascript 制作的现有 GUI

python - 国际象棋编程中的 Unmake move vs copy board

classification - 基于 PGN 格式获取国际象棋生态代码的 python/perl 库

java - 8-Puzzle Solution 无限执行

java - 人工神经网络输入理解

python - 用神经网络填充序列的缺失值

java - self 项目:使用GUI创建国际象棋游戏

java - 如何在OpenCV中获取由四个点定义的四边形内部的像素?

machine-learning - 蛋白质相互作用数据集和MLN脚本解释

machine-learning - 使用 Keras 创建可以生成新的相似数据的模型