问题标签 [bitboard]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
99 浏览

c++ - 将井字游戏玩家位置分配给位板表示

我有 2 个单独的板供 2 个玩家使用:X 和 O。现在我想确定输入的位置 (int x, int y) 是否有效,但我不知道应该如何将其转换为位板表示并将其与给定的棋盘状态进行比较,这让我很头疼。还编写了一个辅助函数来查看棋盘状态 bin()。有没有办法将 X 和 O 板合并为一个,或者我应该保留单独的所有板来检查游戏状态?

0 投票
1 回答
58 浏览

performance - Bitboard 64 位机器:对于 4x4 板,我应该使用 int16 还是 int64?

我正在使用 64 位机器中的位板在 C++ 中编写 4x4 棋盘游戏。我只需要 16 位来实现该板。我应该使用:

  • uint16_t - 减少使用空间?
  • uint64_t - 如果使用 64 位整数进行操作(?)更快,我应该使用它们并在必要时使用 0xFFFF(按位与)屏蔽值吗?
  • uint_fast16_t - 我刚刚发现了这个整数类型,但我不确定它是如何工作的,我是否也需要一个掩码?

我不知道它是否有帮助,但我的处理器是:Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz 1.99 GHz

0 投票
0 回答
51 浏览

python - 'bitboard' 对象不能解释为整数。位板是 np.uint64

所以基本上我正在尝试制作一个国际象棋引擎,并且我开始使用 Board 和 bitboard 表示进行编码。但我无法让位板成为 np.uint64 操作的操作数并在位板上应用 np.uint64 操作,这是位板类:

我正在使用 jupyter 笔记本在后台测试所有内容,并在调用时收到此消息

'bitboard' 对象不能解释为整数

当我单独运行每件作品时,它可以工作:

返回 True 。有一个更好的方法吗 ?我正在努力使国际象棋编程维基最有意义

0 投票
1 回答
45 浏览

java - Java 中可以使用 BigIntegers 来表示位板吗?

我最近开始研究我的学校项目,该项目是用 Java 与计算机玩家编写中国象棋游戏,我想用位板表示棋盘,但是由于棋盘是 9x10,bigint 或 double 不足以表示它。我虽然关于使用 java.math 中的 BigInteger 类,但是我担心它效率不高,因此在为计算机播放器编写代码时会遇到问题....有谁知道 BigInteger 类的效率如何? 在尝试计算最佳计算机动作时,我会遇到问题吗?谢谢。

0 投票
2 回答
26 浏览

python - 国际象棋引擎错误的 4 层板状态数

我正在编写一个国际象棋引擎,并试图让它尽可能快,所以我使用位板来表示每种类型的棋子。我正在打印每个层的不同板状态的数量(层 = 1 人移动),而在第 4 层上它得到了错误的数字。

有没有办法在不筛选所有 200k 4 层位置的情况下找出问题所在?

另外,请注意,我还没有实施易位、检查、过路、典当提升或任何平局规则,因为它们在第 4 次之前都不会产生任何影响。

维基百科链接给出了每层板状态的数量,与我的相比:20、400、8902、197742)

json 文件太大,无法放在这里,但您可以假设它们是正确的。每个文件都有一个带有键 2^0-2^63 的字典,每个键代表文件命名的片段的可能位置。这些值是他们可以从那里去的不同位置。