Python练手项目:计算机自动还原魔方(2)还原顶部
上文介绍了计算机自动还原顶部十字,情况比较复杂,一旦完成,后续的步骤就简单一些了。本文在上文的基础上,还原魔方顶部为蓝色面,在顶部蓝色十字的前提下,要求将顶部四个棱角还原为蓝色棱角,棱角的其余两面需要与所在面的中心色一致,如下图所示:
沿用上文的化简方法,还原顶部蓝面比还原顶部蓝色十字简单多了,只需要考虑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)还原顶部相关推荐
- Python练手项目:玩转魔方
最近读了魔方有什么难的,七步还原法 (toutiao.com),终于平生第一次把魔方还原了.以前拿起魔方瞎鼓捣,能还原一面都已经是侥幸.现在知道了,玩魔方是需要记公式的.问题在于,记公式对于我也很难. ...
- 70个Python练手项目列表 预祝大家 快乐
小孩眺望远方,成人怀念故乡. 为此给大家分享一下珍藏的Python实战项目,祝大家节日快乐哦!!! Python 前言:不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说 ...
- Python毕设-【人脸签到系统】附源码/Python练手项目/Python毕业设计
本人承诺只做技术分享,永不收费. V----------------->:专栏详情 文章目录 本人承诺只做技术分享,永不收费. V----------------->:专栏详情 一.背景 ...
- 70个Python练手项目列表,偷偷练习卷死他们
不管学习哪门语言都要做出实际的东西来,这个实际的东西就是项目 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,你也可以从中寻找灵感去做自己 ...
- python练手项目:2048实现与总结
python练手项目:利用curses界面对2048的实现与总结 涉及的知识点 基本实现 UI展示 curses的初始化方法:wrapper curses的屏幕展示语句:addscr curses正式 ...
- Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计
Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 文章目录 Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 系统简介 一.本课题拟解决的问题 二.系统技术栈 三.开发工具 四.数 ...
- 10个不到500行代码的超牛Python 练手项目
10个不到500行代码的超牛Python 练手项目 图:内容概览.注:本文内容由实验楼搜集.整理自Github,实际项目版权归原作者所有. 以下10个练手项目均摘录自一本尚未出版的 Python 神书 ...
- python项目-推荐 10 个有趣的 Python 练手项目
想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...
- 有趣的python项目 国外_推荐 10 个有趣的Python练手项目
想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼,因此,我为大家准备了10个 ...
- python 适合做什么生意好_推荐 10 个有趣的 Python 练手项目
想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...
最新文章
- Java8 - 接口默认方法
- VC++ 监控指定目录改变
- MySQL里面json_MySQL中的JSON
- 【报错笔记】在eclipse中复制代码后代码中会报画红线错,而且项目也会报错。
- Java Web之filter、listener、Interceptor
- 树莓派python gpio 模仿iic_Adafruit的树莓派教程:GPIO配置
- free命令里的buffers/cache
- sscanf 与 sscanf_s的区别
- Apple原装扫描二维码指定区域
- Java VM Options
- 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day2)
- 福建农林大学计算机与信息学院副书记,福建农林大学计算机与信息学院导师介绍:钟一文...
- Exploring Branch Predictors for Constructing Transient Execution Trojans
- linux下.tar.gz如何解压
- CVPR 2022 Oral|PoseConv3D开源: 基于人体姿态的动作识别新范式
- Win10应用商店OneNote安装错误0x800706D9
- 关于Vue在面试中常常被提到的几点(持续更新……)
- nba球员python_使用python将NBA薪金与绩效样本球员分析相关联
- HTML5前端期末大作业:个人摄影网站设计——婚纱摄影(28页) HTML+CSS+JavaScript 学生DW网页设计作业成品 HTML静态网页作业 web前端期末大作业
- 每日分享:Word如何翻译成中文