- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在一个8X8的棋盘中,我想知道如何实现棋盘的对称性。
很多位置只是镜子或彼此的旋转(没有棋子或易位能力,方向无法区分)。
通过组合使用棋盘的垂直、水平和对角线镜像,始终可以将棋子的位置固定在 a1-d1-d4 三角形内。
如何在棋盘上实现这些对称性?这是否取决于所选择的板表示形式的选择(位板、0x88、8x8 阵列等)?
编辑 1:目标是实现残局表的生成及其压缩。
最佳答案
如果您希望压缩板,则可以生成每个板的规范表示。一个older answer @DocBrown 很好地表达了这一点:
To make this more efficient, you can work with a "canonical representation" of each board, defined as follows. Generate all symmetric boards of a given one, pack each one of it into a byte array, and among those arrays keep the array which, interpreted as a big number, has the minimum value. This packed representation is a unique identifier of the symmetry class of each board and can be easily put in a dictionary / hash table, which makes testing if that symmetry class already appeared very efficient.
这个问题引用了N-queens problem由于每个皇后都无法区分,因此可以找到很多对称性。对于最终游戏板,情况(很少)是这样,所以我不确定您会节省多少。
关于algorithm - 处理棋盘对称性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21185210/
我正在使用 Ruby 加密并使用 AES-256 通过 JavaScript 解密,但我在跨平台时遇到问题,即在解密 Ruby 的输出时 JS 返回乱码。 我正在使用此处的 JS AES 实现:htt
我是一名优秀的程序员,十分优秀!