首页 > 解决方案 > 检查两个数字在给定基数中是否相互镜像(符号相反)的快速方法

问题描述

我目前正在研究一个可以连续播放四个的小引擎。在我的快速评估表的实现中(一个包含已经检查过的位置,当它们通过分析再次出现时要查找,例如,产生一个已经检查过的位置的移动订单),我将评估与最佳移动一起保存所述表格,在每个位置唯一的条目下,并对应于棋盘状态的表示(一个 6 行乘 7 列的矩阵,其中可以包含 0 表示空闲位置,1 表示玩家 1 占用的单元格,-1 表示玩家 2) 占据的牢房。这个唯一的 id 由一个对应于 42 位以 3 为底的数字的数字给出,其中每个数字是 0->empty、1->p1、2->p2。

由于 id 的生成方式使得 base 3 palyndrome 实际上对应于镜像板配置,我当然可以将 id 中的数字转换为包含 base 3 符号的数组,将它们以相反的顺序排列并检查再次在表中,但是由于在引擎中应该始终尝试挤压最大性能(而我的已经足够慢了:P),如果有任何快速技巧可以帮助我,我正在徘徊,也许,带来这个考虑到我正在考虑将游戏扩展到更多玩家,请更进一步并检查任何可能的基础。

因此,如果你们中的任何一个人甚至只是一个想法,它都会被很好地接受!

PS:如果你想让我发布一些代码,我可以,但我真的不认为有必要,因为我们正在谈论算法。

超PS:请原谅我的英语不好!:D

标签: algorithmperformancepalindrome

解决方案


推荐阅读