Algorithm 无限长直线上的两个机器人
这与“降落伞机器人”拼图有点不同。有两个机器人悬在一条无限长的线上。它们之间的距离不是相对的,因此它们之间的距离是5米还是5公里并不重要。假设您需要为两个机器人编程,以便在磁铁处会合,您唯一的选择是:Algorithm 无限长直线上的两个机器人,algorithm,Algorithm,这与“降落伞机器人”拼图有点不同。有两个机器人悬在一条无限长的线上。它们之间的距离不是相对的,因此它们之间的距离是5米还是5公里并不重要。假设您需要为两个机器人编程,以便在磁铁处会合,您唯一的选择是: 向左走一步 向右移一步 向左走两步 向右移两步 停下来检查机器人是否在磁铁上 机器人不会知道磁铁旁边是否已经有磁铁,移动一个机器人也会使另一个机器人朝同一方向移动。制定两个机器人在磁铁处相遇的算法 我无法制定出这个问题的解决方案,这个难题有解决方案吗?我认为两个机器人可以运行相同的程序: va
- 向左走一步
- 向右移一步
- 向左走两步
- 向右移两步
- 停下来检查机器人是否在磁铁上
我无法制定出这个问题的解决方案,这个难题有解决方案吗?我认为两个机器人可以运行相同的程序:
var steps = 10, count = 10, left = true;
while (!isRobotOnMagnet()) {
if (count-- > 0)
if (left)
oneMoveLeft();
else
oneMoveRight();
else {
steps *= 2;
left = !left;
count = steps;
}
}
这不是最优雅的表述方式,还有改进的余地。想法是向左走几步,然后向右翻倍,然后再向左翻倍,依此类推。。。你最终会找到磁铁。如果它们总是朝同一个方向移动,它们怎么会相遇?这难道不意味着他们的初始距离被保留了吗?@NicoSchertler这就是被要求的,我也被这个问题弄糊涂了是的,这是正确的,机器人可以运行相同的程序,机器人将如何在磁铁上相遇?只有一个机器人会碰它,但不是两个都碰你的答案对吗?不,最终两个机器人都会停在磁铁上,因为当机器人停在磁铁上时,另一个机器人会继续运行。它们运行相同的程序,但各自在自己的计算机上运行。另一个将继续运行,直到它到达磁铁?磁铁旁边的另一个机器人会动吗?