Ctrl K

Три в ряд до упора

Средняя
Дано поле игры «три в ряд» — матрица board размером m × n, где board[i][j] — цвет фишки, а 0 означает пустую клетку. Строка 0 — верх поля. Приведите поле в устойчивое состояние, повторяя раунды: 1. Найдите все отрезки из трёх и более одинаковых фишек подряд по горизонтали или по вертикали. Все такие фишки исчезают одновременно (одна фишка может входить сразу в горизонтальный и вертикальный отрезок). 2. В каждом столбце оставшиеся фишки падают вниз, пока не упрутся в дно или в другую фишку. Сверху новые фишки не появляются, освободившиеся клетки остаются пустыми. Когда в очередном раунде исчезать нечему, поле устойчиво. Верните его.
Пример 1
board=[[1, 2, 3], [4, 2, 5], [7, 2, 7], [6, 6, 6]] → [[0, 0, 0], [1, 0, 3], [4, 0, 5], [7, 0, 7]]

Одновременно исчезают столбик из трёх двоек и строка из трёх шестёрок. Оставшиеся фишки падают вниз, новых совпадений нет.

Пример 2
board=[[6, 2, 3], [6, 4, 4], [1, 1, 1], [6, 5, 7]] → [[0, 0, 0], [0, 2, 3], [0, 4, 4], [0, 5, 7]]

В первом раунде исчезают три единицы. Фишки падают, и в левом столбце три шестёрки оказываются друг над другом — во втором раунде исчезают и они. Дальше совпадений нет.

Пример 3
board=[[1, 2, 1], [2, 1, 2], [1, 2, 1]] → [[1, 2, 1], [2, 1, 2], [1, 2, 1]]

Трёх одинаковых подряд нет нигде — поле уже устойчиво.

Ограничения
  • 3 ≤ m, n ≤ 50
  • 1 ≤ board[i][j] ≤ 2000 (в исходном поле пустых клеток нет)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЗеркало и негатив ЛёгкаяЧтение по спирали СредняяКвадрат, пронумерованный по спирали СредняяСледующий шаг колонии клеток СредняяЗигзаг по диагоналям Средняя
загружаем Python…
Вход
board=[[1, 2, 3], [4, 2, 5], [7, 2, 7], [6, 6, 6]]
Ожидается
[[0, 0, 0], [1, 0, 3], [4, 0, 5], [7, 0, 7]]

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