Допустим, у меня есть следующая (2D) матрица:
[[1, 2, 3, 4 ],
[5, 6, 7, 8 ],
[9, 10, 11, 12],
[13, 14, 15, 16]]
Поверните матрицу против часовой стрелки R
(не с шагом 90 градусов, просто на 1 число каждый раз),
1 2 3 4 2 3 4 8 3 4 8 12
5 6 7 8 --> 1 7 11 12 --> 2 11 10 16
9 10 11 12 5 6 10 16 1 7 6 15
13 14 15 16 9 13 14 15 5 9 13 14
Завершенный пример:
Входные данные:
2
[[1, 2, 3, 4 ],
[5, 6, 7, 8 ],
[9, 10, 11, 12],
[13, 14, 15, 16]]
Выход:
[[3, 4, 8, 12],
[2, 11, 10, 16],
[1, 7, 6, 15],
[5, 9, 13, 14]]
(странные пробелы для выравнивания чисел в хороших столбцах)
Внешнее «кольцо» матрицы вращается на 2 против часовой стрелки, а внутреннее правое вращается также на 2. В этой матрице есть только два кольца.
Пример с 1 «кольцом»:
2
[[1, 2],
[3, 4],
[5, 6]]
Должен вывести:
[[4, 6],
[2, 5],
[1, 3]]
Ваша задача - взять матрицу и целое число R
и вывести переведенную версию после R
поворотов.
Вращение матрицы 4x5 представлено на следующем рисунке:
Ограничения:
2 ≤ M, N ≤ 100
где М и N - размеры матрицы. Гарантируется, что минимум M и N будет четным.1 ≤ R ≤ 80
где r - число оборотов.- Матрица будет содержать только положительные целые числа.
- Ценности не всегда различны.
- Входные данные всегда должны быть в виде двумерного массива (если вы не можете использовать входные данные во время выполнения в качестве двумерного массива, вам просто нужно найти другой способ получения ввода).
Еще один тестовый пример с нечеткими значениями:
1
[[1, 1],
[2, 2],
[3, 3]]
Выходы:
[[1, 2],
[1, 3],
[2, 3]]
Это код-гольф , поэтому выигрывает самый короткий ответ!
[[3, 4, 8, 12], [2, 11, 10, 16], [1, 7, 6, 16], [5, 9, 13, 14]]
16 внезапно дублируется я предполагаю , что это должно быть: [[3, 4, 8, 12], [2, 11, 10, 16], [1, 7, 6, 15], [5, 9, 13, 14]]
?