轨道
/
Erlang
Erlang
/
练习
/
机器人模拟器
机器人模拟器

机器人模拟器

中等

说明

编写一个机器人模拟器。

一家机器人工厂的测试设施需要一个程序来验证机器人的移动。

机器人有三种可能的移动方式:

  • 向右转
  • 向左转
  • 前进

机器人被放置在一个假想的无限网格上,面朝某个特定的方向(北、东、南或西),并位于一组 {x,y} 坐标处,例如 {3,8},坐标向北和向东递增。

随后,机器人会收到若干条指令,此时测试设施会验证机器人的新位置,以及它面朝的方向。

  • 字母串“RAALAL”表示:
    • 向右转
    • 前进两次
    • 向左转
    • 前进一次
    • 再向左转一次
  • 假设一个机器人从 {7, 3} 出发,面朝北。 那么执行这串指令后,它应该停在 {9, 4},面朝西。

实现

这个练习确实需要为你的机器人维护某种全局状态。在 Erlang 中,有几种方式可以做到这一点(从最惯用的做法开始):

  1. 使用 OTP 中的一些gen_*
  2. 自己实现一个进程,在循环中接收消息,并把状态作为形参传来传去。
  3. 自己实现一个进程,并使用进程字典。

来源

灵感来自一家知名公司的面试题。
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Erlang Exercism

准备好开始 机器人模拟器 了吗?

注册 Exercism,借助 85 个练习 和真人导师指导,学习并掌握 Erlang,全部免费。