python实现三阶魔方还原 |
您所在的位置:网站首页 › 魔方阵python代码 › python实现三阶魔方还原 |
在这里以左面的顺时针旋转 90°为例,其它旋转方式可以类比 def L(FACES): FACES[2] = clockwise(FACES[2]) FACES_new = cp.deepcopy(FACES) a, b, c, d = clockwise(FACES_new[4]), clockwise(FACES_new[1]), antiClockwise(FACES_new[5]), clockwise(FACES_new[0]) e, f, g, h = cp.deepcopy(a), cp.deepcopy(b), cp.deepcopy(c), cp.deepcopy(d) e[0], f[0], g[0], h[0] = d[0], a[0], b[0], c[0] FACES[4], FACES[1], FACES[5], FACES[0] = antiClockwise(e), antiClockwise(f), clockwise(g), antiClockwise(h)1、直接调用函数将左面(第2面)顺时针旋转 90° FACES[2] = clockwise(FACES[2])2、这里采用深度复制,使用 cp.deepcopy() 的方法,避免直接使用等号 ‘=’ 导致不同的变量指向同一个值。这时,【e、f、g、h】和【a、b、c、d】代表魔方的 【正面、底面顺时针旋转90°、背面逆时针旋转90°、上面顺时针旋转90°】 a, b, c, d = clockwise(FACES_new[4]), clockwise(FACES_new[1]), antiClockwise(FACES_new[5]), clockwise(FACES_new[0])旋转的目的是: 在左面旋转的过程中,左面会影响到其它四个面,但对其它四个面的影响是不同的。例如正面、底面和上面被影响的是第一列,而背面被影响的是第三列。我们为了使各面统一起来,方便数值的改变,我们选择将正、底、上面顺时针旋转90°,将背面逆时针旋转90°。这时,我们只需按顺序交换每一面的第一行,最后再逆时针或顺时针转回来即可。 3、按顺序交换:正面第一行传递到底面第一行 上面第一行传递到正面第一行 背面第一行传递到上面第一行 底面第一行传递到背面第一行 e[0], f[0], g[0], h[0] = d[0], a[0], b[0], c[0]最后再依次根据上述操作逆旋转回去: FACES[4], FACES[1], FACES[5], FACES[0] = antiClockwise(e), antiClockwise(f), clockwise(g), antiClockwise(h) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |