魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
楼主: 特南克里斯
打印 上一主题 下一主题

[原创]九连环步骤的推算-用此法能推出任意状态下九连环的下一步 [复制链接]

Rank: 2

积分
284
帖子
12
精华
0
UID
14229
性别
11#
发表于 2007-10-24 13:36:12 |只看该作者

我发现一个更快的判断方法,既然若右小节和中小节对应的数同为奇数或同为偶数,则左小节对应的数即为对应的状态1到状态8中的状态。若右小节和中小节一个为偶数,一个为奇数,则左小节对应的数所对应的状态为8+1-左小节对应的数。

只要看右六位(即中小节和右小节)0的个数(或1的个数)即可,若为偶数个,则中小节和右小节必同为偶数或同为奇数;若为奇数个,则右小节和中小节比互为奇偶数。

期待大家检验。

使用道具 举报

Rank: 2

积分
284
帖子
12
精华
0
UID
14229
性别
12#
发表于 2007-10-24 13:36:30 |只看该作者

我发现一个更快的判断方法,既然若右小节和中小节对应的数同为奇数或同为偶数,则左小节对应的数即为对应的状态1到状态8中的状态。若右小节和中小节一个为偶数,一个为奇数,则左小节对应的数所对应的状态为8+1-左小节对应的数。

只要看右六位(即中小节和右小节)0的个数(或1的个数)即可,若为偶数个,则中小节和右小节必同为偶数或同为奇数;若为奇数个,则右小节和中小节必互为奇偶数。

期待大家检验。

使用道具 举报

Rank: 2

积分
284
帖子
12
精华
0
UID
14229
性别
13#
发表于 2007-10-24 13:43:30 |只看该作者

我发现一个更快捷的方法:既然

若右小节和中小节对应的数同为奇数或同为偶数,则左小节对应的数即为对应的状态1到状态8中的状态。若右小节和中小节一个为偶数,一个为奇数,则左小节对应的数所对应的状态为8+1-左小节对应的数。

只要看右六位(即中小节和右小节)0的个数(或1的个数)即可,若为偶数个,则中小节和右小节必同为偶数或同为奇数;若为奇数个,则右小节和中小节必互为奇偶数

期待大家检验并提出宝贵意见。

期待大家检验并提出宝贵意见。

使用道具 举报

Rank: 2

积分
284
帖子
12
精华
0
UID
14229
性别
14#
发表于 2007-10-24 13:47:24 |只看该作者
不好意思,没注意发了三个相同的,数据库出错,我以为没发上去,所以帖了三个相同的。

使用道具 举报

Rank: 8Rank: 8

积分
18050
帖子
16478
精华
9
UID
449
性别

魔方理论探索者 论坛建设奖 爱心大使 十年元老

15#
发表于 2007-10-24 15:56:18 |只看该作者
QUOTE:
以下是引用特南克里斯在2007-10-24 13:12:11的发言:
乌木先生所言极是,我也很赞同你的口诀。我只是提供了 快速判断任意状态所对应的状态1到状态8 的方法,口诀还是按照乌木先生的。只是碰到“下两个”或“上两个”这种操作的,换成“下一个,再下一个”或“上一个,再上一个”以便和八个状态相一致。同样,拆环也是按照乌木先生的方法,同装环步骤相反。

哈,我的跟帖纯属“打岔”,但愿别影响读者看本帖时的思路才好。

对您论述的问题,我还没进入状态,等有了关于本帖问题的想法,会参与讨论的。

使用道具 举报

Rank: 8Rank: 8

积分
18050
帖子
16478
精华
9
UID
449
性别

魔方理论探索者 论坛建设奖 爱心大使 十年元老

16#
发表于 2007-10-24 18:08:00 |只看该作者

本话题要解决的问题蛮有实用价值,具体方法应该有多种,正好展开交流、讨论。

我将捉摸捉摸是否有别的方法。各位有什么好方法,请一起来探讨吧。

使用道具 举报

Rank: 8Rank: 8

积分
18050
帖子
16478
精华
9
UID
449
性别

魔方理论探索者 论坛建设奖 爱心大使 十年元老

17#
发表于 2007-10-24 21:06:25 |只看该作者

初步提出另两种办法。

一、查表法

据状态码直接查九连环状态表。例如,状态码为001 010 001,由九连环状态表查得是态488,在组合过程中它要做“动后一个”成为态489;在解脱过程中,它要做“上俩”成为态486。

二、计算法

把状态码次序倒过来,即得某一自然数的“格雷码”,再把这格雷码变换为该自然数的二进制表示法,再换算为该自然数的十进制表示法n。该九连环的状态就是上述表中第(n+1)态。(n+1)除以8得到余数f,f从0~7,分别对应于下述动作:

cWIS72T1.gif


例如,态码为011 010 100,格雷码(g)为001 010 110,变换为二进制数(b),为001 100 100 。

g改为二进制数b具体方法:

从左开始,第一位总是不变,g的左1位是0,b的左1位也是0;
b的左1位是0,故g的左2位不变就成为b的左2位,为0;
b的左2位是0,则g的左3位不变而成b的左3位,为1;
b左3是1,故g的左4要变一下成为b左4,为1;
b左4是1,故g的左5要变一下成为b左5,为0;
b左5是0,故g左6不变,即b左6也是0;
b左6为0,所以g左7不变,即b左7也是1;
b左7=1,故b左8不同于g左8,为0;
b左8是0,故b左9=g左9,为0。

二进制数 001 100 100 就是十进制数的 64+32+4=100;100+1=101,(101÷8)的余数f为5,从上表可知,组合时要做“上一个”;解脱时要做“动后一个”。

又如,态码为 111 111 111,格雷码正好也是 111 111 111,二进制数为 101 010 101,n=256+64+16+4+1=341,这是第342态,342÷8的余数f=6。故要继续组合,就做“下俩”,“动后一个”……;要解脱,得做“下一个”,“动后一个”,“上一个”……

[此贴子已经被作者于2007-10-24 21:20:24编辑过]

使用道具 举报

Rank: 8Rank: 8

积分
18050
帖子
16478
精华
9
UID
449
性别

魔方理论探索者 论坛建设奖 爱心大使 十年元老

18#
发表于 2007-10-25 08:26:27 |只看该作者
上面换算出的数字n之所以要加1才得到态的序号,是因为态1~态512相应的n值为0~511 。如果态的序号也是0~511,则不要加1,但那f值和动作的对应表中,f列的次序为0、1、2……7 。

使用道具 举报

Rank: 2

积分
284
帖子
12
精华
0
UID
14229
性别
19#
发表于 2007-10-25 09:38:35 |只看该作者
乌木先生理论功底很深,甚是佩服。

使用道具 举报

Rank: 8Rank: 8

积分
18050
帖子
16478
精华
9
UID
449
性别

魔方理论探索者 论坛建设奖 爱心大使 十年元老

20#
发表于 2007-10-25 16:53:08 |只看该作者
哪里有什么理论功底哟,这些内容在我那帖子所引参考书中都有。这里再提一下:《巧解九连环》,周伟中编著,金盾出版社。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2024-11-22 13:21

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部