Re: Задача с собеседования
От: De-Bill  
Дата: 02.07.18 03:10
Оценка: +6
M>Вы управляете роботом, который двигается по клетчатому полю. Ваша задача написать алгоритм, с помощью которого робот гарантированно посетить все клетки поля, до которых возможно добраться. Каждая клетка может быть либо свободной, либо занятой стеной. Робот может передвигаться только из свободной клетки в свободную. Размер и форма поля заранее неизвестны. Роботу можно отдать одну из четырёх команд передвижения: вперёд, назад, влево, вправо. По результату выполнения компанды можно понять, сделал ли робот движение, или на пути оказалась стена.

Если я ничего не упустил из условия, то задача решается элементарно (заливка/поиск в ширину/заполнение карты):
1. Допустим, на шаге i у нас есть множество известных клеток на карте (на 0м шаге известна клетка, где мы стоим)
2. Ищем все достижимые (при движении по известной части карты) неизвестные клетки (т.е. граничащие с известными "не стенами"), если таких нет, то завершаем работу
3. Идём в любую из них по известной части карты (можно в ближайшую)
4. При достижении определяем, стена ли там, достраиваем известную часть карты
5. Повторяем с шага 1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.