魔塔21层怎么踩?
这个问题表面上是个小游戏,实际上是个数学问题。
该解决方案基于以下原则:
1.同一个位置踩两次等于没踩。由于按回车键可以原地改变灯的亮与灭,问题就变成了在每个格子里是踩(奇数次踩)还是不踩(偶数次踩)。
2.踩在某个位置只是改变了周围的灯光。因此,一盏灯在一个方向上步进后的照明情况的变化,只与在这个网格和周围网格上步进的次数之和有关,奇数变化,偶数不变。
3.每盏灯只有两种状态,即开和关,每走一步和不走一步只有两种状态。
所以,解决这个问题相当于解一个逻辑方程组:Aij = xij+Xi-1J+Xi+1J+xij-1+xij+1+(1≤I,j ≤ n,(n为步进。)
提示:上式中的“+”并不是加法的意思,而是用来代替逻辑运算XOR的符号(这个符号在电脑中是找不到的)。下同。
(什么?对逻辑代数一窍不通?.....简单解释一下:所谓异或,就是运算中涉及的两个二进制数相同并得到1,差为2;或者0+0 = 0,1+1 = 0,1 = 1,0+1 = 1。这个运算满足交换律和结合律。)
这个方程组是n*n阶的,所以运算量随着n的增加而迅速增加,好在求解是程序性的,交给计算机就好了。
以下是计算结果:
先解释一下公式的含义。数字表示网格的位置,从左到右、从上到下排列:
1 2 3 1 2 3 4 1 2 3 4 5
4 5 6 4 5 6 7 4 5 6 7 8
7 8 9 8 9 10 11 9 10 11 12 13
12 13 14 15 14 15 16 17 18
19 20 21 22 23
等式左边的数字决定了是否要踩格子。根据等式右端的公式,计算出1表示“步进”,0表示“不步进”。
等式右边的数字是踩灯前灯是亮还是灭的代码。
注意,注意!!!如果最后要把灯全部踩灭,灯就是1,灯就是0。
如果你最后想把所有的灯都打开,那就打开到0,关掉到1。犯了错想不通就别来找我!)
3*3必须有独特的解决方案:
1=1+3+6+7+8
2=5+7+8+9
3=1+3+4+8+9
4=3+5+6+9
5=2+4+5+6+8
6=1+4+5+7
7=1+2+6+7+9
8=1+2+3+5
9=2+3+4+7+9
4*4有解:2+3+4+5+7+9+10+13 = 0,1+2+4+8+9+10+11+。
* * *有解时有解16。在这种情况下,将13、14、15和16作为自由变量(为简单起见,均取0)。获得如下解决方案:
1=1+2+5+7+10+11+12
2=1+2+3+8+9+10+12
3=2+3+4+5+9+11+12
4=3+4+6+8+9+10+11
5=1+3+5+7+8+9+11
6=4+7+8+12
7=1+5+6+9
8=2+4+5+6+8+10+12
9=2+3+4+5+7+9+10
10=1+2+4+8+9+10+11
11=1+3+4+5+10+11+12
12=1+2+3+6+8+11+12
13=0
14=0
15=0
16=0
从自由变量的选取可以看出,4*4还有另外一个简单的解法:把前三行都踩上,如果第四行同时都是on (off),就已经解决了;否则无解。
5*5有解:2+3+4+6+8+10+1+12+14+15+16+18。
* * *有解就有四解。在这种情况下,24和25被视为自由变量(为简单起见,两者都被视为0)。获得如下解决方案:
1=2+3+4+8+10+14+15+20
2=1+2+4+5+7+13+14+15+19
3=1+3+4+5+6+8+9+13+14+16+17+18+19+20+22
4=1+2+3+7+17+21+22+23
5=2+3+5+6+11+13+15+18+20+21+22
6=3+5+7+8+10+13+19+20
7=2+4+6+7+9+10+14+16+17+18+22
8=1+3+6+8+9+15+16+18+20+21+23
9=3+7+8+9+11+14+15+16+19+22+23
10=1+6+7+11+13+15+17+18+20+23
11=5+9+10+13+15+16+17+18+19+22
12=17+21+22+23
13=2+3+5+6+10+11+13+14+18+21+22
14=1+2+3+7+9+13+14+15+19
15=1+2+5+8+9+10+11+14+15+16+17+19+21
16=3+7+8+9+11+15+16+18+20+21+23
17=3+4+7+10+11+12+15+17+18+19+23
18=3+5+7+8+10+11+13+16+17+19+20+21
19=2+3+6+9+11+14+15+17+18+19+23
20=1+3+5+6+8+10+16+18+20+21+23
21=4+5+8+12+13+15+16+18+20+21+22
22=3+4+5+7+9+11+12+13+21+22+23
23=4+8+9+10+12+16+17+19+20+22
24=0
25=0灯1。
00100
2
1235
1235
2
打开两盏灯
11000
23
14
145
2345
三
00011
三
2345
145
14
23
10010
25
12345
34
1345
13
01001
五
四
34
24
123
点亮三盏灯
01110
235
1
135
35
12
10101
35
235
135
12
1
如何使用。
先把前4排的20个灯全部踩上,一个一个踩,站下一排踩上一排,随回车移动,很简单。
前面第一排数字表示最后一排灯的状态,亮为1,暗为0。
比如00100表示前四行都亮,最后一行只有中间的灯亮。
接下来有五行数字,1行代表1列,第二行代表第二列,依此类推。
例如:00100
2
1235
1235
2
表达
让第一列第二个单元格的灯(从上往下数)和周围的灯发生变化(从当前位置移动到第一列第二个单元格,按一次Enter使灯的状态不变,直到移动到第一列第二个单元格,到第一列第二个单元格就不用按Enter了)。
然后让1235第二列的灯和周围的灯依次变化。
0表示第三列中没有要更改的灯。
诸如此类。
这是我现有的所有解法和他们的解法中,前四行都亮的几个状态。
我希望这正是你所遇到的。
107层4x4,前三条线按照上述方法全亮,最后一条线全亮。否则无解。
106层3x3参考魔塔二106,107通关工具。
/mota/pk2/light.asp