上文介绍了计算机自动还原顶部十字,情况比较复杂,一旦完成,后续的步骤就简单一些了。本文在上文的基础上,还原魔方顶部为蓝色面,在顶部蓝色十字的前提下,要求将顶部四个棱角还原为蓝色棱角,棱角的其余两面需要与所在面的中心色一致,如下图所示:
沿用上文的化简方法,还原顶部蓝面比还原顶部蓝色十字简单多了,只需要考虑R面的左上和左下角,采用《软件工程》中介绍的判定表分析方法,分析如下:
将判定表用Python字典实现如下:
conner_action_dict={'01':['Rp', 'Dp','R','D'],'02':['Dp', 'right'],'10':['right'],'11':['Rp', 'Dp','R','D'],'12':['Rp', 'Dp','R','right']}
算法如下:
def 还原upper面():while not 蓝色upper面():coners_list=计算棱角颜色列表() #计算左上、下角编码if len(coners_list)==0: #左、上下角无蓝色right()continueconner =coners_list[0] #左上和左下都有蓝色,只取1个(左下优先)command_list = conner_action_dict[conner] #查字典获得动作列表if conner[1]=='1':while not 左上角到位(): #重复执行公式,直到左上角三色到位for command in command_list:eval(command)()else:for command in command_list:eval(command)()
运行结果:
1)打乱魔方
2)还原顶部蓝色十字
3)还原顶部蓝面
离我们的目标,还原整个魔方不远了!
如果觉得《Python练手项目:计算机自动还原魔方(2)还原顶部》对你有帮助,请点赞、收藏,并留下你的观点哦!