Ctrl K

Сглаживание по ровным плиткам

Средняя
Чёрно-белая картинка задана матрицей pixels размером m × n: pixels[i][j] — яркость пикселя от 0 до 255. Также дано число tolerance. **Плитка** — любой квадрат 3 × 3 внутри картинки. Плитка **ровная**, если у любых двух пикселей внутри неё, соседних по стороне, яркость отличается не больше чем на tolerance. Среднее ровной плитки — сумма её девяти пикселей, делённая на 9 с округлением вниз. Постройте новую матрицу того же размера: - если пиксель не входит ни в одну ровную плитку, он остаётся прежним; - иначе его новое значение — среднее арифметическое средних всех ровных плиток, в которые он входит, с округлением вниз. Средние плиток берутся уже округлёнными. Плитки могут перекрываться, и один пиксель может входить в несколько из них.
Пример 1
pixels=[[10, 12, 11, 40], [11, 13, 12, 41], [12, 14, 13, 42]], tolerance=2 → [[12, 12, 12, 40], [12, 12, 12, 41], [12, 12, 12, 42]]

Левая плитка 3 × 3 гладкая: соседние пиксели отличаются не больше чем на 2, её среднее 108 // 9 = 12. В правой плитке есть скачок 11 → 40, она не годится. Столбец 3 не покрыт ни одной гладкой плиткой и остаётся как был.

Пример 2
pixels=[[0, 0, 0], [0, 9, 0], [0, 0, 0]], tolerance=8 → [[0, 0, 0], [0, 9, 0], [0, 0, 0]]

Единственная плитка не гладкая (9 отличается от соседей на 9 > 8), поэтому картинка не меняется.

Пример 3
pixels=[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], tolerance=1 → [[2, 2, 2, 3], [2, 2, 2, 3], [2, 2, 2, 3]]

Обе плитки гладкие, их средние 2 и 3. Средние столбцы покрыты обеими: (2 + 3) // 2 = 2.

Ограничения
  • 3 ≤ m, n ≤ 500
  • 0 ≤ pixels[i][j] ≤ 255
  • 0 ≤ tolerance ≤ 255
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСудоку без конфликтов СредняяПовернуть квадрат по часовой СредняяЧтение по спирали СредняяКвадрат, пронумерованный по спирали СредняяМаршруты тележки по складу Средняя
загружаем Python…
Вход
pixels=[[10, 12, 11, 40], [11, 13, 12, 41], [12, 14, 13, 42]], tolerance=2
Ожидается
[[12, 12, 12, 40], [12, 12, 12, 41], [12, 12, 12, 42]]

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