數字龍捲風 (APCS 2017-03 中級)

1.0s 256M

給定一個 \(N*N\) 的二維陣列,其中 \(N\) 是奇數,我們可以從正中間的位置開始順時針旋轉的方式走訪每個陣列元素恰好一次。對於給定的陣列內容與起始方向,請輸出走訪順序之內容。下面的例子顯示了 \(N=5\) 且第一步往左的走訪順序:

依此順序輸出陣列內容則可以得到「9123857324243421496834621」。

類似地,如果是第一步向上則走訪順序如下:

依此順序輸出陣列內容則可以得到「9385732124214968346214243」。

輸入格式

輸入第一行是整數 \(N\),\(N\) 為奇數且不小於 \(3\)。第二行是一個 \(0 \sim 3\) 的整數代表起始方向,其中 \(0\) 代表左、\(1\) 代表上、\(2\) 代表右、\(3\) 代表下。第三行開始 \(N\) 行是陣列內容,順序是由上而下,由左至右,陣列的內容為 \(0 \sim 9\) 的整數,同一行數字中間以一個空白間隔。

輸出格式

請輸出走訪順序的陣列內容,該答案會是一連串的陣列內容,數字之間不要輸出空白,結尾有換行符號。

範例輸入 1

5
0
3 4 2 1 4
4 2 3 8 9
2 1 9 5 6
4 2 3 7 8
1 2 6 4 3

範例輸出 1

9123857324243421496834621

範例輸入 2

3
1
4 1 2
3 0 5
6 7 8

範例輸出 2

012587634

評分說明

輸入包含若干筆測試資料,每一筆測試資料的執行時間限制 (time limit) 均為 \(1\) 秒,依正確通過測資筆數給分。其中:

第 1 子題組 20 分,\(3 \le N \le 5\),且起始方向均為左。

第 2 子題組 80 分,\(3 \le N \le 49\),起始方向無限定。

提示:本題有多種處理方式,其中之一是觀察每次轉向與走的步數。例如起始方向是向左時,前幾步的走法是:左 \(1\)、上 \(1\)、右 \(2\)、下 \(2\)、左 \(3\)、上 \(3\)、…… 一直到出界為止。

題目來源

APCS 2017 年 3 月 4 日實作題第 3 題「數字龍捲風」。參考 APCS 官方歷屆試題 PDF 與 ZeroJudge c292。

題目頁說明

快速鍵

主要功能

  • 範例測試 — 執行題目附帶的範例測資並自動比對預期輸出。
  • 自訂測試 — 自己貼 stdin 執行程式。可勾選「與預期輸出比對 (diff)」做行對行比對。
  • 模板 — 貼上你在個人資料設定的預設程式碼模板。
  • 協作 — 與其他同學共筆編輯這題的程式碼。
  • 自動草稿 — 編輯器內容每 1.5 秒自動存到瀏覽器(per 帳號 / 題目 / 語言)。
  • 提交 — 把程式碼交給 judge 評測,回傳 AC / WA / TLE 等結果。

限制

  • 程式碼最多 65,536 字元
  • 自訂測試 stdin 與預期輸出各最多 1 MB (約 100 萬字元)
  • 自訂測試與範例測試共用一個沙箱,每人約 3 秒 1 次 (範例測試 1 秒 1 次)
  • 自訂測試與範例測試都有 15 秒 牆鐘上限(正式評測仍依題目原本時限)
  • 互動題不提供自訂測試(無法模擬與 judge 互動)。
  • 提交評測本身沒有 rate limit,但同題短時間內多次提交會被視為刷分。