# 火星车实战

## 需求介绍

火星漫步者在某块区域中根据指令进行移动，然后采集相应位置的火星数据。

火星车收到的指令分为四类：

1. 探索区域信息：告知火星车，整片区域的长度（X）和宽度（Y）有多大；
2. 初始化信息：火星车的降落地点（x, y）和朝向（N, S, E, W）信息；
3. 移动指令：火星车可以前进（M）；
4. 转向指令：火星车可以左转 90 度（L）或右转 90 度（R）。

由于地球和火星之间的距离很远，指令必须批量发送，火星车执行完整批指令之后，再回报自己所在的位置坐标和朝向。

## 示例

```bash
Input (example):
5 5
1 2 N
LMLMLMLMM

Expected Output:
1 3 N
```

 通过 GUI 如图：

![MarsRover UI](https://2897586075-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LquCgGNObzQ8HY5Og1P%2F-M26POn8RzGpt7JmXdbN%2F-M26PPRGRKHIUhexjpVE%2Fmarsrover-sample.jpg?generation=1583893556156602\&alt=media)

## 计算火星车位置

我们先不着急开始写代码，而是从任务分解的角度花点时间分析一下。
