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, если дойти нельзя.field=[[0, 0, 0], [0, 0, 0], [0, 0, 0]] → 3
Змейка сдвигается вниз два раза и вправо один раз — 3 хода.
field=[[0, 0, 1], [1, 0, 0], [1, 0, 0]] → -1
Справа от змейки стена (0, 2), а под её хвостом — стена (1, 0): ни сдвинуться вправо, ни сдвинуться вниз, ни повернуться нельзя. Ответ -1.
field=[[0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0], [1, 0, 0, 0]] → 5
(0, 0) и (0, 1) свободныfield=[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
3
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 66 тестов на сервере, включая скрытые.