Ctrl K

Как расходится слух

Лёгкая
В опенспейсе столы стоят прямоугольником из rows рядов по cols столов. Стол в ряду i и колонке j обозначим [i, j] (нумерация с нуля). Новость появляется у стола [start_row, start_col]. Дальше она расходится волнами. Каждую минуту каждый стол, узнавший новость на прошлой минуте, сообщает её соседям строго в таком порядке: впереди ([i - 1, j]), справа ([i, j + 1]), сзади ([i + 1, j]), слева ([i, j - 1]). Столы одной волны сообщают по очереди — в том порядке, в каком сами узнали новость. Если сосед уже знает новость (или ему её уже сообщили раньше), его пропускают; за пределами опенспейса столов нет. Верните координаты всех столов в том порядке, в каком они узнали новость, начиная со стола [start_row, start_col].
Пример 1
rows=2, cols=3, start_row=0, start_col=1 → [[0, 1], [0, 2], [1, 1], [0, 0], [1, 2], [1, 0]]

Стол (0, 1) узнаёт первым. Он сообщает по порядку: впереди стола нет, справа (0, 2), сзади (1, 1), слева (0, 0). Затем (0, 2) сообщает (1, 2), (1, 1) — уже некому, кроме (1, 0), который ещё не знает; (0, 0) — некому.

Пример 2
rows=1, cols=4, start_row=0, start_col=3 → [[0, 3], [0, 2], [0, 1], [0, 0]]

Один ряд, новость идёт только влево.

Пример 3
rows=3, cols=3, start_row=1, start_col=1 → [[1, 1], [0, 1], [1, 2], [2, 1], [1, 0], [0, 2], [0, 0], [2, 2], [2, 0]]
Ограничения
  • 1 ≤ rows, cols ≤ 100
  • 0 ≤ start_row < rows
  • 0 ≤ start_col < cols
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТени башен из кубиков ЛёгкаяПлощадь башен из кубиков ЛёгкаяГде встретиться друзьям СложнаяСамый маленький загон СредняяБлижайшие к базе точки Средняя
загружаем Python…
Вход
rows=2, cols=3, start_row=0, start_col=1
Ожидается
[[0, 1], [0, 2], [1, 1], [0, 0], [1, 2], [1, 0]]

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