一個關於月球車的筆試題--求討論

小哥哥呀發表於2018-08-17

題目如下:

請用Java或者Ruby語言實現以下題目以及測試程式碼。

 

一隊機器人漫遊車將被美國宇航局降落在火星高原上。漫遊車將在這個奇怪的長方形高原上巡遊,以便他們的機載攝像頭可以獲得周圍地形的完整檢視,並將其傳送回地球。漫遊者的座標和位置由x和y座標的組合以及代表四個方向(E, S, W, N)的字母表示。高原劃分為網格以簡化導航。比如位置0,0,N,表示漫遊車位於左下角並面向北。為了控制漫遊車,美國宇航局傳送一串簡單的字母。指令字母是'L','R'和'M'。 'L'和'R'使漫遊車分別向左或向右旋轉90度,而不會從當前地點移動。 'M'表示前進一個網格點,並保持相同的方向。

假設從(x,y)直接向北移動,就到了(x,y + 1)。

INPUT:

第一行輸入是平臺的右上角座標,左下角座標被假定為0,0。

其餘的輸入是有關已部署的漫遊車的資訊。每個漫遊車都有兩行輸入。第一行給出了漫遊車的位置,第二行是告訴漫遊車如何探索高原的一系列指令。位置由兩個整數和一個由空格分隔的字母組成,對應於x和y座標以及漫遊車當前的方向。

每個漫遊車將按順序完成,這意味著第二個漫遊車在第一個漫遊車完成移動之前不會開始移動。

OUTPUT:

每個漫遊車的輸出應該是其最終的座標和位置。

 

輸入輸出例子

輸入:

5 5

1 2 N

LMLMLMLMM

3 3 E

MMRMMRMRRM

預期產出:

1 3 N

5 1 E

 

我的解題想法及程式碼:

package com.zzkj.zhy.action;

import java.util.Scanner;

import org.junit.Test;
/**
 *
 * @author Administrator
 *1.將方向ESWN換為1234,方便程式設計
 *2.如果輸入命令超出火星高原的長寬則讓小車最後接觸邊界點位置
 */
public class MyAction {
        private Scanner scanner = new Scanner(System.in);
        private final Integer X;
        private final Integer Y;
        {
                System.out.println("火星高原的左下角座標為(0,0),右上角座標為:'格式--> x y 請指定:'");
                String location = scanner.nextLine();
                String[] split = location.split(" ");
                X = getIntByString(split[0]);
                Y = getIntByString(split[1]);
        }
        @Test
        public void test(){
                System.out.println("請輸入漫遊車 1 的起始位置:(格式:x y E)");
                String location1 = scanner.nextLine();
                System.out.println("請輸入漫遊車 1 需要完成的命令:(格式:LRM這三個字母的組合)");
                String command1 = scanner.next();
                scanner.nextLine();
                System.out.println("請輸入漫遊車 2 的起始位置:(格式:x y E)");
                String location2 = scanner.nextLine();
                System.out.println("請輸入漫遊車 2 需要完成的命令:(格式:LRM這三個字母的組合)");
                String command2 = scanner.next();
                System.out.println("漫遊車 1 的開始執行。。");
                myRun(location1,command1);
                System.out.println("漫遊車 2 的開始執行。。");
                myRun(location2,command2);
        }
        public void myRun(String location,String command){
                String[] split = location.

相關文章