< style="border:0px;width:1200pt;"> 參考 題型範例 - 全國高級中等學校技藝競賽平台 工業類
題目:魔方陣
問題描述
奇數魔方陣是將1到奇數 $n$ 的數字排列在 $n \times n$ 的方陣,各行、各列與各對角線的和必須相同。奇數魔方陣的演算法如下:
  1. 第一個數字放在第一行第一列的中央,如圖一
  2. 數字加 1,而後向右上填數字
    1. 如果填數字的格子在第一列的上方,則該數字向下沉底,如圖二。
    2. 如果填數字的格子在第三行的右方,則該數字向左沉底,如圖三。
    3. 如果填數字的格子已有數字,則該數字向下一格填入,如圖四。
    4. 如果填數字的格子是空的,則該數字直接填入,如圖五。
    5. 如果填數字的格子在第一列的上方以及第三行的右方,則該數字向下一格填入,如圖六。
    6. $3 \times 3$魔方陣完整的解題步驟如圖七,我們可發現各行、各列與各對角線的和均為15。


$3\times 3$ 魔方陣經過順(逆)時針旋轉或左右(上下)翻轉後,其結果仍為魔方陣,圖八為順時針旋轉的範例,圖九為左右翻轉的範例。

816
357
492

左右翻轉
618
753
294
圖九


功能要求:
  1. 請利用題目介紹的演算法建構一個3X3的魔方陣,沒有用演算法,直接將 $1 \sim 9$ 數字填入矩陣者,不給予通過。
  2. 請撰寫矩陣旋轉及翻轉的副函式,結合如圖九的成果,建構出 $3\times 3$ 魔方陣所有可能的情形,如圖十所示。



執行結果


      程式碼下載