程设大作业xjb写——魔方复原
鸽了那么久总算期中过【爆】去【炸】了。。。该是时候写写大作业了
【总不能丢给他们不会写的来做吧
一、三阶魔方的几个基本定义
↑就像这样,可以定义面的称呼:上U下D左L右R前F后B
UD之间的叫E,LR之间的叫S,FB之间的叫M
这样子棱就可以定义为UF啊UR啊之类的【咦?UR?
角就是用三个面定义:UFR、URB、DBR【按照逆时针来写三个面
然后就是各种旋转,对于一个面有三种旋转方式(以U为例):U,U',U2分别表示上面顺时针旋转90°,逆时针旋转90°,旋转180°
所以各种公式就是一串UDLRFB和'和2组成的一系列xjb转
二、正式复原
为了让本宝宝的作业表现的高端大气上档次,找到了个鬼畜做法【喵喵喵?
叫降群法(Thistlethwaite algorithm)
前人之述备矣:【五行篇】降群法简易教程,尝试下电脑还原魔方的感觉
总结一下,就是一共四个STEP:
1. 棱方向调正 (G0 -> G1)
2. E层集中,上下面颜色只有两种 (G1 -> G2)
3. 角块归位,S层集中,M层集中 (G2 -> G3)
4. XJB转 (G3 -> FINISH!)
三、计算机方法解决问题
首先每个棱块和角块都具有位置和方向两个属性
对于棱块有方向0/1,角块有方向0/1/2【这就是为什么角块要按照逆时针写三个面
然后对于每个STEP都搜出来从这个群到下一个群的旋转公式即可
而每次只调整一部分,只需要把这一部分的特征值记录下来,进行搜索即可(因为公式并不长)
各STEP的特征值:
1. 棱的方向
2. 棱的位置(是否在E层)以及角的方向
3. 棱的位置(是否在S/M层)以及角的位置
4. 全部信息
四、对于魔方的旋转
其实吧。。。不管是什么复原方式,魔方的旋转是最复杂的部分
还是按照之前的编号方式把棱和角按照1~20编好号
这样子每次转的时候就知道转了些啥,恩,这十分的trivial
然后L = L, L2 = LL, L' = LLL这样子只要做一种旋转就行了恩,这也十分trivial
然后这样子18个步骤就分为了6大类,每一类只要记录下每次棱和角在一次旋转以后的置换即可
每个棱和角的方向,可能会有改变,进行讨论
1. 对于棱:FB会改变方向,其他均不改变
2. 对于角:UD不改变方向,其他的需要讨论,正好每个角在LRFB四个操作中方向一次改变1一次改变2
恩所以只要把上面的步骤全部完成就好啦!魔方复原get√
程设大作业xjb写——魔方复原的更多相关文章
- 隔壁信概大作业xjb写——同化棋ATAXX
话说泥萌北大信科啊,助教是有多懒...去年黑白棋今年同化棋,顺带打ai都不用自己写标程... 好吧..我知道泥萌重点在各种sb的辅助操作上..什么悲剧的可以随时暂停载入...有毒吧 [据说泥萌上课没讲 ...
- < JAVA - 大作业(2)仿qq即时通讯软件 >
< JAVA - 大作业(2)仿qq即时通讯软件 > 背景 JAVA上机大作业:设计一个仿qq即时通讯软件 任务简要叙述:设计一款仿QQ的个人用户即时通讯软件,能够实现注册,登陆,与好友聊 ...
- 2019QM大作业2-weyl半金属Landau Level
目录 说明 for cnblog QM大作业2--weyl半金属的Landau Level \(\boldsymbol{Abstract}\) 说明 Landau Level 自旋与pauli mat ...
- 数据库大作业--由python+flask
这个是项目一来是数据库大作业,另一方面也算是再对falsk和python熟悉下,好久不用会忘很快. 界面相比上一个项目好看很多,不过因为时间紧加上只有我一个人写,所以有很多地方逻辑写的比较繁琐,如果是 ...
- Java作业代写
作业一 试用java编写一个九九乘法表并打印. 作业二: 设计两个人类与书类,并设置两者的关系,试用人去找书,书去找人,假如某人有一个儿子,它也有一本书,试用儿子去找书,书找儿子. 大作业 熟悉QQ农 ...
- [留念贴] C#开发技术期末大作业——星月之痕
明天就要去上海大学参加 2015赛季 ACM/ICPC最后一场比赛 —— EC-Final,在这之前,顺利地把期末大作业赶出来了. 在这种期末大作业10个人里面有9个是从网上下载的国内计算机水平五六流 ...
- Hadoop综合大作业
Hadoop综合大作业 要求: 用Hive对爬虫大作业产生的文本文件(或者英文词频统计下载的英文长篇小说)词频统计. 用Hive对爬虫大作业产生的csv文件进行数据分析 1. 用Hive对爬虫大作业产 ...
- 爬虫综合大作业——网易云音乐爬虫 & 数据可视化分析
作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...
- 期末Java Web大作业----简易的学生管理系统
学生信息管理系统(大作业) 2018-12-21:此文章已在我的网站更新,添加视图介绍等信息,源码请移步下载https://www.jeson.xin/javaweb-sims.html PS:首先不 ...
随机推荐
- mysql优化一 之 优化内容概述及开启慢查日志的相关配置
1-1数据库优化的目的 首先是为了避免出现页面访问错误(基本有三种) (1)由于数据库连接timeout产生的页面5XX错误 (2)由于慢查询造成页面无法加载 (3)由于阻塞造成的数据无法提交 其次: ...
- FileItem类的常用方法
FileItem类的常用方法: 1. boolean isFormField() isFormField方法用于判断FileItem类对象封装的数据是一个普通文本表单字段,还是一个文件表单字段,如果 ...
- 在webapp上使用input:file, 指定capture属性调用默许相机,摄像,录音功能
## 在webapp上使用input:file, 指定capture属性调用默认相机,摄像,录音功能 在iOS6下开发webapp,使用inputz之file,很有用 <input type=& ...
- Python作业 1
用户有三次机会登录,登录成功,显示欢迎界面. 三次登录失败,账户被锁定,下次登录失败. 思路: 1:流程控制:for或者while循环,达到三次检测目的. 2:文件操作. 检测文档,一旦发现输入账户名 ...
- 如何站在使用者的角度来设计SDK-微信公众号开发SDK(消息处理)设计之抛砖引玉
0.SDK之必备的基本素质 在项目中免不了要用到各种各样的第三方的sdk,在我现在的工作中就在公司内部积累了各种各样的的公共库(基于.net的,基于silverlight的等等),托管到了内部的nug ...
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror) in codeforces(codeforces730)
A.Toda 2 思路:可以有二分来得到最后的数值,然后每次排序去掉最大的两个,或者3个(奇数时). /************************************************ ...
- Sublime Text 3使用指南(1)——安装package control组件
按Ctrl+`, 调出console 控制台中粘贴一下代码: import urllib.request,os; pf = 'Package Control.sublime-package'; ipp ...
- java split进行字符串分割
在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1.如果用"."作为分隔的话,必须是如下写法,Str ...
- IPMI
ipmitool -I lanplus -H 10.79.62.64 -U admin -P Nbv12345 [chassis power soft]/[raw 6 2 5] ipmiutil [r ...
- Python if 和 for 的多种写法
a, b, c = 1, 2, 3 [对比Cpp里:c = a >b? a:b]这个写法,Python只能常规的空行,缩进吗? 人生苦短,我用python,下面介绍几种if的方便的方法. 1.常 ...