gpt4 book ai didi

java - 旋转位板

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:56 25 4
gpt4 key购买 nike

我正在使用 Java 中的 24 位位板来表示以下形式的游戏板:

00 01 02 03 04
05 06 07 08 09
10 11 XX 12 13
14 15 16 17 18
19 20 21 22 23

请注意,该板的中间有一个孔,用“XX”表示。我已经生成了合法位板的列表,但由于该板具有正方形的对称性,我可以丢弃大量已由列表中的对称表兄弟表示的位板。

为了检查这些对称性,我需要能够将板旋转 90、180 和 270 度并水平、垂直和对角(在两条对角线上)镜像的函数。显然我想利用位运算,但这就是我陷入困境的地方。我找到了一些关于如何在棋盘上执行此操作的信息,但我无法理解这个概念 - 更不用说如何将其应用于我自己的棋盘情况了。

任何人都可以通过一些解释向我展示如何有效地旋转/镜像位板吗?

最佳答案

我在这里找到了最有效方法的汇编:

http://chessprogramming.wikispaces.com/Flipping+Mirroring+and+Rotating .

例如,64位板的垂直翻转只有13次操作,并且没有任何if语句。旋转可以通过翻转和镜像的组合来完成。

当你第一次看到这些算法时,有些算法看起来就像魔法一样。要真正理解它们,每次操作后转储板的状态会有所帮助。

关于java - 旋转位板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24813932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com