Ctrl K

Робот-пылесос, который поворачивает направо

Средняя
План комнаты задан прямоугольной матрицей floor: 0 — свободная клетка, 1 — клетка с мебелью. Левый верхний угол (0, 0) всегда свободен. Робот-пылесос стоит в клетке (0, 0) и смотрит вправо. Он едет прямо, пока впереди свободная клетка. Если следующий шаг упирается в стену комнаты или в мебель, робот поворачивается на 90° по часовой стрелке и пробует снова. Каждую клетку, где он побывал, включая стартовую, он убирает. Робот работает бесконечно. Верните, сколько разных клеток окажутся убраны.
Пример 1
floor=[[0, 0, 1], [0, 0, 0]] → 4

Робот проезжает (0, 0) → (0, 1), упирается в мебель и поворачивает вниз: (1, 1). Дальше стена — поворот налево: (1, 0). Затем вверх: (0, 0), и маршрут начинает повторяться. Убрано 4 клетки; клетка (1, 2) так и осталась грязной.

Пример 2
floor=[[0, 0], [0, 0]] → 4

Робот объезжает квадрат по кругу и убирает все 4 клетки.

Пример 3
floor=[[0, 1], [1, 0]] → 1
Ограничения
  • 1 ≤ len(floor), len(floor[i]) ≤ 300
  • все строки одной длины
  • floor[i][j] равно 0 или 1
  • floor[0][0] = 0
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЧтение по спирали СредняяКвадрат, пронумерованный по спирали СредняяСледующий шаг колонии клеток СредняяЗигзаг по диагоналям СредняяТри в ряд до упора Средняя
загружаем Python…
Вход
floor=[[0, 0, 1], [0, 0, 0]]
Ожидается
4

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