包围和计数网格中的任何对象

问题描述

一个正方形网格,其中有空块和实心块。没有连续的块形成一个对象。我的机器人可以找出它的相邻8个块的状态(无论是否已填充)。如果没有填充的块,它可以移动到相邻的位置。 我的代码适用于没有狭窄空间的情况(即对象之间至少有2个空块)。但是,在2个块之间只能有一个空格的情况下,由于我的机器人无法知道相邻的填充块是否属于相同或不同的对象,因此无法包围该对象。 有办法解决这个问题吗?     

解决方法

怎么样:当漫游器包围对象时,它正在修改其内部地图,将对象的边界正方形从“未知”更改为“填充”。如果发现自己与两个(或多个)出售的区块相邻,则应注意的一个标记为“未知”且带有“已填充”邻居的区块。 仍然有一些特殊的情况需要处理,并且在很大程度上取决于某些设计选择-对角线邻居是否“连续”,如果是这样,如何处理棋盘格,是否在找到下一个之前或之后标记一个正方形一,依此类推。但是,地图标记和可见块的组合应该为机器人提供足够的信息以保持其方位。