魔方這個看似很難的兒童益智玩具,在小編認(rèn)為對IT來說應(yīng)該是一個很簡單的公式問題。因為一個excel就能輕松搞定。
魔方陣是一個非常有趣的數(shù)學(xué)問題,是指由自然數(shù)1~N2(次方)(N為奇數(shù))構(gòu)成的方陣,其各行、各列以及對角線元素之和均相等(如下圖所示)。魔方陣的數(shù)學(xué)排列算法很復(fù)雜,若不懂得排列規(guī)律,很難排出魔方陣!本文不僅介紹了一種簡單的排列方法,而且還巧用Excel中的單元格和宏代碼的結(jié)合將其排列過程動態(tài)地呈顯出來(速度由用戶自己控制),呈現(xiàn)出來之后還可借助Excel中的求和函數(shù)對各行、各列進(jìn)行求和驗證。更不可思議的是宏代碼只有25行,簡練程度勝過任何編程工具!
一、算法簡介
先將所有單元格清空,讀取階數(shù)N之后把1放入第一行的最中間一列,此后依次尋找2到N2(次方)這些數(shù)放入的位置,基本算法是:下一個數(shù)放在前一個數(shù)的上一行的下一列(第一行的上一行是最后一行,最后一列的下一列是第一列);如果此位置已被占用(單元格的內(nèi)容非空),則將它放在前一個數(shù)的下面。
注:任一單元格(H行L列)的地址可表示為Chr(L+64) & H,其中Chr是取字符的函數(shù)。
二、用Excel實現(xiàn)的方法
1.界面設(shè)計
啟動Excel,通過“視圖”菜單打開“窗體”工具欄,在第一行添加一個按鈕控件,并在彈出的對話框中單擊“新建”按鈕,進(jìn)入宏代碼編輯窗口。
2.錄制宏在宏代碼編輯窗口中輸入以下代碼:
3、運(yùn)行
關(guān)閉宏代碼窗口,
進(jìn)入Excel后先單擊任一單元格或按Esc鍵
以取消按鈕的編輯狀態(tài);然后單擊前面添加的按鈕就可運(yùn)行:在彈出的對話框中先輸入要顯示的魔方陣的階數(shù),然后輸入顯示整個魔方陣所用的時間;此后就可看到魔方陣中元素的動態(tài)排列過程。感興趣的讀者可借助Excel提供的函數(shù)進(jìn)行求和驗證。
4、說明
如果將宏代碼及界面保存成Excel文件,下次打開時將提示:該文件中包含宏,宏可能會攜帶病毒
…等信息;自己編寫的這段宏是安全的,選擇“啟用宏”即可。
本代碼在Excel2000中運(yùn)行通過。