原神稻妻雷方块解密原理及通解

您所在的位置:网站首页 原神稻妻解密方块 原神稻妻雷方块解密原理及通解

原神稻妻雷方块解密原理及通解

2023-12-09 02:43| 来源: 网络整理| 查看: 265

原神稻妻的有些雷方块可以说是相当恶心,比如神樱大祓的四个雷方块,每次都会影响周围两个方块,中间方块不动,最后要求所有朝向和中间方块一致。如图:

阴间解密这一块,米哈游是玩明白了

在尝试思考之后,选择放弃思考,一顿乱试,虽然试出来了,但是还是希望能通过原理来计算出来怎么操作。于是用python写了一个小程序,先给结论和代码:(代码由于格式问题,手机端看着很丑)

import sympyfrom sympy import symbolssympy.init_printing()a1=3a2=1a3=1a4=2X1,x2,x3,x4  = symbols('X1 x2 x3 x4')for n1 in range(0,10):    for n2 in range(0,10):        for n3 in range(0, 10):            for n4 in range(0, 10):                                system = sympy.Matrix((                                    (1,1,0,1,4*n1-a1),                                    (1,1,1,0,4*n2-a2),                                    (0,1,1,1,4*n3-a3),                                    (1,0,1,1,4*n4-a4)

                                ))                                a = sympy.solve_linear_system(system,X1, x2, x3, x4)                                c=0                                d=0                                for key, value in a.items():                                     if value>=0 and  value%1==0:                                         c=c+1                                if c==4 :                                    #print(n1,end=' ')                                    #print(n2, end=' ')                                    #print(n3, end=' ')                                    #print(n4 )                                    print('X1 x2 x3 x4')                                    for key, value in a.items():                                        print(value,end='  ')                                 

运行截图:

 

注意:这里的我的方块的初值跟你们不一样,我忘记了本来的位置是啥,这个是我自己编的

下面详细说一下过程,首先把四个方块标记为X1  x2  x3  x4(1,2对角,2,4对角)周围四个平面的位置标记为0,1,2,3,其中0为要求的位置。然后给出四个方块的初值,例如,X1方块开始就在要求的位置,则X1=0,每个方块旋转后的值都是原来的值加一后对4取余。

准备工作已经完成,现在开始计算。我最开始的想法是模拟旋转的过程,通过递归找一个满足要求的旋转序列,即先选取一个方块旋转,判断是否成功,不成功则选取下一个方块,直到达到规定的递归深度,然后继续遍历,这样虽然能做,但是递归深度不确定,并且偏向于接受前几次调整的方块序号小的方案,从而导致最后找到的方案比较复杂 。然后我发现,其实跟顺序没有关系,谁先动谁后动都是一样的。我们可以把所有的移动放在一起算,而不用模拟顺序。所以我们需要知道的是四个方块移动的次数,知道的是最后四个方块的值是四的倍数,这不纯纯的线性方程组吗?即四元一次方程组,四个方块是四个未知数,四个方块最终结果是四个方程,刚好都有确定解。当然由于方程右端不是常数,所以得到结果也是一个带参数的式子.

已知四个方块初值为3,1,1,2

方程组如下:

X1+x2+x4+3=4n1

X1+x2+x3+1=4n2

X2+x3+x4+1=4n3

X1+x3+x4+2=4n4

其中n1到n4都是非负整数(含义为实际上转了多少圈)注意跟X1,x2等区别,n是实际的圈数(包括受其他影响转动),而x是操作的次数。

使用sympy包求解方程组,结果为:

 

其中n1到n4,X1到x4都是非负整数。

到这里问题其实已经解决了,接下来就是找合适的n,让x都是非负整数。但是肉眼可见,是相当困难的,所以我们在一个范围内遍历n1到n4,每次都计算方程组的解,然后检查解是不是正的,小数位是不是0,如果是就结束运算,把解输出,这就是上面的最后的代码。当然,不排除遍历范围太小不能找到满足的n的情况,这个时候可以适当扩大范围。

 

这就是最后输出的结果,含义为标记为2的方块打一次,标记为3的方块打两次。

另外,其他的解方块问题,也可以用这种方法解决,把能操作的方块的操作次数设为x,根据方块之间的相互作用对每个方块列方程。转换到代码上就是修改定义的变量和参数矩阵。另外:代码开头定义的a是每个方块定义的初值,记得自行更改。

总结:有电脑和有python的家人们可以复制过去试一下,没有建议等重置看攻略。  

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3