无限线中的两个机器人

时间:2017-04-05 18:42:51

标签: algorithm

这与跳伞机器人"有点不同。难题。有两个机器人挂在无限的线上。它们的距离不是相对的,因此如果相距5米或5千米并不重要。假设您需要对两个机器人进行编程以便在磁铁上进行编程,并且您拥有的唯一选择是:

  • 向左移动
  • 向右移动
  • 向左移动两次
  • 右移两次
  • 停止并检查机器人是否在磁铁上

机器人不知道磁铁旁边是否已经存在,移动一个机器人也会使另一个机器人朝同一方向移动。为两个机器人制定一个算法,以便在磁铁上相遇。

我无法为这个问题制定解决方案,是否有解决方案?

1 个答案:

答案 0 :(得分:1)

我认为两个机器人都可以运行相同的程序:

var steps = 10, count = 10, left = true;
while (!isRobotOnMagnet()) {
    if (count-- > 0)
        if (left)
            oneMoveLeft();
        else
            oneMoveRight();
    else {
        steps *= 2;
        left = !left;
        count = steps;
    }
}

不是最优雅的方式来制定它,还有改进的余地。这个想法是左边的一些步骤,然后向右加倍,然后再向左加倍,依此类推......你最终会找到磁铁。