參考 題型範例 - 全國高級中等學校技藝競賽平台 工業類 112-4
本地下載題目(dbf)
題目:多台無人機操控系統
問題描述
為了操控無人機系統,請寫一程式來完成飛行操控功能: 給一無人機飛行空間的長和寬(在此不考慮高度)。再給定每台無人機的起始位置,以及一連串的命令,最後求出無人機的飛行最後位置。
無人機的位置包括座標(x, y)、以及面向的方向:北 (N)、南 (S)、東 (E)、西 (W)。無人機收到的命令,是由字母 ‘L’ (無人機在原地左轉 90 度)、 ‘R’ (無人機在原地右轉 90 度)、 ‘F’ (無人機往面向的方向向前走一步,且不改變其面向的方向)。從座標(x, y)走至(x, y+1)的方向定義為北方,其他方向依此類推。無人機飛行空間是有邊界的(在此不考慮高度),一旦無人機飛出邊界,就相當於被敵人摧毀,不過被摧毀的無人機會留下「記號」,提醒以後的無人機,避免他們再到同一個地方,被敵人摧毀,所以,對於之後的無人機,當它飛到在有記號的地方時,此無人機就會忽略,會讓它被摧毀的命令。
輸入格式輸出格式
可以讓使用者輸入無人機飛行操控命令檔案(假設 input.txt),此命令檔案內容:
1. 第一列的正整數代表共有幾台無人機。
2. 第二列有 2 個正整數,代表無人機飛行空間的右上角頂點座標,其中假設無人機飛行空間的左下角座標為(0, 0)。
3. 接下來的每 2 列為 1 組無人機測試資料:
3.1 第 1 列為位置,包括 x 座標、y 座標以及所面對的方向。
3.2 第 2 列為命令,由 ‘L’、 ‘R’、 ‘F’ 所組成的字串。
4. 各無人機是依序飛行的,即一台無人機要飛行完成所有命令,下一台無人機才會開始飛行。
5. 所有無人機的起始位置皆在無人機飛行空間的長和寬範圍內,任何座標的最大值不可以超過 50,每個命令的長度皆不超過 100 個字元。
1. 對每一組無人機測試資料,輸出一列該無人機最後所在的 x 座標、y 座標以及所面對的方向。
2. 如果一台無人機於飛行空間的長和寬座標範圍外被摧毀,則必須輸出它在被摧毀前的 x 座標、y 座標以及所面對的方向,並在最後面加一個字: Destroyed。
3. 上述資料除了顯示於螢幕外,也要輸出於一檔案(output.txt)中。

範例一
輸入正確輸出
2
5 3
1 1 E
RFRFRFRF
3 2 N
FRRFLLFFRRFLL
1 1 E
3 3 N Destroyed

執行結果


範例二
輸入正確輸出
6
11 11
10 10 E
LLFFFFLFRRFF
3 9 S
FFRFFLFFRRFLFRFL
0 0 S
RFFFFFFFFFFFF
9 4 N
LFLFLFFFFFFFF
1 8 W
RRRFFLFFRFFLFFRFFLFFRFFFF
5 5 W
RFFLFRFLFFRFLFFRFRFFFFFFFFFFRFFFFFFFFFFRFFFFFFFFFFRFFFFFFFFFFRLR
6 11 N Destroyed
0 7 W
-1 0 W Destroyed
11 3 E Destroyed
7 -1 S Destroyed
0 10 E
程式碼下載