分块旋转棋盘为什么可以按反序完整还原:独立观察第11例
把棋盘拆成互不重叠的小块,每块做一次旋转,会重新排列所有格子却不丢失信息。下一步改变分块位置后,虽然图案更复杂,仍可以逐步逆转。
棋盘为四乘四并且左右、上下循环相接。相位零使用起点坐标零和二,相位一使用一和三,各组成四个二乘二块。按屏幕坐标把每块顺时针旋转给定次数,一次操作里的块互不重叠。
输入与计算记录
初始四行:[[0, 5, 4, 9], [13, 6, 7, 15], [11, 12, 10, 1], [14, 8, 3, 2]];每个操作记录相位和顺时针四分之一圈的次数。
第1步,相位1,旋转3次: [9, 8, 5, 2] [11, 7, 10, 13] [1, 6, 12, 15] [0, 3, 4, 14] 第2步,相位0,旋转1次: [11, 9, 10, 5] [7, 8, 13, 2] [0, 1, 4, 12] [3, 6, 14, 15] 第3步,相位0,旋转2次: [8, 7, 2, 13] [9, 11, 5, 10] [6, 3, 15, 14] [1, 0, 12, 4] 第4步,相位0,旋转2次: [11, 9, 10, 5] [7, 8, 13, 2] [0, 1, 4, 12] [3, 6, 14, 15] 第5步,相位0,旋转3次: [9, 8, 5, 2] [11, 7, 10, 13] [1, 6, 12, 15] [0, 3, 4, 14] 第6步,相位1,旋转2次: [14, 4, 3, 0] [15, 12, 6, 1] [13, 10, 7, 11] [2, 5, 8, 9]
阅读记录时先确认编号代表的是格子、对象、时间还是数组位置,再逐项对应输入与输出。中间状态提供了定位差异的依据,最后的一个合计数字不能替代全部步骤;没有对象的集合与数值零也应区别看待。
怎样检查这个结果
每一步应当仍含有零至十五各一个编号。还原时先处理最后一次操作,沿用它的分块相位并旋转相反次数,然后继续向前;只反转旋转方向却保持原操作顺序通常无法还原。
这是有限格子的置换练习,没有格子生成、删除或颜色合并。如果某个规则把多个状态合成同一个状态,就可能失去可逆性,不能因为画面也在旋转就套用这里的恢复方法。
可以遮住结果表先按规则复算第一步,再选择一个边界输入重复操作。若更换规则中的任一前提,应重新推导结果,不要只调整最后答案。这样既能理解本例为何成立,也能看清它在哪些情况下不再适用。
