Вот подробное решение с пояснениями.
Уточнения и настройка задачи
- Сетка: квадрат 2×2, т.е. есть 4 клетки: верхний левый (TL), верхний правый (TR), нижний левый (BL), нижний правый (BR).
- Внутри квадрата есть одна вертикальная стенка высотой одной клетки, прилипшая к верхней стене квадрата. Значит стенка находится между TL и TR в верхнем ряду и блокирует прохождение между этими двумя клетками напрямую.
- Все остальные смежности между клетками свободны (нет других стенок).
Обозначения
- TL: верхний левый
- TR: верхний правый
- BL: нижний левый
- BR: нижний правый
Доступность переходов (что можно двигать):
- TL ↔ BL: открыт (вниз из TL или вверх из BL)
- TR ↔ BR: открыт (вниз из TR или вверх из BR)
- BL ↔ BR: открыт (права/левая)
- TL ↔ TR: закрыт стенкой
Задача: начать в любой клетки и добраться в TL (левый верхний угол).
Пошаговое решение по исходной клетке
- Если стартовая клетка уже TL
- Ничего не делаем. Цель выполнена.
- Если стартовая клетка TR
- Причина: прямого перехода TR → TL через стенку нет.
- План движения: TR → BR (вниз), BR → BL (влево), BL → TL (вверх).
- Обоснование: это обходной путь по трём клеткам вокруг стены; все переходы разрешены.
- Если стартовая клетка BL
- Переходим BL → TL (вверх).
- Простое движение, прямо к цели.
- Если стартовая клетка BR
- Переходим BR → BL (влево), затем BL → TL (вверх).
- Два шага: обход через нижний ряд вокруг стены.
Итого, универсальная стратегия
- Самый простой универcальный план: сначала добраться до нижней левой клетки (BL), затем перейти в верхний левый угол (TL).
- Преимущество: для всякой стартовой клетки путь существует и не требует прямого перехода через заблокированную границу TL–TR.
- Конкретные маршруты по случаем выше являются конкретизацией этой стратегии:
- TL → BL → TL (если старт в TL)
- TR → BR → BL → TL (если старт в TR)
- BL → TL (если старт в BL)
- BR → BL → TL (если старт в BR)
Краткое объяснение корректности
- Стена блокирует только переход между TL и TR напрямую.
- Все прочие соседние переходы свободны: TL↔BL, TR↔BR, BL↔BR.
- Путь через BL обходит заблокированную границу, поэтому независимо от исходной клетки можно добраться до TL, следуя маршруту через BL.
Если хочешь, могу привести это же решение в виде мини-«псевдокода» или схематично нарисовать карту с пометками.