algorithm - 检查两个数字在给定基数中是否相互镜像(符号相反)的快速方法
问题描述
我目前正在研究一个可以连续播放四个的小引擎。在我的快速评估表的实现中(一个包含已经检查过的位置,当它们通过分析再次出现时要查找,例如,产生一个已经检查过的位置的移动订单),我将评估与最佳移动一起保存所述表格,在每个位置唯一的条目下,并对应于棋盘状态的表示(一个 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
解决方案
推荐阅读
- android-recyclerview - 使用 LiveData、Room 和 DiffUtil 更新 RecyclerView 项目内的内部视图
- javascript - 如何在jsx中调用变量
- elasticsearch - 具有分组数据的 Elastic Search Metric 可视化
- python - 纸浆:在循环中添加多个 LpSum
- javascript - 重新对齐容器中的光标
- javascript - 未定义的对象
- c++ - 如何制作一个从传递的数组中删除重复项的函数
- javascript - JavaScript:将元素中的所有文本更改为小写(不仅在 UI 上,在 DOM 中也是如此)
- angular - 将音频 blob 从 Angular 发送到烧瓶服务器以保存它
- c++ - 合并排序工作但删除元素c ++