> For the complete documentation index, see [llms.txt](https://jimmylv.gitbook.io/tdd-frontend/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jimmylv.gitbook.io/tdd-frontend/coding/01-marsrover/06-what-is-marsrover.md).

# 火星车实战

## 需求介绍

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

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

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](/files/-M26PPRGRKHIUhexjpVE)

## 计算火星车位置

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