Вопрос:

8. Исполнитель Робот передвигается по клетчатому полю, выполняя команды, которым присвоены номера: 1 – на клетку вверх, 2 – на клетку вниз, 3 – на клетку вправо, 4 – на клетку влево. Между соседними клетками поля могут стоять стены. Если при выполнении очередного шага Робот сталкивается со стеной, то он разрушается. В результате выполнения программы 3242332411 Робот успешно прошёл из точки А в точку Б. Какую программу необходимо выполнить, чтобы Робот вернулся из точки Б в точку А по кратчайшему пути и не подвергнулся риску разрушения?

Ответ:

г) 241314. Программа 3242332411 привела из А в Б. Чтобы вернуться назад, нужно выполнить команды в обратном порядке и с противоположными направлениями. То есть, заменить 3 на 4, 2 на 1, 4 на 3 и 1 на 2. 3242332411 -> 1131221233. В обратном порядке это 31221311. Меняем команды: 3->4, 1->2, 2->1, 4->3. Получаем 42112422, но это слишком длинно. Вместо этого, нужно пройти тем же путем, но в обратном направлении. Для этого нужно каждую команду заменить на противоположную: 1 -> 2, 2 -> 1, 3 -> 4, 4 -> 3. Программа 3242332411 преобразуется в 4131441322. Чтобы вернуться из точки Б в точку А, нужно пойти в обратном порядке. То есть, перевернуть строку 4131441322 -> 2231441314. Но мы должны вернуться по кратчайшему пути. Значит, нужно взять обратную последовательность исходной последовательности (3242332411), заменив каждую цифру на противоположную (1->2, 2->1, 3->4, 4->3), а потом перевернуть последовательность. Это будет 1131221233 -> 321221311. Наконец, заменим команды на противоположные: 3->4, 1->2, 2->1, 4->3. Получаем 41314->241314
Смотреть решения всех заданий с листа
Подать жалобу Правообладателю

Похожие