1. 九宮格魔方陣
  2. 有一名知名小說作者金庸,在他那一部武俠小說《射鵰英雄傳》中,有一段關於九宮格的描述,其內容大略是『瑛姑為了為難黃蓉,就想展現自己在九宮格的排列有獨創的秘訣,而向黃蓉提出了問題道:「將一至九這九個數字排成三列,不論縱橫斜角,每三字相加都是十五,如何排法?」,黃蓉聽罷則運用她的智慧,迅速解開了這個難題,並低聲誦道:「九宮之義,法以靈龜,二四為肩,六八為足,左三右七,戴九履一,五居中央。」 邊說邊畫,在沙上畫了一個九宮之圖。(如圖九)
    如今在電腦領域時代,輸出九宮格並非上面歌訣解法,而是以九宮格走位完成,其規則如下:(可參考 113 年工科技藝競賽第三題:魔方陣)
    1. 第一個數字放在第一行第一列的中央,如圖一。
    2. 數字加 1,而後向右上填數字:
      1. 如果填數字的格子在第一列的上方,則該數字向下沉底,如圖二、圖八。(圓形環繞上下連接)
      2. 如果填數字的格子在第三行的右方,則該數字向左沉底,如圖三、圖七。(圓形環繞左右連接)
      3. 如果填數字的格子已有數字,則該數字向下一格填入,如圖四。
      4. 如果填數字的格子是空的,則該數字直接填入,如圖五。
      5. 如果填數字的格子在第一列的上方以及第三行的右方,則該數字向下一格填入,如圖六。(圓形環繞上下左右連接)
      6. $3 \times 3$ 魔方陣完整的解題結果如圖九,我們可發現各行、各列與各對角線的和均為 15。


    上面答案與前述九宮歌訣同義,可曰:「九宮之義,法以靈龜,六八為肩,二四為足,左三右七,戴一履九,五居中央。」
    現在請你寫一程式,依照上面規則(不是歌訣),輸出魔方陣。

    演算法
    簡碼 流程圖
    1. 初始化九宮格
      • 建立一個 $3\times 3$ 的空陣列 $magicSquare$,所有格子初始化為 0。
    2. 設定初始位置
      • 第一個數字(1)放置在第一列的中間位置,$(row,col) = (0,1)$。
      • (註:$row = y, col = x$)
    3. 逐步填數字
      • 對於數字 $num$ 從 1 到 9:。
        • 填入 $num$ 到 $magicSquare[row,col]$
        • 新的一格 ($newRow , newCol$) = (($row$-1+3)%3,($col$+1)%3)
        • 如果新的一格 ($newRow , newCol$) 已經有數字:
        •       $row$ = ($row$-1+3)%3
          否則:
                ($row$,$col$) = ($newRow , newCol$)
    4. 輸出結果
      • 對於數數字 $y$ = 0 到 2
        • 對於數數字 $x$ = 0 到 2
          • 輸出 $magicSquare[row,col]$ 及一個空白
        • 輸出跳行。


  3. 九宮格旋轉
  4. 如圖十,請將九宮資料順時針旋轉 90 度。(可參考 113 年工科技藝競賽第三題:魔方陣)
    圖十

    演算法
    (0,0)(0,1)(0,2)
    (1,0)(1,1)(1,2)
    (2,0)(2,1)(2,2)
    (2,0)(1,0)(0,0)
    (2,1)(1,1)(0,1)
    (2,2)(1,2)(0,2)
    簡碼流程圖
    1. 輸入資料
      • 輸入 3 個數字,並以空白隔開。
        • 以空白為分割,將三個資料放到矩陣 $matrix[y]$
    2. 選轉資料並輸出
      • 令數字 y 從 0 到 2:。
        • 令數字 x 從 0 到 2:。
          • 輸出矩陣 $matrix[2-x,y]$ 加空白
      • 輸出跳行

  5. 求 $e$
  6. 在科學界,無論是力學或電學...,有個非常重要的常數叫自然常數自然底數,或是尤拉數
    它的計算方式可以使用下面泰勒展開式達成。
    $e=\sum\limits_{n=0}^{\infty} \frac{1}{n!}=\frac{1}{0!}+ \frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\cdots$

    現在假設 $e = 2.718281828459$,請使用迴圈,依照上面公式評估累計到第幾項其誤差會低於 $10^{-t}$。

    輸入說明:程式輸入 $t$ ($4\le t\le 12$)。
    輸出說明:程式輸出泰勒展開式累計到第幾項時,其值與 $e$ 相差低於 $10^{-t}$。

    演算法
    簡碼流程圖
    1. 初始化
      • 設定常數 $e=2.718281828459$ 作為目標值。
      • 設定累積和 s=0。
      • 設定當前項次 n=0
      • 設定初始階乘值 factorial=1。
      計算目標誤差
      • 計算目標誤差 $ϵ=10^{−t}$。
    2. 開始累加泰勒展開
      • 計算目標誤差 $ϵ=10^{−t}$。使用迴圈,不斷累加公式 $S=S+\frac{1}{n!}$,直到 $\left | e-S \right |<ϵ$ 為止。



    輸入輸出
    48
    913
    1215