47. Mutant Flatworld Explorers (CPE23641, UVA118) - CPE一顆星解答與說明

   👉  CPE 一顆星選集列表(49題) 題目說明與解答

CPE一顆星49題解答 - pdf 電子檔,售價 199 元,

購買電子檔可將筆記與完整解答帶著走,

坐車、上課時皆可隨時複習,

不受網路或廣告影響,

若有需要請來信購買 greens2314@gmail.com


題目


  • 計算出機器人執行指令後最後的 (x, y) 座標在哪裡
    • 方向:E東、W西、S南、N北
    • 指令:
      • Left:原地左轉 90 度
      • Right :原地右轉 90 度
      • Forward :朝面對的方位,往前走一格
    • 北方的定義:從 (x, y) 往 (x, y+1)
    • 判斷機器人是否消失
      • 紀錄消失的地點,預防其他機器人再次消失,若遇到有其他器人掉落時,則留在掉落之前的位置



輸入說明



  • 第一行有兩個整數,為地圖的右上角頂點座標,左下角為 (0, 0)
  • 每兩行為一筆機器人資料
    • 第一行:機器人的初始位座標與方位,方位有:N北、S南 、 E東 、 W西
    • 第二行:機器人要執行的指令,指令有:L(向左轉) 、 R(向右轉) 、 F(向前走)


輸出說明


  • 根據每個機器人,印出最後在地圖上的座標位置方位
  • 若機器人在移動過程中超過地圖邊界,則印出消失前的位置方位,並印出 LOST 字串




解題技巧

  • 座標判斷
  • 方位判斷
  • 讀取字串中的字元
  • 判斷資料是否存在


解題過程

取得輸入

  • 取得地圖右上角的頂點
  • 偵測是否有整數輸入,準備讀取機器人資料
    • 讀取機器人初始座標與方位
      • 方位只有一個字,可讀取第一個位置將方位變成字元,方便後續操作,若不轉成字元也可以
    • 讀取指令字串


取得指定字串中的每個指令

  • 使用 for 迴圈,讀取字串中的字元,呼叫 String 提供的 charAt() 方法
  • 宣告移動過程中產生新的 x 座標與 y 座標的變數
  • 判斷指令是否為前進 F,否則是旋轉 R 跟 L

執行前進 1 格的指令

  • 根據機器人的方位來決定要改變 x 軸或 y 軸座標
  • 若為東西向,則影響 x 軸
    • 東:往東走一格,將目前的 x 座標 + 1
    • 西:往西走一格,將目前的 x 座標 - 1 
  • 若為南北向,則影響 y 軸
    • 南:往南走一格,將目前的 y 座標 - 1
    • 北:往北走一格,將目前的 y 座標 + 1 




判斷移動最後的位置是否落在地圖

  • 若在地圖內,則更新機器人的位置

判斷移動最後的位置是否落在地圖

  • 宣告串列變數,用來儲存機器人消失前的座標
  • 宣告布林值變數,用來辨識此機器人是否掉落,消失在地圖中
  • 若機器人在地圖外
    • 將掉落前的位置紀錄下來,使用 Point2D 物件, import java.awt.geom.Point2D
    • 判斷掉落前的位置是否曾經有其他機器人掉落過,呼叫 List 提供的 contains() 方法
      • 沒有:標示為壯烈犧牲,將消失前的位置儲存並印出,並印出 LOST 字串,結束指令的判斷
      • 有:獲得免死金牌,可以回到掉落前的位置繼續執行其他指令

執行前旋轉 R L 的指令

  • 判斷機器人面向東(E)、西(W)、南(S)、北(N)哪一方,共 4 種方向
  • 每個方位可執行向右轉(R)或向左轉(L),共 2 種旋轉方式
  • 列舉出各方位轉向左與向右轉的所有可能,共有 8 種 (4*2)


印出

  • 執行完所有指令後,若機器人沒有消失,則印出最終的座標位置與方位



CPE一顆星49題解答 - pdf 電子檔,售價 199 元,

購買電子檔可將筆記與完整解答帶著走,

坐車、上課時皆可隨時複習,

不受網路或廣告影響,

若有需要請來信購買 greens2314@gmail.com

留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明