幻立方解法之7階幻立方的生成方法

2021-06-28 14:23:11 字數 3119 閱讀 5029

/*接上篇

對了,我是來找規律的,找幻立方的生成方法的

先看看這個7階的完美幻立方

初始位置1是在4-1-1(第4行,第1列,第1層,0為基數)

下一步的位置與上一步的相對位移是4-2-2

7的倍數後有個跳步,因為按4-2-2規則,如果不跳的話8的位置就是1的位置,總不能把1給換了吧

7的倍數後的數與前數的相對位移是2-4-0

7*7=49的倍數後又有乙個跳步,同樣,按照前面的規則,如果不跳的話就沒得走了

跳步的相對位移是2-3-3

我們把階數step,起始位置point0,移步規則deltapoint,7倍數的跳步規則deltaline,49倍數的跳步規則deltaside都寫成引數

這樣建立幻立方的通用方法就出來了

*/func createcube(#step: int, #point0:(row:int, col:int, deep:int),#deltapoint:(row:int, col:int, deep:int),#deltaline:(row:int, col:int, deep:int),#deltaside:(row:int, col:int, deep:int)) -> ([[[int]]])?

var p = point0

var iput = 1

cube[p.row][p.col][p.deep] = iput++

var time = step * step * step

doelse}}

}p = nextp

cube[p.row][p.col][p.deep] = iput++

}while(time-- > 0)

return nil

}//測試方法

func testcreateperfectcube7()

}//testcreateperfectcube7()

//看看下面這列印的,頓時覺得自己還真有點三腳貓的功夫

/*第0層

[226,252,320,45,64,139,158]

[115,183,209,277,296,28,96]

[4,72,147,166,234,253,328]

[285,304,29,55,123,191,217]

[174,242,261,336,12,80,99]

[63,131,150,218,293,312,37]

[337,20,88,107,182,201,269]

第1層[41,60,128,154,222,290,309]

[273,341,17,85,111,179,198]

[155,230,249,317,49,68,136]

[93,119,187,206,274,300,25]

[325,1,76,144,163,238,257]

[214,282,308,33,52,120,195]

[103,171,239,265,333,9,84]

第2層[192,211,286,305,30,56,124]

[81,100,175,243,262,330,13]

[313,38,57,132,151,219,294]

[202,270,338,21,89,108,176]

[140,159,227,246,321,46,65]

[22,97,116,184,210,278,297]

[254,329,5,73,141,167,235]

第3層[301,26,94,113,188,207,275]

[232,258,326,2,77,145,164]

[121,196,215,283,302,34,53]

[10,78,104,172,240,266,334]

[291,310,42,61,129,148,223]

[180,199,267,342,18,86,112]

[69,137,156,231,250,318,43]

第4層[109,177,203,271,339,15,90]

[47,66,134,160,228,247,322]

[279,298,23,98,117,185,204]

[168,236,255,323,6,74,142]

[50,125,193,212,287,306,31]

[331,14,82,101,169,244,263]

[220,288,314,39,58,133,152]

第5層[260,335,11,79,105,173,241]

[149,224,292,311,36,62,130]

[87,106,181,200,268,343,19]

[319,44,70,138,157,225,251]

[208,276,295,27,95,114,189]

[146,165,233,259,327,3,71]

[35,54,122,190,216,284,303]

第6層[75,143,162,237,256,324,7]

[307,32,51,126,194,213,281]

[245,264,332,8,83,102,170]

[127,153,221,289,315,40,59]

[16,91,110,178,197,272,340]

[248,316,48,67,135,161,229]

[186,205,280,299,24,92,118]

ismagiccube 檢查

經檢查,行的和都是相等的

經檢查,列的和都是相等的

經檢查,深的和都是相等的

前檢視的各條對角線的和相等

左檢視的各條對角線的和相等

俯檢視的各條對角線的和相等

經檢查,主對角線和是相等的

經檢查,輔對角線row和是相等的

經檢查,輔對角線col和是相等的

經檢查,輔對角線deep和是相等的

*//*

這個幻立方的牛b之處還不止這些,看看齊魯晚報上是怎麼說的

「這個七階幻立方的主檢視的七層,每層都是完美的。也就是說,每層的七行、七列、十四個斜行的七數之和都是幻和1204。而且第四層還是中心對稱的,中心數是172,所有對稱的兩數之和都是344。

這個幻立方的整體也是中心對稱的。」 */

幻立方解法之151階

測試方法 func testcreatecube151 testcreatecube151 為了能在執行過程中觀察到一下資訊,在createcube中增加了兩行 已列印資訊 var time step step step println 總數 time 這是第一行 do while time 0 接...

N(奇數)階幻方解法

3階8 1635 7492 5階17241 815235 714164 6132022 1012 1921311 182529 include includeusing namespace std const int n 9 定義階數,當前9階 該演算法只適合奇數階幻方 int main int a...

三階幻方python解法

三階幻方 1 9共9個數字填入九宮格中,九宮格中間元素為5,各行 列 對角線元素相加和為15。求解出所有符合條件的排列。python解法1 由於九宮格中間元素已確定,剩下元素中選擇乙個數填入tmp 0 0 再選擇乙個數填入tmp 0 1 則剩下元素都可根據已填元素確定,通過兩層巢狀迴圈實現。lst ...