九連環(中國傳統民間遊戲)

九連環(中國傳統民間遊戲)

九連環是中國傳統民間智力玩具,以金屬絲製成9個圓環,將圓環套裝在橫板或各式框架上,並貫以環柄。

把玩時,按照一定的程式反覆操作,可使9個圓環分別解開,或合二為一。

基本介紹

  • 中文名:九連環
  • 原版名稱:Baguenaudier
  • 其他名稱:Chinese Rings, Cardan's Suspension, Cardano's Rings, Devil's needle 或者 five pillars puzzle
  • 遊戲類型:中國傳統智益遊戲
  • 所屬系列:益智遊戲
  • 地區:中國
  • 發源地:山西
  • 起源:西漢
遊戲介紹,起源,歷史,構造,拆解原理,破解方法,步驟計算,程式實現,一種解法,其他相關,

遊戲介紹

九連環是一種流傳於山西省的傳統民間的智力玩具。它用九個圓環相連成串,以解開為勝。據明代楊慎丹鉛總錄》記載,曾以玉石為材料製成兩個互貫的圓環,“兩環互相貫為一,得其關捩,解之為二,又合而為一”。後來,以銅或鐵代替玉石,成為婦女兒童的玩具。它在中國差不多有二千年的歷史,卓文君在給司馬相如的信中有“九連環從中折斷”的句子。清代,《紅樓夢》中也有林黛玉巧解九連環的記載。周邦彥也留下關於九連環的名句“縱妙手、能解連環。”
九連環九連環

起源

西漢才女,辭賦家司馬相如之妻卓文君曾提及九連環:……,七弦琴無心彈,八行書無可傳,九連環從中折斷,十里長亭望眼欲穿;百思想,千懷念,萬般無奈把郎怨。……
九連環九連環
卓文君生於西漢,諸葛亮生於東漢末年,其時漢室江山已分崩離析。二人相差幾百年。也就是說,在諸葛亮之前幾百年的西漢,九連環已經存在。故“九連環由諸葛亮發明”之說並不正確,可能系後世誤傳。也有人認為卓文君作詞的故事似元朝杜撰,因為詞風明顯不是漢朝時所有。
2003年3月8日,中國甘肅省嘉峪關市的王仲斌以3分57秒成功解出九連環,進入金氏世界紀錄大全。
2012年10月25日CCTV新聞頻道報導,江西理工大學學生楊鹹陽創造最快拆解九連環的記錄,時間為161秒(蒙眼)

歷史

傳說九連環源於中國古代傳統民間,一說發明於戰國時代,另一說發明於三國時期,但能確認就是九連環的記載是明代楊慎(1488-1559,號升庵)的《丹鉛總錄》(見《升庵集》卷六十八),並不早於歐洲。
在中國,戰國時代名家惠施曾著立《連環可解》的立論。惠施所說連環是指《戰國策》卷第十三中提到的玉連環,南宋鮑彪注稱這種玉連環是“兩環相貫”,顯然不是這裡所說的九連環。據說三國時期,諸葛亮常帶兵打仗,為排遣妻子寂寞而發明。於明代普及,明代中期時,流傳更是極廣。清代上至士大夫,下至販夫走卒,個個愛玩“九連環”。《紅樓夢》中曾有描寫在深閨中玩九連環的細節。
在西方,16世紀前,歐洲有了九連環的記載。1550年,巴黎刊行的數學文獻,清楚地討論過這“中國難題”。著名義大利數學家卡當的著作中將之稱為“中國九連環”。1685年,英國數學家瓦里斯對此作了詳細的數學說明。19世紀,格羅斯用二進位數給了它一個十分優美的解答。
九連環無論在任何時候,都有著聰明的象徵。在古代,對於人們來說,九連環不算是一種玩具,而是代表智慧的象徵。電視劇看多的人應該會有這樣一個印象:出使天朝的外邦,有些比較囂張的,都會拿出九連環來刁難朝中大臣。在大家都束手無策,外邦使官洋洋得意的時候,總會有一個比較聰明的人出來解出九連環,挽回天朝的顏面。因此,九連環總是會被賦予聰明,有智慧的帽子。

構造

九連環流行極廣,形式多樣,規格不一。其製作,用金屬絲製成圓形小環九枚,九環相連,套在條形橫板或各式框架上,其框柄有劍形、如意形、蝴蝶形、梅花形等,各環均以銅桿與之相接。玩時,依法使九環全部聯貫子銅圈上,或經過穿套全部解下。其解法多樣,可分可合,變化多端。得法者需經過81次上下才能將相連的九個環套入一柱,再用341次才能將九個環全部解下。此外,也可套成花籃、繡球、宮燈等狀。
同時,九連環也是按照一種順序來解的。解九連環需要相當一段時間,這也可以訓練人的耐心。不僅 如此,九連環還可以根據需要自行增加環數提高難度,但環數增加將使解開步驟呈幾何級數遞增,且本質上並沒有改變解環方法,因此通常所見仍是九環為主。

拆解原理

解開九連環共需要256步,只要上或下一個環,就算一步,不是在框架上滑動。希望大家能夠通過獨立思考,解決這個問題。九連環的解下和套上是一對逆過程。解法跟計算機的格雷碼是同一原理。
鎏金九連環鎏金九連環
九連環的每個環互相制約,只有第一環能夠自由上下。要想下/上第n個環,就必須滿足兩個條件(第一個環除外)。一、第n-1個環在架上;二、第n-1個環前面的環全部不在架上。玩九連環就是要努力滿足上面的兩個條件。解下九連環本質上要從後面的環開始下,而先下前面的環,是為了下後面的環,前面的環還要裝上,不算是真正地取下來。
我們先從最簡單的一連環開始。解一連環需要1步:一下。解二連環需要1步:一、二下。那解三連環呢?需要4步:一下,三下,一上,一、二下。也就是解一個連環,再把最後一個環解下,再上一個一環,再解一個二連環。那解一個四連環,需要7步:一、二下,四下,一、二上,一下,三下,一上,一、二下。也就是解一個二連環,再解最後一個環,再上一個二連環,再解一個三連環。
也就是說,解N連環,就是先解一個N-2連環,再解最後一個環,再上N-2連環,再解N-1連環。
解一連環需要1步,解二連環需要1步,由此可知,解三連環需要4步,解四連環需要7步,解五連環需要16步,解六連環需要31步,解七連環需要64步,解八需要127步,解九連環需要256步,解十連環需要682步……以後的類推。

破解方法

基本方法
把框架和九個圓環分開,如左手持框架柄,右手握環,從右到左編號為1-9將環套入框架為“上”,取出為“下”。
九連環拆解共341步:
下9:
下1(結果98765432在上):下1
下3(結果987654在上):下3上1下12
下5(結果9876在上):下5上12下1上3上1下12下4上12下1下3上1下12
下7(結果98在上):下7上12下1上3上1下12上4上12下1下3上1下12上5上12下1上3上1下12下4上12下1下3上1下12下6上12下1上3上1下12上4上12下1下3上1下12下5上12下1上3上1下12下4上12下1下3上1下12
下9(結果8在上):下9;
下8:
九連環的解法九連環的解法
上2(結果82在上):上12下1
上3(結果83在上):上3上1下12
上4(結果84在上):上4上12下1下3上1下12
上5(結果85在上):上5上12下1上3上1下12下4上12下1下3上1下12
上6(結果86在上):上6上12下1上3上1下12上4上 12下1下3上1下12下5上12下1上3上1下12下4上12下1下3上1下12
上7(結果87在上):上7上12下1上3上1下12上4上12下1下3上1下12上5上12下1上3上1下 12下4上12下1下3上1下12下6上12下1上3上1下12上4上12下1下3上1下12下5上12下1上3上1下12下4上12下1下3上1下12
下8(結果7在上):下8;
下7:
上2(結果72在上):上12下1
上3(結果73在上):上3上1下12
上4(結果74在上):上4上12下1下3上1下12
上5(結果75在上):上5上12下1上3上1下12下4上12下1下3上1下12
上6(結果76在上):上6上12下1上3上1下12上4上12下1下3上1下12下5上12下1上3上1下12下4上12下1下3上1下12
下7(結果6在上):下7;
下6:
上2(結果62在上):上12下1
上3(結果63在上):上3上1下12
上4(結果64在上):上4上12下1下3上1下12
上5(結果65在上):上5上12下1上3上1下12下4上12下1下3上1下12
下6(結果5在上):下6;
下5:
上2(結果52在上):上12下1
上3(結果53在上):上3上1下12
上4(結果54在上):上4上12下1下3上1下12
下5(結果4在上):下5;
下4:
上2(結果42在上):上12下1
上3(結果43在上):上3上1下12
下4(結果3在上):下4;
下3:
上2(結果32在上):上12下1
下3(結果2在上):下3;
下12:
下12(結果拆解完成):上1下12。
九連環安裝共341步:
上98:
上2(結果2在上):上12下1
上3(結果3在上):上3上1下12
上4(結果4在上):上4上12下1下3上1下12
上5(結果5在上):上5上12下1上3上1下12下4上12下1下3上1下12
上6(結果6在上):上6上12下1上3上1下12上4上12下1下3上1下12下5上12 下1上3上1下12下4上12下1下3上1下12
上7(結果7在上):上7上12下1上3上1下12上4上12下1下3上1下12上5上12下1上3上1下12下4上12下1下3上1下12下6上12下1上3上1下12上4上12下1下3上1下12下5上12下1上3上1下12下4上12下1下3上1下12
上8(結果8在上):上8上12下1上3上1下12上4上12下1下3上1下12上5上12下1上3上1下12下4上12下1下3上1下12上6上12下1上3上1下12上4上12下1下3上1下12下5上12下1上3上1下12 下4上12下1下3上1下12下7上12下1上3上1下12上4上12下1下3上1下12上5上12下1上3上1下12下4上12下1下3上1下12下6上12下1上3上1下12上4上12下1下3上1下12下5上12下1上3上1下12下4上12下1下3上1下12
上9(結果98在上):上9
上76:
上2(結果982在上):上12下1
九連環的解法九連環的解法
上3(結果983在上):上3上1下12
上4(結果984在上):上上4上12下1下3上1下12
上5(結果985在上):上5上12下1上3上1下12下4上12下1下3上1下12
上6(結果986在上):上6上12下1上3上1下12上4上12 下1下3上1下12下5上12下1上3上1下12下4上12下1下3上1下12
上7(結果9876在上):上7
上54:
上2(結果98762在上):上12下1
上3(結果98763在上):上3上1下12
上4(結果98764在上):上4上12下1下3上1下12
上5(結果987654在上):上5
上32:
上2(結果9876542在上):上12下1
上3(結果9876532在上):上3
上1:
上1(結果安裝完成):上1。
遞歸破解
用“遞歸”描述九連環的拆裝方法比較容易理解和記憶。所謂遞歸就是第n個步驟的解決辦法可以用已知的n-1步(或更早)的辦法來解決。對於九連環來說,就是拆下第n個環的方法可以用拆下第n-1個環的方法來描述。把拆下第n個環的問題轉化成為如何拆下第n-1個環的問題,也就是我們會拆第n-1個環就會拆第n個環。以下是具體的拆裝方法描述:
n 拆下第1個環的方法:(D1)
1.把第1個環推出橫桿,從橫桿上面穿下去。
n 裝上第1個環的方法:(U1 )
1.把第1個環從橫桿下面穿上去,拉到外面後套進橫桿。
n 拆下第2個環的方法:(D2 )
1. 把第1個換裝上;(U1)
2. 把第2個和第1個環一起推出橫桿,把第二個環從橫桿上面穿下去;(卸下第2環)
3. 把第1個換再拆下。(D1)
n 裝上第2個環的方法:(U2)
1. 把第1個換裝上;(U1)
2. 把第2個環從橫桿下面穿上去,拉到前面後套進橫桿;(裝上第2環)
3. 把第1個換再拆下。(D1)
n 拆下第n環的方法:( Dn )
1. 把第n-1環裝上去;(Un-1)
2.把第n和n-1環一起推出橫桿,把第n環從橫桿上面穿下去;(卸下第n環)
3. 再把第n-1環卸下。(Dn-1)
n 裝上第n個環的方法:(Un)
1. 把第n-1環裝上去;(Un-1)
2. 把第n個環從橫桿下面穿上去,拉到前面後套進橫桿;(裝上第n環)
3. 把第n-1個換再拆下。(Dn-1)
n 為了加快速度,可以把第n+1個環和第n個環一起卸下去:(Dn.n+1)
1. 把第n+1和n環一起推出橫桿,把n+1環從橫桿上面穿下去;(卸下第n+1環)
2. 把第n-1環裝上去;(Un-1)
3、把第n和n-1環一起推出橫桿,把第n環從橫桿上面穿下去;(卸下第n環)
4. 再把第n-1環卸下。(Dn-1)
舉例說明:
在第1個和第2個環都卸下去的情況下,如何把第3、4環卸下(n=3,D3.4):
1. 把第4和3環一起推出橫桿,把4環從橫桿上面穿下去;(卸下第4環)
2. 把第2環裝上去;(按方法U2)
3. 把第3和2環一起推出橫桿,把第3環從橫桿上面穿下去;(卸下第3環)
4. 再把第2環卸下。(按照方法D2)

步驟計算

九連環是中國傳統民間玩具。規定環在桿上用1表示,環在下面用0表示。規定最左邊的環是可以任意上下的那一環,輸出數據中最右邊必須是1,也就是說,010100要寫成0101。
現今是X連環,由於“輸出數據中最右邊必須是1”,所以X可以理解為無限大,右邊多餘的0在輸出時都省略。初始化各環都是0,以下是前9步的情況:
1.1
2.11
3.01
4.011
5.111
6.101
7.001
8.0011
9.1011
問在X連環裝上過程中,第n步完成後,具體情況是怎么樣的。
答案:將n轉化為二進制,求其格雷碼。將二進制的格雷碼逆序輸出,即得具體情況。
注意:這個算法揭示了傳統的九連環與現代的格雷碼的重要關係!

程式實現

(C語言):
#include<stdio.h>
main()
{ __int64 n;
int a[70]=,num=0,i;
scanf("%I64d",&n);
if(n==0)
{ printf("0");
return 0;
}
while(n>0)
{ a[num++]=n%2;
n/=2;
}
for(i=0;i<num;i++)
a=a^a[i+1];
while(a[num]==0)
num--;
for(i=0;i<=num;i++)
printf("%d",a);
}
(Pascal語言):
var t:int64; n:shortint;
procedure jie(z:shortint);
procedure tao(z:shortint);
begin
if z>1 then
tao(z-1);
inc(t);
writeln(t,': put up ',z);
if z>1 then
jie(z-1);
end;
begin
if z>1 then
tao(z-1);
inc(t);
writeln(t,': put down ',z);
if z>1 then
jie(z-1);
end;
procedure N_Lian_Huan(z:shortint);
begin
if z>2 then
N_Lian_Huan(z-2);
inc(t);
writeln(t,': put down ',z);
if z>1 then
jie(z-1);
end;
begin
read(n); t:=round(exp(ln(2)*(n+1)));
write(' Total steps:');
if odd(n) then
writeln((t-1)div 3)
else writeln((t-2)div 3);
t:=0;
N_Lian_Huan(n);
end.

一種解法

方法一:首先你不斷地數1,2,1,2,1,2,1……
數1的時候上或下第1個環
數2的時候先看看從第一個環數起第一個在框上的環是第幾個,就上/下它的下一個環。如:第1個在框上,則只需上/下第2個環;
第1至第5個都在框下,第6個在框上就上/下第7個環。
一直,堅持數完341個數就解出來了。
方法二:解九連環,首先要知道1、2環怎么解開,會拆1、2環(如何拆卸請見第一步),就能拆後面的環了。
拆卸方法
第一環:把第一環從左邊拿起,從上面放下。(有圖解,每環步驟均相同)(綠紅方塊幫助辨別方向,箭頭指引移動方向) 重要步驟!
第二環:和第一環步驟一樣(第一環不能先下)。
拆卸提示(順序)
卸下第一環
卸下第三環
卸下第二環
卸下第五環
用前面的方法裝上第三環,此時可卸下第四環。
卸下第三環和更左邊的環。
卸下第七環
裝上第五環,卸下第六環。
裝上第四環,卸下第五環。
......卸完為止。
卸下第九環,離成功更進一步。
想辦法卸下第八環。
想辦法卸下更前面的環。
大功告成(其實有一百多個步驟)

其他相關

紅樓夢
第八回:比通靈金鶯微露意,探寶釵黛玉半含酸。
開頭說了點兒賈母去寧府看戲的事,不過是起個頭兒。寶玉送賈母回來,本想還看戲的,
“想起近日薛寶釵在家養病,未去親候,意欲去望他一望”——這是有伏筆的,前一回寶玉和黛玉玩九連環時,聽說寶釵身上不大好,便吩咐丫頭去看望,“論理我該親自來的,就說才從學裡來,也著了些涼,異日再親自來看。”
--------------------------------------------------------------------------------
隨著人們對九連環的認識與了解,熱愛巧環的民間人士對九連環進行了研究及開拓創新,各種各樣的新式九連環悄然出現在民間,例如:玉米九連環等等,由於這類九連環最初用了十八個環,因此被稱之為九九連環,九九連環隸屬九連環綱目,之後出現的九九連環不一定就是十八個環,但主體構架上的手柄基本保留和延續了九連環手柄的特色,以及手柄與環梁的初始套入關係,即套入的不是一條梁,而是全部或者一部分環,這是傳統九連環以及近代新興的九九連環的共同特點。九九連環總體來看通常難度較傳統九連環會高一些,解法及實物製作上往往也會稍複雜一些,在繼承了九連環的藝術特點的同時,有著其獨特的解題線路及造型藝術,為發展和弘揚九連環傳統益智文化起到了豐富與延伸。關於九連環,民間早有一句諺語為“解不開的歧中易,摘不下的九連環”,來比喻某種比較難解的益智謎題,不過這只是個神話而已,傳統的歧中易解開不是很難,摘下經典九連環也並非難的找不到頭緒,新的“歧中易”及“九九連環”將為這句神化版的諺語添加新的標註與解釋以及給予新的支持與論證。(附歧中易圖)

相關詞條

熱門詞條

聯絡我們