Ctrl K

Змейка в дальний угол

Сложная
Поле — квадратная сетка field размера n × n: 0 — свободная клетка, 1 — препятствие. Змейка занимает две соседние клетки. В начале она лежит горизонтально в клетках (0, 0) и (0, 1), и её нужно привести в правый нижний угол — горизонтально в клетки (n - 1, n - 2) и (n - 1, n - 1). За один ход змейка может: - сдвинуться на клетку вправо, если обе клетки, куда она попадает, свободны (ориентация не меняется); - сдвинуться на клетку вниз — при том же условии; - если она лежит горизонтально в клетках (r, c) и (r, c + 1) и обе клетки под ней свободны — повернуться по часовой стрелке вокруг (r, c) и встать вертикально в (r, c) и (r + 1, c); - если она стоит вертикально в клетках (r, c) и (r + 1, c) и обе клетки справа от неё свободны — повернуться против часовой стрелки вокруг (r, c) и лечь горизонтально в (r, c) и (r, c + 1). Верните наименьшее число ходов до цели или -1, если дойти нельзя.
Пример 1
field=[[0, 0, 0], [0, 0, 0], [0, 0, 0]] → 3

Змейка сдвигается вниз два раза и вправо один раз — 3 хода.

Пример 2
field=[[0, 0, 1], [1, 0, 0], [1, 0, 0]] → -1

Справа от змейки стена (0, 2), а под её хвостом — стена (1, 0): ни сдвинуться вправо, ни сдвинуться вниз, ни повернуться нельзя. Ответ -1.

Пример 3
field=[[0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0], [1, 0, 0, 0]] → 5
Ограничения
  • 2 ≤ n ≤ 100
  • field — квадратная сетка n × n из 0 и 1
  • клетки (0, 0) и (0, 1) свободны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРамка вокруг кляксы СложнаяУчасток для дома рядом со всеми зданиями СложнаяСамый длинный подъём по карте СложнаяЛужи на рельефной карте СложнаяШарик и лунка Сложная
загружаем Python…
Вход
field=[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 66 тестов на сервере, включая скрытые.