魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
查看: 148687|回复: 7
打印 上一主题 下一主题

网上摘录 [复制链接]

Rank: 10Rank: 10Rank: 10

积分
25039
帖子
4868
精华
33
UID
3
性别
兴趣爱好
结构
跳转到指定楼层
1#
发表于 2004-6-19 11:36:51 |只看该作者 |正序浏览
转载自:http://www.shijie.org/article/sjbl200002/632.html
世界博览 2000年 第2期
魔方与我们的生活
作者:尼娜
  70年代后期出生的苏联儿童对于曾令自己的父母着迷的游戏很是好奇,他们甚至不知道魔方、“卢比克”究竟是何物?!可能是因为我们所谓的民主、经济和政治思维的变化过于混乱,以致忙于实现自己幻想的这代人被20世纪多彩的世界弄昏了头脑。我清楚地记得,1981年我的好朋友——一个程序设计天才,曾经一连几个小时坐在那儿全神贯注地摆弄魔方,最后他把这个玩具扔到窗外,一边低声地咒骂,因为这位苏联计算机天才不肯承认匈牙利人卢比克给他带来的这一失败。一年之后,大部分苏联人都掌握了这种“险恶”的玩具——地铁里、办公室里、家里、公园里,神情专注的男女老少转动着魔方,好像生活中除了这种玩具之外再没有什么更重要的事情了。   不过,生活中确实也没有什么更重要的事情了。卢比克用他的魔方为苏联人民打开了一条通往“虚幻现实”的道路,虽然这个词组在当时的词典中并不存在,但这种“虚幻现实”的确存在过。魔方无异是一种高热量产品,它可以完全替代一两次全国代表大会、一个冰球世界冠军、250克伏特加酒、一个月定量的脱脂酸奶和半顿新年宴席。作为礼物,它比书籍这种传统的、最好的礼物还要珍贵,甚至超过了当时的极品礼物——一种名为“西伯利亚”的小瓶上等伏特加酒。很多人甚至为此放弃了性,因为掌握魔方比控制女人还要简单方便——在一片漆黑中,沉默着或是大声呼喊着,在房间里或是阳台上,可以随心所欲。   至今我还没有发现一个能够抵御魔方的诱惑力的人。今天商店里已经不再出售卢比克的魔方了,但是你可以在国际互联网上玩这种游戏,这和以前的魔方相比已经有了很大的差异。如果厌倦了,可以干脆关掉计算机,你却无法把真实的魔方从心中赶走,无论放在哪里,它都无时无刻不在吸引着你——你心里很清楚,魔方就在家里!它足以将你的双手和头脑联系在一起。   1974年,从事建筑和工艺品设计的匈牙利人卢比克在布达佩斯发明了魔方。他当时正在研究一种新型建筑结构原理的可能性,即后来成为20世纪最普及的玩具“卢比克模型”。他用一种特殊方法将26个小方块连在一起,其中每个方块都有一定的自由度。在研究自己的专业问题时,他突然发现:将这一结构的各面旋转几次后想要再恢复到原来的状态几乎是不可能的——建筑师由此得出一个结论:如果存在一种方法,那将无异是“上帝的算法”,即:在43个1018的方案中只有一个是正确的。地球上平均每八个人中就有一个人亲自体验了这种“可怕的寻找”。在苏联,魔方的偶然出现竟让广大群众不再关注重要的政治任务!   1975年恩罗·卢比克将他的发明作为玩具申请了专利。1977年得到专利权之后,他开始在一个小型合作社里组织生产。第一批玩具魔方在1978年圣诞前夕上市,卢比克一夜之间成了百万富翁。到了80年代初人们对这种玩具的兴趣达到了高潮——几乎所有的国家都出现了以魔方命名的俱乐部,还有人研究它是否和女人以及上司的心情有关。第一个魔方比赛世界冠军产生于1982年的布达佩斯,他是个美国大学生,在23秒内就把所有面变换成理想的状态,这一记录保持至今。后来卢比克又发明了一种新型魔方,名为“卢比克的复仇”。 这种魔方和以前的不同,它的每一面不是由三个或四个小方块组成,而是有六个小方块,相比之下这种游戏难度更大。   如今有一些传闻,据说是卢比克自己散布的:魔方的生产在今后几年内会达到真正的高峰——也许人们会重新记起这个玩具,而且知道它就是最好的,现在没有、今后也不会再有更好的。事实上就在去年夏天,在希腊的一个岛屿,我曾见到一些长椅上放着崭新的魔方。魔方也许能够以一种新的方式拯救我们:对于如今还没有彻底疯狂或是疯得还不够的国家官员们,如果他们手中拿到魔方,就有可能摆脱极具吸引力的政治游戏。而那些为数不多的暂时还对魔方有一种免疫力的人们,迟早有一天也会去寻找这种“上帝的算法”。如果真有那么一天的话,真应该在我们的某个广场上为卢比克先生树立一座纪念碑。当然最好还是能邀请卢比克先生到我们的国家来:如果这样有头脑的人竟不能解决我们现在的贫穷问题,岂不是笑话!

[此贴子已经被作者于6/19/2004 12:39:41 AM编辑过]

-,'''╭⌒╮⌒╮.',''',,',.'',,','',.,,'
.╱◥██◣''o┈ 魔方吧 ┄o.'',,',.
︱田︱田田︱ '',,',.o┈ 欢迎您光临 ┄o
╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬

红魔

小魔杰

Rank: 4

积分
1578
帖子
1395
精华
1
UID
70380
性别
8#
发表于 2009-8-23 17:43:18 |只看该作者
好多好文章哦,适合像我一样的书虫......
POP!POP!POP!

使用道具 举报

铜魔

鱼儿

Rank: 8Rank: 8

积分
20516
帖子
19704
精华
0
UID
28712
性别

六年元老

7#
发表于 2009-8-23 17:28:25 |只看该作者
好早的贴子哦,来顶下,呵呵,第一篇文章好像是来自于<发明与革新>2001年3月的.找了好久,结果在这找到,晕
你即使是一条搁浅在沙滩上的鱼,也必须要学会行走。QQ:351796610已满,请加MSN:sun-shine-yu@live.cn
http://shop65338937请勿打广告com/晨曦魔方空间 全场特价

使用道具 举报

Rank: 2

积分
274
帖子
209
精华
0
UID
27039
性别
保密
6#
发表于 2008-10-4 12:46:01 |只看该作者
看看发帖日期!~!~

使用道具 举报

Rank: 2

积分
278
帖子
196
精华
0
UID
43157
性别
5#
发表于 2008-10-3 13:48:34 |只看该作者
第一个魔方比赛世界冠军产生于1982年的布达佩斯,他是个美国大学生,在23秒内就把所有面变换成理想的状态,这一记录保持至今。



不对吧

使用道具 举报

Rank: 3Rank: 3

积分
637
帖子
79
精华
2
UID
81
性别
4#
发表于 2004-6-24 08:42:47 |只看该作者

本人一拙作:请到 http://www.mytaoyuan.com/ly/show.asp?id=985 下载 《数字魔方》,仅提供键盘操作,编的很初级,让大家见笑了!

按 上、下、左、右 键和 PgUp 、PgDn 键 进行旋转 上、下、左、右 和 前、后 面的操作; 按 + 、 - 进行顺、逆时针切换; F1 -- F3 进行 魔方中间层旋转; F4 -- F6 进行 魔方整体旋转; 按 ESC 键出现打乱、还原、退出等菜单选项。

使用道具 举报

Rank: 10Rank: 10Rank: 10

积分
25039
帖子
4868
精华
33
UID
3
性别
兴趣爱好
结构
3#
发表于 2004-6-19 11:43:42 |只看该作者

转载自:http://www.chinagamedev.net/cgd/develop/engine/200111/Juggle.htm

魔方游戏程序设计
出 处:蓝色飞鸟
[ 2001-08-21 ]
作 者:ShowMan
  目 录   1 基本思想   2 问题的提出   3 问题的解决   4 游戏过程


  设计一个魔方游戏程序首先要实现的是魔方每一层的旋转和魔方的转动,其中可以选择的方法很多,本文介绍一种迅速有效,而且算法简单的方法。 1、基本思想   魔方共有26块,其中6块位于每一面的中心位置,当魔方转动时它们是不动的;有8块位于顶角位置,各有三个不同颜色的小面;剩余12块各有二个不同颜色的小面。根据这个特点,我们规定魔方的前后面为A面,上下面为S面,左右面为D面。设置颜色值顺序:A>S>D。定义数组a[6]存放6个中心小块的颜色,b[12]存放12个有两个小面的块的颜色,c[8]存放有三个小面的块的颜色,a的数值在0 — 15之间且各不相同;设b所临的两个面:B1>B2,则b的03这4个字节存放B2的值,4 — 7这4个字节存放B1的值;c的0 — 3这4个字节存放D面的颜色值,4 — 7这4个字节存放S面的颜色值,8 — 11这4个字节存放A面的颜色值。 2、问题的提出   怎样实现魔方各个面的转动?怎样实现魔方的旋转以使游戏者可以寻找每一小块的位置?怎样检测魔方是否已经排成,即每一面的9小块颜色一致? 3、问题的解决   由于魔方共有6个面,因此只需编写6个转换的子函数。下面以其中两个为例说明这些子函数的算法:   int m(int s)   {     int d;     d=((s&Oxf)|(s>>4);     return d;   }   int n(int s)   {     int d;     d=(s>>8)|(s&Oxf)<<8)|(s&OxfO);     return d;   }   void c1()   {     int t;     t=b[0];     b[0]=m(b[4]);     b[4]=m(b[8]);     b[8]=m(b[5]);     b[5]=m(t);     t=c[0];     c[0]=n(b[4]);     b[4]=n(b[5]);     c[5]=n(c[1]);     c[1]=n(t);   }   函数int m(int s)将s的0 — 3字节与4 — 7字节的值相交换,int n(int s)将s的0 — 3字节与8 — 11字节的值相交换。函数c1()实现的是魔方上层的转动,因为魔方的上层转换时将c的D面变成A面,将A面变成D面,而S面仍是S面,所以要将参与转动的c(i)的0 — 3字节与8 — 11字节相交换,然后将每一个ci的值循环交换;由于是将AS面变为SD面或将SD面变为AS面,因此要将参与转动的每一个b的0 — 3字节与4 — 7字节的值相交换,然后将每一个b的值循环交换。这样魔方上层的转动就完成了。   int l(int s)   {     int d;     d=(s>>8<<4)+((s&OxfO)<<4)+(s&Oxf);     return d;   }   void c3()   {     int t;     t=b[3];     b[3]=b[7];     b[7]=b[11];     b[11]=b[4];     b[4]=t;     t=c[0];     c[0]=l(c[3]);     c[3]=l(c[7]);     c[7]=l(c[4]);     c[4]=l(t);   }   函数int l(int s)是将s的4 — 7字节与8 — 11字节相交换。函数c3()实现的是魔方左层的转动。因为参与转动的每一个b不是AD面就是SD面,因此转动时只要将各b的值循环交换即可。而每一个c是ASD面和SAD面之间的变换,所以先将各c的4 — 7字节与8 — 11字节相交换,然后将各c的值循环交换即可。这样魔方的左层转动就完成了。其它子函数的算法类似。实现魔方向右和向上的旋转。向上旋转可先施行左层和右层向上转动,然后中间层的a和b的值循环交换即可,程序如下:   void turn1()   {     int t;     c4();     c3();   }   t=a[0];   a[0]=a[4];   a[4]=a[5];   a[5]=a[2];   a[2]=t;   t=b[0];   b[0]=m(b[2]);   b[2]=m(b[2]);   b[2]=b[10];   b[10]=m(b[8]);   b[8]=m(t);   向右旋转的方法类似。检测魔方是否已排成,只需检测每一个b的值是否与它相临的两个面的中心小块a[j]和a[l]的值相符(设面J>L),即是否有b=a[j]<<4+a[l];同时是滞有每一个c==a[j]<<8+a[l]<<4+a[h](面J>L>H),如果对于所有的c都满足条件,则说明魔方已经排完。 4、游戏过程   本程序运行后计算机自动将魔方打乱,然后由游戏者通过键盘来将魔方排成每九个小面的颜色一致。操作方法:“↑”使魔方向上转动,“→”使魔方向右转,由一个蓝色圆圈标志它的上下、左右、前后六个层的位置,按空格键使层转动。A键和S键控制圆圈标志双向转换。按Esc键可退出游戏。

-,'''╭⌒╮⌒╮.',''',,',.'',,','',.,,'
.╱◥██◣''o┈ 魔方吧 ┄o.'',,',.
︱田︱田田︱ '',,',.o┈ 欢迎您光临 ┄o
╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬

使用道具 举报

Rank: 10Rank: 10Rank: 10

积分
25039
帖子
4868
精华
33
UID
3
性别
兴趣爱好
结构
2#
发表于 2004-6-19 11:40:57 |只看该作者

转载自:http://swallow_ny.tianyablog.com/blogger/post_show.asp?BlogID=18742&ostID=126483&idWriter=0&Key=0

魔方的世界
作者:swallow_ny 提交日期:2004-03-14 14:44

?? ??D的桌子上有一个魔方,让我感到挺奇怪的,想不到他会喜欢玩,更让我惊讶的是,它已经被组成六个一色的面,看来他是魔方高手。 ??我也玩过,作成一个面是很容易的,我发现一些规则,在有限步内,总可以做到。两个面就难了,我没好好试过,有机会的话,可能会研究一下两面的规则。六个面非常难,尽管已经有图解,我还是不想马上就研究图解。我喜欢自己先研究一番,我认为可以建立一个数学模型来求解的,这类问题通常是NP。 另外,如果扩充到多维空间,是否存在通用模型呢?每个方格之间存在某类约束,如果能找到其公式就好了。 也许,对于这种问题的解决,可以让我们对于现实生活中很多问题,有更多的了解,比如,一个无序的状态,距离有序状态有多远,一个棋手至少要走多少步和怎么走才会胜。 我的朋友YT,是少年班的,非常聪明,解什么问题总是比别人快。他也多半能很快做成一个面,甚至还可能试出两个面以上。不过,估计只是出于好玩,懒得从数学模型角度考虑。ZY可能会试半天,什么也出不来,于是,一气之下,把魔方分解,重新安装。于是六个面全出来了。这倒也是一个办法,至少大多数人都不会这么做。 ?? ??小小的魔方,有个精彩的世界,隐含着无数的规则,也能折射每个人态度和方法。当人面对一个难题的时候,有人马上放弃,有人试几下后退却,有的人虽然自己解不出,但会饶有兴致地研究已有答案,有人固执地去自己找解,就算解不存在,他也要证明这一点。对于一些小问题,有人不放在心上,反正解不解得出,不会影响大计,有人很认真,事无巨细,都会以认真的态度,也许会活得很累。有的人很认真,但总是处于试来试去的阶段,运气好的话,可以很快得到一个答案,有的人最初试了一些,在感觉中找到一些规律,然后抽象这些规律,增加这个问题的维度,用已有的理论,脱离具体问题来证明,然后很可能一步得到全部解,或证明无解,然后,再回到实践,可以对具体问题给予更多的内容,让人们有个新的认识,也可能引出更多的问题。 ?? ??每个人心里都有一个魔方,你是怎么玩的呢? ?? ??后记:现在我已经能够用5-10分钟做出六个面了。惭愧得紧,我是从网上找到解法,学会的。不过这也要些钻研和耐心的。学到不少东西,挺有乐趣。依此类推,还可以做出其它花样,甚至,这种解题的方法对别的问题也有很大的启发。
-,'''╭⌒╮⌒╮.',''',,',.'',,','',.,,'
.╱◥██◣''o┈ 魔方吧 ┄o.'',,',.
︱田︱田田︱ '',,',.o┈ 欢迎您光临 ┄o
╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬

使用道具 举报

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

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

GMT+8, 2024-11-23 06:37

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部