苏州工业园区苏雅璐308号信投大厦18楼-22楼 17717624695 jiuyouapp@www.j9.com

资讯中心

旋转镜像后的棋盘怎样识别为同一种布局:四乘四棋盘的八种等价变换(实例15)

2026-11-06

关卡库里两张棋盘可能只是朝向不同。若设计上认为旋转和镜像不改变关卡身份,可以把这些等价变换都列出,再选一个固定表示作为比较依据。

固定规则与输入

棋盘四乘四,颜色编号零、一、二。允许四种直角旋转以及先左右镜像再作四种旋转,共八种变换。按逐行拼接的字符串字典顺序取最小者作为规范表示。

原始四乘四棋盘,颜色编号零、一、二 0120 0010 1211 2202

逐步观察结果

原图顺时针转0度,逐行编码0120001012112202,四行依次为['0120', '0010', '1211', '2202']。

原图顺时针转90度,逐行编码2100220101122100,四行依次为['2100', '2201', '0112', '2100']。

原图顺时针转180度,逐行编码2022112101000210,四行依次为['2022', '1121', '0100', '0210']。

原图顺时针转270度,逐行编码0012211010220012,四行依次为['0012', '2110', '1022', '0012']。

先左右镜像后顺时针转0度,逐行编码0210010011212022,四行依次为['0210', '0100', '1121', '2022']。

先左右镜像后顺时针转90度,逐行编码2100011222012100,四行依次为['2100', '0112', '2201', '2100']。

先左右镜像后顺时针转180度,逐行编码2202121100100120,四行依次为['2202', '1211', '0010', '0120']。

先左右镜像后顺时针转270度,逐行编码0012102221100012,四行依次为['0012', '1022', '2110', '0012']。

不同编码共8个,规范表示为0012102221100012。比较关卡身份时应比较完整规范表示;本例没有使用短哈希值替代它。

独立复核

检查规范表示属于原棋盘的八种结果,并确认对任何等价变换再次规范化都得到相同结果。对称棋盘可能产生重复结果,实际不同布局数不必等于八。

复核时先保留本例输入,再自己写出中间状态。若结果不同,应从最早出现差异的位置检查,尤其留意边界是否包含、索引从哪里开始、取整何时发生,以及是否使用了尚未更新的旧状态。计算得到的结论仅适用于已经说明的规则,修改规则后需要重新验证。

适用范围

只有当关卡规则也尊重这些变换时,合并身份才有意义。固定重力方向、单向门、文字或不对称目标都可能破坏这种等价关系;不能只看格子颜色就删除关卡。