| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1469 人关注过本帖
标题:[转帖]魔方阵
只看楼主 加入收藏
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
 问题点数:0 回复次数:2 
[转帖]魔方阵

一、魔方陣的簡介

1.何謂矩陣? 通式:

2.何謂n階方陣? 若一個矩陣是由n個橫列與n個縱行所構成,共有 個小方格,則稱這個方陣是一個n階方陣。

3.何謂魔方陣? 4 9 2 3 5 7 8 1 6 定義:由n*n個數字所組成的n階方陣,具有各對角線,各橫列與縱行的數字和都相等的性質,稱為魔方陣。而這個相等的和稱為魔術數字。若填入的數字是從1到n*n,稱此種魔方陣為n階正規魔方陣。

4.最早的魔方陣 相傳古時為了幫助治水專家大禹統治天下,由水中浮出兩隻龐大動物背上各負有一圖,只有大禹才可指揮其中之由龍馬負出的為河圖,出自黃河;另一由理龜負出的洛書出自洛河。 洛書

5.最早的四階魔方陣 最早的四階方陣刻在印度一所廟宇石上,年代大約是十一世紀。古代印度人十分崇拜這種幻方,至今從古神殿的遺址,墓碑上常常還可以發現四階幻方的遺跡 。

6.歐洲最早的魔方陣 歐洲最早的方陣是公元1514年德國畫家Albrecht Dure在他著名的銅板畫Melencolia上的4×4幻方,有趣的是,他連創造年代(1514)也鑲在這個方陣中,而且上下左右,四個小方陣的和皆為34,是歐洲最古老的幻方。

[此贴子已经被作者于2005-9-20 1:15:32编辑过]

搜索更多相关主题的帖子: 魔方 转帖 方陣 
2005-09-20 00:27
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
得分:0 

二、魔方陣的變形

1.相異魔方陣 對應方格所填的數字不相同的兩個魔方陣,如下圖 16 02 03 13 01 15 04 14 05 11 10 08 12 06 09 07 09 07 06 12 13 03 16 02 04 14 15 01 08 10 05 11

2.相等魔方陣 每一個對應方格所填的數字都相同的兩個魔方陣,如下圖 4 9 2 4 9 2 3 5 7 3 5 7 8 1 6 8 1 6

3.全等魔方陣 若一個魔方陣能夠經過旋轉或鏡射的方式變成和另一個魔方陣相等,稱這兩個魔方陣全等。在計算魔方陣個數時,我們把全等的魔方陣視為同一種。 2 7 6 8 3 4 9 5 1 1 5 9 4 3 8 6 7 2

4,剛性變形法 (1)順時針方向旋轉90 (2)順時針方向旋轉180 (3)順時針方向旋轉270 (4)左右翻轉(繞鉛直對稱軸鏡射) (5)上下翻轉(繞水平對稱軸鏡射) (6)左上右下翻轉(繞右上至左下對角線鏡射) (7)右上左下翻轉(繞左上至右下對角線鏡射)

原始方陣 旋轉90。 旋轉180。 旋轉270。 01 03 16 14 12 08 13 01 07 05 10 12 14 04 09 07 13 15 02 04 10 06 15 03 09 11 06 08 16 02 11 05 08 06 11 09 05 11 02 16 04 02 15 13 03 15 06 10 12 10 05 07 07 09 04 14 14 16 03 01 01 13 08 12

左右翻轉 上下翻轉 左上右下翻轉 右上左下翻轉 14 16 03 01 12 10 05 07 07 09 04 14 01 13 08 12 04 02 15 13 08 06 11 09 05 11 02 16 03 15 06 10 09 11 06 08 13 15 02 04 10 06 15 03 16 02 11 05 07 05 10 12 01 03 16 14 12 08 13 01 14 04 09 07 5.加值變形法 正規魔方陣:首項是1,公差是1 加值變形後的魔方陣:首項是a,公差是r

原始魔方 首項為5公差為1 首項為5公差為2 14 16 03 01 18 20 07 05 31 35 09 05 04 02 15 13 08 06 19 17 11 07 33 29 09 11 06 08 13 15 10 12 21 25 15 19 07 05 10 12 11 09 14 16 17 13 23 27

6.互補變形法 就是將魔方陣中的每一個數字都替換成互補數的變形方式。 在n階魔方陣中,數字k的互補數=(1+n*n)–k

原始魔方陣 互補變形魔方陣 14 16 03 01 03 01 14 16 04 02 15 13 13 15 02 04 09 11 06 08 08 06 11 09 07 05 10 12 10 12 07 05

7.田字變形法 以中心點為準將魔方陣分成四個相等的小方陣。當n為奇數時,中央的行列要獨立出來。

n是偶數時 n是奇數時 A B A A1 B D C D1 E B1 D C1 C 將魔方陣如下重組: C D  C C1 D B A B1 E D1 B A1 A

可參考下面的範例: 原始4階魔方陣 4階田字變形魔方陣 原始5階魔方陣 5階田字變形魔方陣 01 03 16 14 11 09 08 06 18 22 01 10 14 13 17 09 21 05 13 15 02 04 05 07 12 10 04 08 12 16 25 24 03 20 07 11 08 06 11 09 16 14 01 03 15 19 23 02 06 02 06 23 15 19 12 10 05 07 02 04 13 15 21 05 09 13 17 10 14 01 18 22 07 11 20 24 03 16 25 12 04 08 8.井字對換變形法 (1)任選一數k,1<=k<=n 。 (2)將方陣的第k行和其互補行(第n+1-k行)對換。 (3)將方陣的第k列和其互補列(第n+1-k列)對換。 (4)為方便稱呼,此時姑且命名為k值井字對換變形。

原始魔方陣 1值井字對換魔方陣 2值井字對換魔方陣 1,2值井字對換魔方陣 01 03 16 14 07 10 05 12 01 16 03 14 07 05 10 12 13 15 02 04 04 15 02 13 08 11 06 09 09 11 06 08 08 06 11 09 09 06 11 08 13 02 15 04 04 02 15 13 12 10 05 07 14 03 16 01 12 05 10 07 14 16 03 01 9.拓樸變形法 (1)任選不相等的兩數1<=k1,k2<=n,但當(n+1)/2為奇數時,k1及k2不能等於(n+1)/2。 (2)將座標含k1值的全改成k2。含k2值的全改成k1。含n+1-k1值的全改成n+1-k2。含n+1-k2值的全改成n+1-k1。 (3)為方便稱呼,此時姑且命名為k1,k2拓樸變形。

可參考下面的3階1,3拓樸變形示意圖 (1,1) (1,2) (1,3) (3,3) (3,2) (3,1) (2,1) (2,2) (2,3) (2,3) (2,2) (2,1) (3,1) (3,2) (3,3) (1,3) (1,2) (1,1)

可參考下面的範例 原始魔方陣 1,2 拓樸變形魔方陣 18 22 01 10 14 08 04 12 25 16 04 08 12 16 25 22 18 01 14 10 15 19 23 02 06 19 15 23 06 02 21 05 09 13 17 11 07 20 03 24 07 11 20 24 03 05 21 09 17 13 註:其實對換變形、田字變形可包含於拓樸變形中,只因想法不同故列出參考

[此贴子已经被作者于2005-9-20 1:15:52编辑过]


/* HELLO.C -- Hello, jat chan */ #include \"stdio.h\" #include \"conio.h\" main() { printf(\"Hello, jat chan\\n\"); getch(); }
2005-09-20 00:31
84009030
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-5-19
收藏
得分:0 

三、奇數階魔方陣的建構法 1.楊輝法 發明者:楊輝 適用:三階魔方陣 方法:九子斜排,上下對易,左右相更,四維挺進

***1*** **4*2** 4 9 2 *7*5*3* 3 5 7 **8*6** 8 1 6 ***9***

楊輝法推廣-菱形法 發明者:Bachet de Meziriac 適用:奇數階魔方陣 方法:數字斜排,上下對易,左右相更,四維挺進

********01******** ******06**02******    ****11**07**03**** 11 24 07 20 03 **16**12**08**04** 04 12 25 08 16 21**17**13**09**05 17 05 13 21 09 **22**18**14**10** 10 18 01 14 22 ****23**19**15****  23 06 19 02 15 ******24**20****** ********25********

2.簡捷連續填製法 發明者:De La Loubere 適用:奇數階魔方陣 方法:1立首列中,右一上一,受阻下一

* * 1 * * * * 1 * * * * 1 * * * * 1 * * * * 1 8 * 17 24 1 8 15 * * * * * * * * * * * 5 * * * * 5 * * * * 5 7 * * 23 5 7 14 16 * * * * * * * * * * 4 * * * * 4 6 * * * 4 6 * * * 4 6 13 20 22 * * * * * * * * * * * * * * 3 * * * * 3 10 * * * 3 10 12 19 21 3 * * * * * * * * 2 * * * * 2 * * * * 2 * 11 * * 2 9 11 18 25 2 9 簡捷連續填製法推廣 適用:奇數階魔方陣 方法: (1)1 立首列中,右1上1,受阻下1; (2)1 立中央上,右1下2,受阻上2; (3)1 立首行中,右2下1,受阻右1; (4)1 立首列中,右1下2,受阻下4; (5)1 立中央上,右1上1,受阻上2; (6)1 立首行中,左1上1,受阻右1。

3.輔助方陣法 適用:五階以上奇數階魔方陣 方法: (1)製作輔助方陣一:在左上端填入1,按照走馬的方式往右二下一的方向填入1至底,接著在每列的1的右邊依序填入2、3、4…n 1 * * * * 1 2 3 4 5 1 2 3 4 5 * * 1 * * * * 1 * * 4 5 1 2 3 * * * * 1 * * * * 1 2 3 4 5 1 * 1 * * * * 1 * * * 5 1 2 3 4 * * * 1 * * * * 1 * 3 4 5 1 2 (2)製作輔助方陣二:在左上端填入0,按照走馬的方式往右一下二的方向填入0至底,接著在每列的0的下面依序填入n、2n、3n…n(n-1) 0 * * * * 0 15 5 20 10 1 17 8 24 15 * * * 0 * 5 20 10 0 15 9 25 11 2 18 * 0 * * * 10 0 15 5 20 12 3 19 10 21 * * * * 0 15 5 20 10 0 20 6 22 13 4 * * 0 * * 20 10 0 15 5 23 14 5 16 7 (3)將輔助方陣一與二的對應方格內之數相加填到一個新的方陣對應方格內,則新的方陣即為一個魔方陣。

4.擴階法 適用:n階魔方陣,n為大於5的正整數 方法: (1)先建構出一個n-2階的魔方陣 (2)將(1)所建立的魔方陣每個數字再加上2n-2 (3)將步驟(2)的魔方陣外面再加上一圈,這一圈有4n-4個空格,填入的數為1~(2n-2)和(-2n+3)~n*n,先算出魔術數字會比較好填。

8 1 6 16 09 14 23 01 02 20 19 3 5 7 11 13 15 22 16 09 14 04 4 9 2 12 17 10 05 11 13 15 21 08 12 17 10 18 07 25 24 06 03 5.方陣合成法 適用:當魔方陣的階數n可分解成兩個大於2之整數p、q的乘積 方法:假設A=[(a)ij]與B=[(b)ij]分別代表m階與n階魔方陣,對每個t=1,2…m*m,令At=[(a)ij+m*m(t–1)]。接著我們將方陣B中的數t以m階魔方陣(A)t 代替,就可以得到一個m.n階魔方陣。

可參考下面的範例 魔方陣A 魔方陣B 35 28 33 26 19 24 71 64 69 8 1 6 4 3 8 30 32 34 21 23 25 66 68 70 3 5 7 9 5 1 31 36 29 22 27 20 67 72 65 4 9 2 2 7 6 80 73 78 44 37 42 08 01 06 75 77 79 39 41 43 03 05 07 A4 A3 A8 76 81 74 40 45 38 04 09 02 A9 A5 A1 17 10 15 62 55 60 53 46 51 A2 A7 A6 12 14 16 57 59 61 48 50 52 13 18 11 58 63 56 49 54 47

四、偶數階魔方陣的建構法 1、楊輝法 發明者:楊輝 適用:4階魔方陣 方法:以十六子,依次遞作四行排列,先以外四子對換,一換十六、四換十三,以四內角對換,六換十一、七換十,橫直上下斜角,皆三十四數,對換止可施之於小。

01 02 03 04 16 02 03 13 16 02 03 13 05 06 07 08 05 06 07 08 05 11 10 08 09 10 11 12 09 10 11 12 09 07 06 12 13 14 15 16 04 14 15 01 04 14 15 01

楊輝法推廣-消去對角線法 適用:四之倍數階魔方陣 方法: (1)先將整個方陣劃分成k*k個4階方陣,然後在每個4階方陣的對角線上做記號 (2)由左而右、由上而下,遇到沒有記號的位置才填數字,但不管是否填入數字,每移動一格數字都要加1 (3)自右下角開始,由右而左、由下而上,遇到沒有數字的位置就填入數字,但每移動一格數字都要加1

2.井字法 適用:四之倍數階魔方陣 方法: (1)把1~n*n從左上角依序填入方陣內 (2)用兩條鉛直線和兩條水平線將方陣分隔成四個角落各有一個n/4階的子方陣,和中心位置有一個n/2階的子方陣 (3)以方陣中心為對稱點,將五個子方陣的數字作對稱交換,其它的數字不要動。這樣的方陣會是一個魔方陣

01 02 03 04 16 02 03 13 05 06 07 08 05 06 07 08 09 10 11 12 09 10 11 12 13 14 15 16 04 14 15 01

3.輔助方陣法 適用:偶數階魔方陣(因非四的倍數作法相當複雜,在此只介紹四的倍數的作法) 方法: (1)製作輔助方陣一:第一列由左向右排列1至n,第二列由右向左排列1至n,第三列同第二列,第四列同第一列,若超過四列,重複一至四列的作法,完成輔助方陣一 (2)製作輔助方陣二:將第一個輔助方陣各方格內的數字x換成n(x-1),再做行列互換,完成輔助方陣二 (3)將輔助方陣一與二的對應方格內之數相加填到一個新的方陣對應方格內,則新的方陣即為一個魔方陣 01 02 03 04 00 12 12 00 01 14 15 04 04 03 02 01 04 08 08 04 08 11 10 05 04 03 02 01 08 04 04 08 12 07 06 09 01 02 03 04 12 00 00 12 13 02 03 16

4.擴階法 同奇數階之作法

5.方陣合成法 同奇數階之作法

[此贴子已经被作者于2005-9-20 1:22:34编辑过]


/* HELLO.C -- Hello, jat chan */ #include \"stdio.h\" #include \"conio.h\" main() { printf(\"Hello, jat chan\\n\"); getch(); }
2005-09-20 00:38
快速回复:[转帖]魔方阵
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035223 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved