题目说明:
YYYYRRRRWWWWOOOOGGGGBBBB
UUL’
第一行为输入为对应
F, R, B, L, U, D
面的元素颜色
第二行输入为翻转的
标识符
标识符有:
F、F'、R、R'、B、B'、L、L'、U、U'、D、D'
。分别为对应明的顺时针翻转和逆时针翻转。带
'
则为逆时针,不带则为顺时针。
输出说明:
BWBYOORRYGWGORORWGYGWBYB
示例图【无需输出,仅理解】:
输出翻转后最终对应位置
F, R, B, L, U, D
的颜色序列
题解:
要理解题目中,每个转动的模拟情况,每个面的转动会影响那些面
旋转面的影响方框【元素】依次是什么,
这里以以U移动举例:
U移动会带动L、F、R、B【顺序可以改,但必须保证前后对应的面相等,因为带动顺序也很关键】
每个面划分为2*2的矩阵,那么,L会影响的元素方位是(0,0) (0,1)。F会影响的也是(0,0) (0,1)
分别模拟出每个面依次对照的影响元素的位置
获取每个影响元素的方位
就可以编码了,难点在于如何理解每一个面的转动以及他所带动的面的元素是什么,每一个面的带动情况是不一样的
难度:
复杂度高,找到移动影响序列比较繁琐,编码难度中等
构建常量以及每一个面的两个序列【面移动序列,面中受影响所移动的位置序列】:
将X面翻转(仅单面模拟,不对其他4个移动面进行模拟)以及获取对应值的方法
翻转其他部分:
main函数:
all code:
在我自己编码的途中,纯大脑模拟3维魔方并编码,而且输出如此抽象,实际上是非常困难的,因此我自己编码的时候借助了大模型生成的帮忙的可视化接口(虽然你笔试的时候肯定不能用,我当时也不够时间写出来,找到影响元素的位置序列真tm繁琐)【我命名为draw_cube.py。这个根据自己喜欢来】记得把import 改一下就好,最好复制那个输出就能显示图片了,有图片辅助更好理解
code
魔方模拟