Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как написать программу для робота, выполняя которую он обойдет все клетки независимо от лабиринта и от своего начального положения?

Лабиринтом называется клетчатый квадрат 10*10, некоторые пары соседних узлов в котором соединены отрезком - "стеной" таким образом, что переходя из клетки в соседнюю по стороне клетку и не проходя через стены, можно посетить все клетки квадрата. Границу квадрата будем также считать обнесенной стеной. В некоторой клетке некоторого лабиринта стоит робот. Он понимает 4 команды - Л, П, В, Н, по которым соответственно идет влево, вправо, вверх и вниз, а если перед ним "стена", то стоит на месте.

ОбразованиеМатематика+3
Анонимный вопрос
Математика и математики
  · 2,0 K
Родился, учился и работал в СССР. Инженер-оптик, программист RDBMS, алгоритмист...  · 11 авг 2021

Рекурсия. Список для посещенных клеток. Можно массив, так как размер карты конечен. Массив будет быстрее но памяти потребует больше.

------программа на суперязыке

инт старт_майн (){

функция(координата(1,1);

//печатать список.колвоэлементов()

}

функция(координата точка) {

От точки "точка" для каждой соседней как "клетка" дуй:

если (массив["клетка"]= посещено) дуй дальше; //для списка сам додумай

массив["клетка"]= посещено;

//список_посещенных.добавить(клетка) если список заюзать надо

функция("клетка");

конец дуй;

} // конец функции

а что за "суперязык" такой? )
программист  · 12 авг 2021
Во-первых условие неточное. Мы должны: - или иметь лабиринт "перед глазами" (в памяти компьютера) - или каждая из 4х команд должна говорить нам успешна она или нет. Во-вторых решение такое: а) отмечаем каждую посещённую клетку б) В каждой клетке: запускаем рекурсивный обход каждой из соседних клеток, если она не была посещена. ПС Подскажите сколько вам лет (и задание... Читать далее
1 эксперт не согласен
"запускаем рекурсивный обход каждой из соседних клеток" не формализовано, поэтому нельзя доказать или опровергнуть... Читать дальше
Считаем, что программы - строки символов из алфавита Л, П, В, Н. Клетки будем обозначать числами от 1 до 100. Конкатенацию программ p и q будем обозначать p + q; клетку, в которую попадет робот, находившийся в клетке s, после выполнения программы p будем обозначать ps (очевидно, (p + q)s = q(ps)). Если для каждого лабиринта существует программа, выполнив которую робот... Читать далее
Вспомнился анекдот про Холмса и Ватсона на воздушном шаре... Но плюс поставлю.