上文介绍了计算机自动还原顶部十字,情况比较复杂,一旦完成,后续的步骤就简单一些了。本文在上文的基础上,还原魔方顶部为蓝色面,在顶部蓝色十字的前提下,要求将顶部四个棱角还原为蓝色棱角,棱角的其余两面需要与所在面的中心色一致,如下图所示:

沿用上文的化简方法,还原顶部蓝面比还原顶部蓝色十字简单多了,只需要考虑R面的左上和左下角,采用《软件工程》中介绍的判定表分析方法,分析如下:

状态 编码 动作
左下角有蓝色,其余两色与R和F面中心色一致 01 R'D'RD(重复做)
左下角有蓝色,其余两色与R和F面中心色不一致 02 D‘ right
左上角有蓝色,三色与U、R和F面中心色一致 10 right
左上角有蓝色,三色与U、R和F面中心色相同,但顺序不一致 11 R'D'RD(重复做)
左上角有蓝色,其余亮色与R和F面颜色不一致 12 R'D'R right
左上和左下角都没有蓝色 right

将判定表用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)还原顶部相关推荐

  1. Python练手项目:玩转魔方

    最近读了魔方有什么难的,七步还原法 (toutiao.com),终于平生第一次把魔方还原了.以前拿起魔方瞎鼓捣,能还原一面都已经是侥幸.现在知道了,玩魔方是需要记公式的.问题在于,记公式对于我也很难. ...

  2. 70个Python练手项目列表 预祝大家 快乐

    小孩眺望远方,成人怀念故乡. 为此给大家分享一下珍藏的Python实战项目,祝大家节日快乐哦!!! Python 前言:不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说 ...

  3. Python毕设-【人脸签到系统】附源码/Python练手项目/Python毕业设计

    本人承诺只做技术分享,永不收费. V----------------->:专栏详情 文章目录 本人承诺只做技术分享,永不收费. V----------------->:专栏详情 一.背景 ...

  4. 70个Python练手项目列表,偷偷练习卷死他们

    不管学习哪门语言都要做出实际的东西来,这个实际的东西就是项目 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,你也可以从中寻找灵感去做自己 ...

  5. python练手项目:2048实现与总结

    python练手项目:利用curses界面对2048的实现与总结 涉及的知识点 基本实现 UI展示 curses的初始化方法:wrapper curses的屏幕展示语句:addscr curses正式 ...

  6. Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计

    Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 文章目录 Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 系统简介 一.本课题拟解决的问题 二.系统技术栈 三.开发工具 四.数 ...

  7. 10个不到500行代码的超牛Python 练手项目

    10个不到500行代码的超牛Python 练手项目 图:内容概览.注:本文内容由实验楼搜集.整理自Github,实际项目版权归原作者所有. 以下10个练手项目均摘录自一本尚未出版的 Python 神书 ...

  8. python项目-推荐 10 个有趣的 Python 练手项目

    想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...

  9. 有趣的python项目 国外_推荐 10 个有趣的Python练手项目

    想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼,因此,我为大家准备了10个 ...

  10. python 适合做什么生意好_推荐 10 个有趣的 Python 练手项目

    想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...

最新文章

  1. Java8 - 接口默认方法
  2. VC++ 监控指定目录改变
  3. MySQL里面json_MySQL中的JSON
  4. 【报错笔记】在eclipse中复制代码后代码中会报画红线错,而且项目也会报错。
  5. Java Web之filter、listener、Interceptor
  6. 树莓派python gpio 模仿iic_Adafruit的树莓派教程:GPIO配置
  7. free命令里的buffers/cache
  8. sscanf 与 sscanf_s的区别
  9. Apple原装扫描二维码指定区域
  10. Java VM Options
  11. 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day2)
  12. 福建农林大学计算机与信息学院副书记,福建农林大学计算机与信息学院导师介绍:钟一文...
  13. Exploring Branch Predictors for Constructing Transient Execution Trojans
  14. linux下.tar.gz如何解压
  15. CVPR 2022 Oral|PoseConv3D开源: 基于人体姿态的动作识别新范式
  16. Win10应用商店OneNote安装错误0x800706D9
  17. 关于Vue在面试中常常被提到的几点(持续更新……)
  18. nba球员python_使用python将NBA薪金与绩效样本球员分析相关联
  19. HTML5前端期末大作业:个人摄影网站设计——婚纱摄影(28页) HTML+CSS+JavaScript 学生DW网页设计作业成品 HTML静态网页作业 web前端期末大作业
  20. 每日分享:Word如何翻译成中文

热门文章

  1. shader篇-单张纹理
  2. jsp复习题库(1)
  3. HTML 限制文本框只能输入数字 onkeyup+onafterpaste
  4. raspberry pi_如何使用Raspberry Pi和RetroPie构建自己的NES或SNES Classic
  5. 手脱aspack变形壳
  6. C’est lavie
  7. 【干货资料 】简单的交换机光模块故障排查步骤
  8. erlang之ets总结
  9. ETS88 获取TesterID
  10. 打卡签到python代码_[python] 初学python,打卡签到