各阶幻方的构造算法
<?xml version="1.0" encoding="utf-8"?> 各階幻方的構造算法 UP | HOME 將1置于第一行中間。 將下一個數字置于當前數字的右上角。如果已經處于方陣的邊界,則放在方陣的對邊(如圖1中的2和4)。 若出現下面兩種情況,則將下一個數字放于當前數字的下方: 結束,如圖3. 從左邊中間開始,將奇數在方陣內填成一個菱形。 將方陣分成5條對角線,每條對角線上有5個方格。如果圖1所示。 從第一條對角線開始將偶數填入剩余的空格內,圖2中填滿了前兩條對角線。 結束,如圖3。 將方陣分成(2i+1)個(2x2)的小方陣,小方陣的分類這樣確定:前i+1行是L類型,后面一行是U類型,最后的i-1行是X類型,然后交換第i+1行和第i+2行中間小方陣的類型。對于10x10的方陣如圖1。 L、U、X的填法如圖2。 最終結果如圖3。 先作一個14(4i+2)階的方陣A,這個方陣分成4個7(2i+1)階小方陣,每個小方陣是一個奇數階的幻方,奇數階幻方構造方法已經有了。如圖1。 再作一個14(4i+2)階的方陣B,這個方陣只由0、1、2、3構成,具體作法如下: 第一列:3(i)個3,4(i+1)個0,5(i+2)個2,2(i-1)個1 前7(2i+1)列與都與第一列相同,只有第4(i+1)列例外,該列第一個3和第一個0交換位置。 后7(2i+1)列與前7(2i+1)列相同,不過3和0交換,1和2交換。 結果如圖2。 構造幻方C=A+i2B。如圖3,C即所求。 將幻方分成A、B、C、D、E、F、G、H和I幾個區,如圖1。 類似于雙偶數階幻方的分割算法,將處于上述分區中的格子填數,如圖2。 然后在空格上(i+1和3i+1行列)填上數,如圖3。 將方陣分成16個小方陣,如圖1。 先在A、C、E、G、I方陣中填入數字,其他方陣跳過,如圖2。 再逆序(從右下往左上)趕往余下的數字,如圖3。 結束,如圖3 將數字順序填入方陣內,如圖1。 將方陣分成四個相同大小的方陣。并找出每個小方陣的對角線,如圖1陰影部分。 將陰影部分旋轉180度,如圖2。
各階幻方的構造算法
奇數階幻方
拉-盧貝爾算法
這個算法又稱“階梯法”。算法如下:
- 當前位置的右上角已經有一個數字(如圖2中的6和11)。
- 當前位置已經是方陣的右上方(如圖2中的16)。
拉-盧貝爾算法
菱形算法
另一種由康韋(J.H.Conway)建立的算法被稱為“菱形算法”,步驟如下(以5x5為例):
菱形算法
單偶數階幻方
侓克斯算法
這個算法也是由康韋給出的。思想是將方陣分成多個2x2的小方陣,小方陣按照位置分成L、U、X三種類型。然后在大體上按照盧-拉貝爾算法來走,在每個小方陣中根據小方陣的類型來填數。具體算法如下:
LUX算法
加法算法
將一個幻方加上另外一個幻方所得的和仍然具有幻方的特性,只是可能會有重復項,這是幻方的加法特性。下面的方法就是根據這個特性設計的,首先建立兩個方陣A、B,具有幻方的特性(橫、縱、斜和相同),然后讓A加上B的i倍,就得到一個幻方。假如我們要作一個4i+2階幻方(此處以14為例)。具體算法如下:
加法算法
替代算法
這個是最難的一個。對于2i+2的幻方(以6為例):
替代算法
好吧,太難了,中譯本翻譯得又很不清楚,不寫了,等有機會看到更好的版本再加上。
雙偶數階幻方
分割算法
分割算法
下面是一個8次的方陣:
8次方陣
對角線算法
對角線算法
Date: 2012-12-06 四
Org version 7.8.11 with Emacs version 24
Validate XHTML 1.0轉載于:https://www.cnblogs.com/Open_Source/archive/2013/02/22/2922031.html
總結
- 上一篇: 404 为什么是 404?
- 下一篇: 假如我拥有字节工牌。。。