Ctrl K

Остановится ли шарик в цели

Средняя
Лабиринт задан сеткой grid размером m × n: 0 — свободная клетка, 1 — стена. Всё за пределами сетки тоже считается стеной. В клетке start = [row, col] лежит шарик. Его можно толкнуть вверх, вниз, влево или вправо, и он катится по свободным клеткам, пока не упрётся в стену. Только остановившись, шарик можно толкнуть снова, в любую сторону. Верните true, если шарик можно остановить ровно в клетке target = [row, col], и false иначе. Прокатиться через target, не остановившись, недостаточно.
Пример 1
grid=[[0, 0, 0], [1, 1, 0], [0, 0, 0]], start=[0, 0], target=[2, 0] → True

Толкаем вправо — шарик останавливается в [0, 2], вниз — в [2, 2], влево — в [2, 0].

Пример 2
grid=[[0, 0, 0], [0, 0, 0], [0, 0, 0]], start=[0, 0], target=[1, 1] → False

Стен внутри нет, поэтому шарик всегда докатывается до края. Через центр он проехать может, а остановиться в нём — нет.

Ограничения
  • 1 ≤ m, n ≤ 100
  • grid[i][j] равно 0 или 1
  • start и target — свободные клетки внутри сетки, и они не совпадают
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОсушение замкнутых прудов СредняяУчастки суши на карте СредняяДождь стекает в оба моря СредняяКратчайший путь катящегося шарика СредняяОткрыть клетку на минном поле Средняя
загружаем Python…
Вход
grid=[[0, 0, 0], [1, 1, 0], [0, 0, 0]], start=[0, 0], target=[2, 0]
Ожидается
True

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