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

Assembly 装配中的机器人探索问题(emu8086),assembly,robot,x86-16,Assembly,Robot,X86 16,我正在使用emu8086编写一个汇编程序。该程序使用内置机器人设备在模拟6x9地图上模拟虚拟机器人。地图将包含未知数量的墙壁和灯缝/无灯,机器人将穿过地图,找到所有无灯灯并点亮。机器人本身只能从机器人所面对的相邻方格中获取数据,并且只能旋转90度。 项目建议左上角将是坐标系0,0的原点 我知道如何用我的代码连接机器人来移动和检查数据,但是,我不确定如何有效地遍历和检查整个地图上的所有灯,而不会陷入无限循环或死胡同 我读过关于使用几种搜索算法的内容,如广度优先和深度优先搜索算法,但我不确定如何在汇

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

我知道如何用我的代码连接机器人来移动和检查数据,但是,我不确定如何有效地遍历和检查整个地图上的所有灯,而不会陷入无限循环或死胡同

我读过关于使用几种搜索算法的内容,如广度优先和深度优先搜索算法,但我不确定如何在汇编中实现这些概念,因为大多数示例/psuedocode都是用c++/c/etc编写的

我不是要求任何特定的编码,而是关于如何实现这些搜索功能的见解。因为这个问题提到了坐标系的原点,所以我制作了一个2d数组,在其中获取特定坐标下对象的值。不确定阵列对该问题的重要性,但如有任何帮助,将不胜感激

将您发现的磁贴放置在“未访问的节点”列表中,现在开始磁贴。 从未访问的节点抓取一个磁贴并检查它。 检查后,将互动程序从“未访问的节点”移动到“已访问的节点”列表。 检查互动程序时,请检查其相邻的每个互动程序是否出现在您的列表中。 如果不是,则该邻居是一个新发现;将其附加到未访问的节点列表中。 从第2点开始重复,直到unvisitedNodes变为空
为此,我建议首先创建一个漂亮的小集合列表/队列/集合库。

由于这是一个有点特殊的场景,上述解决方案可能不准确,但您可以根据需要进行调整