原本想說都最後一天了,就寫個心得就好了ㄅ,但是同學突然問我要不要寫寫看魔方陣,引起我的好奇心想說試試,當作這三十的最後一題,首先先來介紹什麼是魔方陣:在一個方陣中每行、每列以及兩條對角線上的數之和均相等,而且方陣不是唯一,有區分成奇數階及偶數階,今天主要介紹的是奇數階,要構成奇數階的魔方陣我使用的方法為Siamese方法
步驟如下:
把1放置在第一行的中間。
順序將 2,3,等數放在右上方格中。
當右上方格出界的時候,則由另一邊進入。
當右上方格中已經填有數或是兩邊都出界(同時超出行與列的範圍),則把數填入正下方的方格中。
按照以上步驟直到填寫完所有N^2個方格。
(由於對稱性,也可以把右上改為右下、左上以及左下等方位)
以下是實作:
右上方開始
演算部分參考https://openhome.cc/Gossip/AlgorithmGossip/OddArray.htm
這個網站寫的是從右上方開始
而我試著改成從右下方開始
其實如果仔細看兩者其實只是差在數字放入的地方不同,需要多判斷超出格子的方式,基本上都一樣
但是要從無寫出來我真的覺得不是很容易。
以下是完整的程式碼:
心得:
轉眼間連續寫程式已經不知不覺就過了一個月了,當初給自己定這個目標就是要督促自己寫程式培養實作的能力,說真的天天寫真的是有差,從最一剛開始連基本的迴圈要怎麼用都要去翻書,而現在連三層都能夠用想的寫出來,我認為是一項很有成就感的事,每天接觸不一樣的題目,能幫助思考的速度越來越快,而且我前面不知道是哪根筋不對竟然一直在寫演算法,跟其他的比演算法真的是最燒腦的一項挑戰,而最後也以演算法作結束,難度也比以往的高,雖然無法從無到有,但是理解後能夠自己做修改我認為也是進步的一種方式~~
最終期望自己這30天裡做的能對未來的專題有所幫助,也希望這門課能修過٩(^ᴗ^)۶