装配中的机器人探索问题(emu8086)

问题描述 投票:0回答:1

我正在使用 emu8086 编写一个汇编程序。该程序使用内置机器人设备在模拟 6x9 地图上模拟虚拟机器人。该地图将包含未知数量的墙壁和灯(点亮/未点亮),机器人将在其中遍历地图并找到所有未点亮的灯并点亮它们。机器人本身只能从机器人所面对的相邻方格获取数据,并且只能旋转 90 度。 该项目建议将左上角作为坐标系的原点 (0,0)。

http://www.emu8086.com/assembler_tutorial/robot.gif

我了解如何将机器人与我的代码连接起来以移动和检查数据,但是,我不确定如何有效地遍历并检查整个地图上的所有灯,而不陷入无限循环或死胡同。

我读过有关使用多种搜索算法的信息,例如广度优先和深度优先搜索算法,但我不确定如何在汇编中实现这些概念(因为大多数示例/伪代码是用 c++/c#/ 编写的)等)。

我不是要求任何具体的编码,而是要求了解如何实现这些搜索功能。由于问题提到了坐标系的原点,因此我创建了一个二维数组,在其中获取特定坐标处的对象的值。不确定数组对于问题有多重要,但我们将不胜感激。

algorithm assembly x86-16
1个回答
0
投票
  1. 将您发现的图块放入 unvisitedNodes 列表中(现在是您的起始图块)。
  2. 未访问的节点中抓取一个图块并检查它。
  3. 检查后,将图块从 unvisitedNodes 移动到 visitedNodes 列表。
  4. 检查某个图块时,请检查它的每个相邻图块是否都出现在您的列表之一中。
  5. 如果不是,则有问题的邻居是一个新发现;将其添加到您的 unvisitedNodes 列表中。
  6. 从点2重复,直到unvisitedNodes变空

为此,我建议首先创建一个漂亮的小集合(列表/队列/集合)库。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.