В таком случае предлагаю следующий алгоритм:
1. Создаем массив 100х160, который будет хранить статусы блоков в нашей комнате.
Статусы могут быть следующие:
-2 (неинтересно) - такой статус имеет блок, о котором пока не известно, находится ли он в пределах комнаты
-1 (неизвестно) - такой статус имеет еще неисследованный блок, но о котором известно, что он в комнате или является ее стенкой
0 (пусто) - пустое пространство внутри комнаты
>0 - исследованный блок внутри комнаты или ее стенка. Может принимать значение равное номеру слота робота, с которым выполнилось сравнение.
2. Заполняем массив статусом "неинтересно". Считаем что робот находится в позиции X=80, Y=50 (центр нашего массива).
3. Присваиваем этой клетке статус "пусто". Просматриваем четыре, граничащие с ней клетки. Если они находятся в пределах массива и имеют статус "неинтересно", присваиваем им статус "неизвестно".
4. Ищем в массиве ближайшую клетку со статусом "неизвестно". Если таких клеток нет - конец работы
5. Иначе, перемещаемся к ней и исследуем.
6. Если она пустая, переходим к пункту 3
7. Иначе, присваиваем клетке тип блока. Переходим к пункту 4
Понятно, что под словами "просматриваем", "ищем", "перемещаемся" может скрываться довольно сложный код, но я, по крайней мере, начал дробить сложную задачу на задачи меньшего размера.