编程两列火车没有位置数据或通信(逻辑谜题)

siv*_*iva 19 puzzle algorithm math

一架直升机将两列火车降落在直线无限铁路上.

两列火车之间的距离不确定.

每个人都面向同一个方向,着陆时,每辆火车上的降落伞落在火车旁边的地面上并分离.

每列火车都有一个控制其运动的微芯片.芯片是相同的.

火车无法知道它们在哪里.

您需要在芯片中编写代码以使列车相互碰撞.

每行代码都需要一个时钟周期才能执行.

您可以使用以下命令(仅限这些命令):

  • MF - 向前移动火车
  • MB - 向后移动火车
  • IF(P) - 如果列车在降落伞旁边,则满足条件.这个IF声明没有"当时".

jch*_*chl 25

让每列火车慢慢前进,直到找到降落伞.当后列车找到前列车的降落伞时,让它向前移动更快以赶上前列车.

1.  MF
2.  IF(P)
3.    GOTO 5
4.  GOTO 1
5.  MF
6.  GOTO 5
Run Code Online (Sandbox Code Playgroud)

如果你想让火车相互之间花费更少的时间,以一些额外的代码行为代价,你可以展开第二个循环.

  • @Dialecticus,它不是MF和MB本身调节火车的速度,而是它们的执行频率.注意,最初MF每隔3(或4,取决于IF的语法)循环执行,但在GOTO 5之后,它在每第2个循环执行. (3认同)
  • @Dialecticus,无需假设,上面已明确说明:_"每行代码需要一个时钟周期才能执行."_ (3认同)