February 27, 2019

Решение задачи 471

Условие:

На шахматной доске в левом верхнем углу стоит робот. Ему надо попасть в правый нижний квадрат. За один ход он может переходить на любую соседнюю клетку (только не по диагонали). На доске есть непроходимый квадрат. Когда он получает инструкцию, например, вправо, а там стоит этот квадрат, то он остаётся на месте и выполняет следующую инструкцию по алгоритму. Придумайте алгоритм (конечную последовательность шагов), наверняка доставляющий робота в правый нижний квадрат (инструкции, направляющие робота за пределы доски, игнорируются).

Решение:

Рассмотрим такую последовательность действий (шагов): →, ↓, … , →, ↓ (16 движений). Покажем, что такой алгоритм работает.

1) Если непроходимый квадрат находится НЕ на главной диагонали и НЕ на диагонали, которая чуть выше главной, то робот без препятствий за 14 шагов доберется до нужной клетки (см рисунок):

2) Если непроходимый квадрат находится на главной диагонали, то робот не сможет сделать один из ходов вниз. На одном из последних шагов робот не сможет сходить вправо из-за правой стенки. Таким образом, робот доберется до нужной клетки за 16 шагов:

3) Если же непроходимый квадрат находится прям над главной диагональю, то робот не сможет сделать один их ходов вправо. Больше он холостых ходов делать не будет и доберется за 15 шагов до финиша:

Ответ: →, ↓, … , →, ↓ (16 движений).

Комментарий: Есть и другие решения.