独立钻石棋成文.doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:5 大小:56KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

独立钻石棋成文.doc

独立钻石棋成文.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

独立钻石棋1.独立钻石棋的历史与起源在距今大约两百多年,法国大革命前夕,著名的巴士地狱关着一位叫让·诺的贵族,他独自一个人关在铁窗里,为了打发时间,就设计出一种能够自己玩的游戏,就是“独立钻石”(Solitaire)(又称“单身贵族棋”)。这位贵族囚犯,每日沉迷于自己发明的游戏,后来更是在整个巴士底狱盛行,公元1789年7月14日,巴黎人民武装起义,攻破巴士底狱,而使得这个游戏在社会各阶层流传开来。这个玩意在十八世纪末才传至英国,及后渐渐流行于世界各地。在我国称它为孔明棋,也叫跳弹珠,或者叫“Pegged”有人说孔明棋是三国时期的诸葛亮所发明的益智棋,失传后又来辗转流传到日本、欧美,成为外国普及的益智游戏。独立钻石棋、华容道、魔方被称为智力游戏界的三大不可思议,它们都含有很深的数学原理。2.独立钻石棋的游戏规则这游戏的棋盘有多种式样,不过最流行的式样,是一个圆形的板。板上有三行平行的小孔,和另外三行平行的小孔,相交织成十字形。每行的孔数有七个,故此一共有33个小孔。而棋子一般是一些头略粗的木粒子或玻璃弹子。玩法是在棋盘33孔中,每孔都放下一棋,但是取中心的一孔是空着的。玩的时候是像跳棋一样行子。一棋子依直线在平行或垂直(不能依斜线)的方向跳过一棋子,而放在此棋子之后的一个空格内。故此,棋子后必要有空的孔才可跳过。每次棋子跳去一个空孔,被跳过的棋便移离棋盘。这时棋盘上便少了一只棋子。如此一直玩下去,使剩下来的棋子越少越好。独立钻石的棋盘有很多种变形,这个棋盘就是最初的样子,走法就是按照跳棋的走法,但是被跳过的棋子全部被吃掉,这样每跳一下棋盘上的棋子就会少一颗,而如果像跳棋那样连跳,每步就可能吃掉很多颗棋子。游戏的目的是要使棋盘上留下来的棋子越少越好。如果最后剩一子,而且正好位于棋盘正中心的第44号洞孔上,那就是最好的结果。此种局势称为“独立(粒)钻石”。3.独立钻石棋的解法图:5412631098711121315141617181920222123242526272928303132331908年以前,人们认为要23步才可以得“天才”1908年,都丹尼将纪录变成19步就可以得“天才”1912年,布荷特创下18步之后,最少要18步才可以得“天才”1986年,万萍萍也用了18步。后来,运用上海的计算机,人们发现只有两个18步得“天才”的方法布荷特的走法:eq\o\ac(○,1)29-17eq\o\ac(○,2)26-24eq\o\ac(○,3)33-25eq\o\ac(○,4)18-30eq\o\ac(○,5)6-18eq\o\ac(○,6)13-11eq\o\ac(○,7)10-12eq\o\ac(○,8)27-13-11eq\o\ac(○,9)23-25eq\o\ac(○,10)21-23eq\o\ac(○,11)8-10-12-26-24-22eq\o\ac(○,12)31-33-25-11eq\o\ac(○,13)1-9eq\o\ac(○,14)16-4eq\o\ac(○,15)3-1-9eq\o\ac(○,16)7-21-23eq\o\ac(○,17)28-16-4-6-18-16eq\o\ac(○,18)15-17用C语言程序表示#include<stdio.h>intmap[7][7]={{2,2,1,1,1,2,2},{2,2,1,1,1,2,2},{1,1,1,1,1,1,1},{1,1,1,0,1,1,1},{1,1,1,1,1,1,1},{2,2,1,1,1,2,2},{2,2,1,1,1,2,2}};structjump{intx1,y1,x2,y2;}l[32];intp=0;boolmove(intx1,inty1,intx2,inty2);main(){if(!move(1,3,3,3))printf("\nFailure!");}boolmove(intx1,inty1,intx2,inty2){booltmp=false;inti,j;if(0<=x2&&x2<=7&&0<=y2&&y2<=7&&map[x2][y2]==0&&map[(x1+x2)/2][(y1+y2)/2]==1){map[x2][y2]=1;map[x1][y1]=0;map[(x1+x2)/2][(y1+y2)/2]=0;l[p].x1=x1;l[p].y1=y1;l[p].x2=x2;l[p].y2=y2;p++;if(p==31&&map[3][3]==1){for(i=0;i<p;i