guxl 发表于 2004-3-13 08:47:07

编了一个计算魔方的程序

<DIV><FONT size=2>编了一个计算魔方的程序</FONT></DIV>
<DIV>        </DIV>
<DIV><FONT size=2>可以手工求解,将魔方拆散拼装,计算机搜索,自动求解。</FONT></DIV>
<DIV>        </DIV>
<DIV><FONT size=2>系统需求:如果用计算机搜索功能,需128M以上内存,其它功能对计算机要求较低,相信目前大部分计算机都能满足。操作系统:在WIN98上测试通过,其它未测试。</FONT></DIV>
<DIV>        </DIV>
<DIV><FONT size=2>★可以用程序中的“随机转动”的功能将魔方打乱,然后手工还原。<BR>★可以将魔方拆散拼装,根据网上查找到的资料,如果任意地组装魔方,只有1/12的机会可以再通过转动来还原它。我想到一个简单的办法,可以立即排除5/6的无法还原的状态,但余下还有1/2的可能无法通过转动来还原。我的大致结论如下:仅考虑八个角上的角积木,仅有1/3可以还原;仅考虑十二条棱上的棱积木,仅有1/2可以还原,这两方面程序都可以判断出来,余下的是角和棱无法同时还原的,还没想出什么准则来排除。<BR>★程序提供了自动搜索的功能,几经改进算法,目前可以做到在赛扬800计算机上在数分钟内计算10~14次旋转的魔方还原,如果内存&gt;192M,可以计算12~14次旋转(同一方向的转动属一次,每多一次转动可能状态就多15倍)。大约相当于遍历了10的14次方种状态。不过由于魔方的状态太多,色彩组合理论上有2^12 * 3^8 /12         ~= 4.32 * 10^19 种,离能求解所有类型的魔方相差还太远。看来用程序搜索解法的方法还必须想想其它方法。<BR>★程序提供了用口诀自动求解的功能,道理上可以求解所有可以通过转动来还原的魔方。如果有无法还原的,可能是因为:1、确实就无法还原,2、程序中有BUG。</FONT></DIV>
<DIV>        </DIV>
<DIV><FONT size=2>使用方法:<BR>拆散拼装,按“拼装”按钮,显示出两个魔方,上面的魔方是已还原的,点击要移动的小积木,在下面的图上点击要移动到的新位置。上图中用阴影表示已有新位置的小积木,下图中用灰色表示尚空缺的位置。<BR>按“求解”按钮搜索还原步骤,按“Option”设计搜索选项。<BR>按“用口诀求解”按钮用口诀自动求解。<BR>求解的转动步骤用“查看结果”依次显示,或用“&lt;&lt;”“&gt;&gt;”单步显示。</FONT></DIV>
<DIV>        </DIV><FONT size=2>
<DIV><BR>程序中记录移动的方法,根据网上通常的表示方法,说明如下。魔方上有六个面,分别用首字母表示:<BR>上面 Upper, or top face = U <BR>下面 Down, or bottom face = D <BR>左面 Left face = L <BR>右面 Right face = R <BR>前面 Front face = F <BR>后面 Back face = B <BR>旋转时,以右手转动该面来确定是顺时针还是逆时针。<BR>旋转的方向表示如下:<BR>逆时针旋转90度用该面的代表字母表示,如U表示上面逆时针旋转90度,U1表示同样的意思。 <BR>顺时针旋转90度(等同于顺时针旋转270度)用在该面的代表字母后加撇号或加3表示,如U'或U3表示上面顺时针旋转90度。 <BR>旋转180度用在该面的代表字母后加2表示,如U2表示上面旋转180度。</DIV>
<DIV>        </DIV>
<DIV>参考了 <A href="http://rubik.yeah.net" target="_blank" >http://rubik.yeah.net</A> , 感谢rubik提供了这么多资料。</DIV>
<DIV>        </DIV>
<DIV>        </DIV>
<DIV>        </DIV>
<DIV>谁要程序,我发给他。</DIV>
<DIV>        </DIV></FONT><A href="http://haiwu.nease.net/haiwu/mf/" target="_blank" ></A>

蓝色闪电 发表于 2004-3-29 01:33:17

我在国内买到的 Square1(实物照片)

发给我吧,我最喜欢搜集各种各样的程序了,<A href="mailto:y_quan@21cn.com" target="_blank" >y_quan@21cn.com</A>,对了,兄弟,你在群1356379里的QQ是多少,呵呵,魔方吧真是人才济济啊,制作的,编程的,竞技的。。。。很好啊!

cube_master 发表于 2004-3-29 02:26:37

我收藏的4阶( 4×4×4 )魔方。

好啊,能否把源程序贴上?

avisenina 发表于 2004-3-30 04:48:36

可以给我一份吗?reinhardvl_lg7@163.com

宇宙飞碟 发表于 2004-5-20 19:14:33

<a href="mailt可以给我一份吗?yuzhoufeidie@sina.com" target="_blank" >可以给我一份吗?   yuzhoufeidie@sina.com</A>     先谢谢了!

yxhokay 发表于 2004-5-21 20:08:38

<P>我也要  </P><P><a href="mailtyxhokay@yaoo.com" target="_blank" >yxhokay@yaoo.com</A></P><P>谢谢 </P><P>呵呵</P>

宇宙飞碟 发表于 2004-5-22 18:37:05

<APPLET codebase=http://www.mf8.com.cn/Java/3a/ code=lrubik.class height=145 width=125 ><PARAM NAME="pos" VALUE="fffffffffbbbbbbbbbaaaaaaaaacccccccccdddddddddeeeeeeeee"><PARAM NAME="move" VALUE="R1B3R3F3R1B1R3B3U3B3"></APPLET>



不知为何显示不出我所作的结果,还是把<FONT color=#0000ff> HTML 的这段代码拷贝粘贴到论坛上 </FONT>让高手为我解决吧!






<P>&lt;APPLET codebase=http://haiwu.nease.net/haiwu/mf/tan code=lrubik.class height=145 width=125 &gt;
&lt;PARAM NAME="pos" VALUE="fffffffffbbbbbbbbbaaaaaaaaacccccccccdddddddddeeeeeeeee"&gt;
&lt;PARAM NAME="move" VALUE="R1B3R3F3R1B1R3B3U3B3"&gt;
&lt;/APPLET&gt;</P>
<P>    现给出十步转动为:   R1B3R3F3R1B1R3B3U3B3   它是由已还原的六面魔方开始转动的!</P>
<P>    问题:不知各位高手能否在十步内将这个魔方还原?三天为限,三天后本人将给出答案!</P>
<P>    计算机算出的结果也有效!就算人机大赛也行。看看谁将获得最少步冠军!快跟贴夺冠吧!</P>

[此贴子已经被cube_master于2004-11-12 0:25:26编辑过]

宇宙飞碟 发表于 2004-5-23 10:18:20

<APPLET codebase=http://www.mf8.com.cn/Java/3a/ code=lrubik.class height=145 width=125 ><PARAM NAME="pos" VALUE="fffffffffbbbbbbbbbaaaaaaaaacccccccccdddddddddeeeeeeeee"><PARAM NAME="move" VALUE="R1B3R3F3R1B1R3B3U3B3U1F1U3B1U1B1"></APPLET><P>鉴于昨天已有两位“魔方大帝”解出最少步,先将它们连接起来让大家欣赏!</P>
<P>还是再把HTML 的这段代码拷贝粘贴到论坛上吧!再请高手为我修改好图象!</P>
<P>&lt;APPLET codebase=http://haiwu.nease.net/haiwu/mf/tan code=lrubik.class height=145 width=125 &gt;
&lt;PARAM NAME="pos" VALUE="fffffffffbbbbbbbbbaaaaaaaaacccccccccdddddddddeeeeeeeee"&gt;
&lt;PARAM NAME="move" VALUE="R1B3R3F3R1B1R3B3U3B3U1F1U3B1U1B1"&gt;
&lt;/APPLET&gt;</P>
<P>上面的十六步变换被称为“循环变换”,之所以这样称它,是因为</P>
<P>不但 R1B3R3F3R1B1R3B3U3B3U1F1U3B1U1B1 实现了六面循环还原</P>
<P>而且 B3R3F3R1B1R3B3U3B3U1F1U3B1U1B1R1</P>
<P>        R3F3R1B1R3B3U3B3U1F1U3B1U1B1R1B3</P>
<P>        F3R1B1R3B3U3B3U1F1U3B1U1B1R1B3R3</P>
<P>        ......................................................</P>
<P>都能实现了六面循环还原,很有意思吧!!
</P>
[此贴子已经被cube_master于2004-11-12 0:26:55编辑过]

沸腾的冰雪 发表于 2008-3-2 13:27:43

<P>师傅我是刚学会玩的,就是对不出来啊!给我发个魔方的程序吧,谢谢了</P>

kissss1987 发表于 2008-4-14 06:33:55

kissss1987@163.com我也要源程序,谢谢啦
页: [1] 2
查看完整版本: 编了一个计算魔方的程序