- 最后登录
- 2022-3-4
- 在线时间
- 547 小时
- 阅读权限
- 100
- 注册时间
- 2007-9-27
- 积分
- 3076
- 帖子
- 1699
- 精华
- 5
- UID
- 13085
- 性别
- 男
- WCA ID
- 2007FUBO01
- 兴趣爱好
- 其它
- 积分
- 3076
- 帖子
- 1699
- 精华
- 5
- UID
- 13085
- 性别
- 男
- WCA ID
- 2007FUBO01
- 兴趣爱好
- 其它
|
接下来说说如何用计算机程序实现“列举出二阶魔方的全部状态”
状态编码已经说过了
现在介绍一下我的思路,关于“如何实现转动编码”
我的状态转换系统里只有RUF三个面的9种转动:
R、U、F、R'、U'、F'、R2、U2、F2
刚才说了每个状态是用6个角的颜色表示,每个角用2个颜色
但是在计算过程中每个角还是需要用3个颜色表示的,这样便于推导转动后的编码
========================================
【举例】转动R的编码转换:
R的转动实际上就是右边四个角块进行了位置轮换
用我的编码方式来说,就是RUF的三个颜色编码,变成了RUB的颜色编码,并且转换了一下顺序
其他3个角块同样
只需要简单的语句就可以给9种转动进行编码转换定义了
========================================
计算状态转换完成之后,进行重复状态校验
这步很容易,
首先去掉每个角块每个颜色的第三位编码,用转换后状态编码去校对已经存在的状态编码
如有重复,就删除此状态,进入下一步骤
如果没有重复,就进行储存
储存的时候可以给列表分类:
0步态=还原态
1步态=(状态编码。。。。)(状态数量=9)
2步态=(状态编码。。。。)(状态数量=??)
3步态=。。。
。。。。
以此类推
直到进行到了n步态
在计算n+1步态的时候,发现经过9种转动的结果都是重复的态
那么n就是二阶魔方的最远步数
n步态对应的几种状态,就是二阶的最远态
最远态的数量自然也就出来了
列出二阶全部态可以得到以下精确结果:
二阶最远步数是多少?
最远态有几种?分别是什么情况?(直接根据编码就能复制出来)
二阶每个步态有多少种?分别是什么?
当然,二阶总共有多少种状态也被准确的列出来了!
[ 本帖最后由 haohmaru 于 2009-11-5 17:25 编辑 ] |
|