命运2异星噬菌体遗失区域步骤谜题背后原理
(我尝试用算法实现这个问题,但是失败了,希望有更好思路的朋友给予建议,谢谢。欢迎指出文章存在的疏漏或是错误)
该难题来源于命运2中异域武器异星噬菌体获取过程中颇为有趣的一个步骤。

玩家将看到一面由九宫格组成的谜题。九宫格中每格存在一个图案,图案共有四种。当玩家点击某一格时该格所在的行与列包括的所有图案将发生顺序的改变,即所有涉及图案将变为其顺序的后一个。玩家的目标为将所有九宫格图案转变为上方所指定的图案。
我们可以简化这个步骤。
由于图案仅有四种,可以将图案抽象为1、2、3、4。
假设目前的九宫格状态如下:
1 1 1
1 1 1
1 1 1
如果我们点击中间的图案,九宫格将变为如下的形式:
1 2 1
2 2 2
1 2 1
注意:当前图案为4时,点击该图案将基于顺序回到1。
假设我们需要下述九宫格中的图案全部变为1。
4 4 4
4 1 1
4 1 1
只需要点击第一个格子即可达成我们的目标。
了解九宫格的基本运作逻辑后,如何解开这个谜题就等同于如何通过有限的步骤将一个由随机图案的九宫格转变为全由目标图案所组成的状态。
由于图案仅有四种变化,即对一个图案点击5次是没有意义的,结果将与点击1次的结果相同。对同一图案点击四次时,图案将恢复至原本的样子。
该谜题可以简单抽象为一个数学问题。九宫格可以将其抽象为一个3行3列的矩阵。
而对图案的点击,可以看作将图案所在的行与列结果都加1。
1 1 1
1 1 1
1 1 1
对于第一个图案进行操作,等同于第1行与第1列均加1,得到如下结果
2 2 2
2 1 1
2 1 1
也就是说,选择第二个图案,意味着矩阵的第1行与第2列均加1。
以此类推:我们对矩阵所做的变化必定属于如下9种情况。
m1
1 1 1
1
1
m2
1 1 1
1
1
m3
1 1 1
1
1
m4
1
1 1 1
1
m5
1
1 1 1
1
m6
1
1 1 1
1
m7
1
1
1 1 1
m8
1
1
1 1 1
m9
1
1
1 1 1
与魔方类似,两次操作互换顺序得到相同的结果是一致的。不论我们先选择图案1后选择图案2还是先选择图案2后选择图案1,对于九宫格所做的变化是相同的。
小时候常见的图画册迷宫问题,一个常见的解法是,从出口走向入口。由于必然存在一条通路,出口走向入口能够排除掉部分不需要的死路。
而九宫格谜题也是如此,通过将目标的图案所构成的矩阵,减去初始的矩阵状态即可得到所有对于图案造成改变的状态的和。
对于一个目标为图案3的九宫格
3 3 3
3 3 3
3 3 3
如果初始的九宫格状态为
1 1 1
1 3 3
1 3 3
所求差所得到的差值矩阵
2 2 2
2
2
即为解密步骤对矩阵造成的所有状态变化的和。结果说明对图案1操作2次即可得到所求结果。
但假设目标结果为
1 1 1
1 1 1
1 1 1
而当前矩阵为
4 4 4
4 4 4
4 4 4
将如何求得状态变化呢?
上文可知,对一个图案操作4次造成的影响相同。
即
5 5 5
5 5 5
5 5 5
与全1表示的矩阵对九宫格造成的影响完全等同。(该矩阵中数值5表示操作次数)
由于图案以4为一个周期,即所有对4取余相同的操作数造成的影响是相同的。即操作2次与6次效果一样,操作3次与7次效果一样,以此类推。
可以通过如下方程式得到矩阵的状态变化:
M = 矩阵变化 =(目标矩阵 + 4 - 初始矩阵) % 4 (%表示取余数)
我们将上述矩阵的9种形态变化命名为矩阵m1,m2,m3,...,m9。
该问题最终可以抽象为下述九元一次方程组
x1*m1 + x2*m2 + x3*m3 + x4*m4 + x5*m5 + x6*m6 + x7*m7 + x8*m8 + x9*m9 = M
其中xi(i=1,2,3…, 9)∈{1,2,3,4}(x只可能取1,2,3,4这一个值)
该方程式的解即为解答。
如x1=1,x2=…=x9=0,只需对第一个格子操作一次即可得到所求结果。