Ctrl K

Прокрутить кольца сетки

Средняя
Дана таблица grid размером m × n, где m и n чётные, и число k. Таблица делится на вложенные кольца: внешнее кольцо — это её граница, следующее — граница таблицы, оставшейся после удаления внешнего кольца, и так далее до центра. Один поворот сдвигает каждое кольцо на одну клетку против часовой стрелки: каждое число переходит в соседнюю клетку своего кольца в этом направлении. Все кольца поворачиваются одновременно и независимо. Верните таблицу после k поворотов.
Пример 1
grid=[[1, 2], [3, 4]], k=1 → [[2, 4], [1, 3]]

Кольцо одно, и каждое число сдвигается на одну клетку против часовой стрелки: 2 уходит влево, 4 вверх, 3 вправо, 1 вниз.

Пример 2
grid=[[5, 6, 7, 8], [9, 1, 2, 10], [11, 3, 4, 12], [13, 14, 15, 16]], k=13 → [[6, 7, 8, 10], [5, 2, 4, 12], [9, 1, 3, 16], [11, 13, 14, 15]]

Во внешнем кольце 12 клеток, поэтому 13 сдвигов равны одному. Во внутреннем кольце 4 клетки, и 13 сдвигов равны одному.

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

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