題目如下:
請用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.