Digamos que eu tenho a seguinte matriz (2D):
[[1, 2, 3, 4 ],
[5, 6, 7, 8 ],
[9, 10, 11, 12],
[13, 14, 15, 16]]
Gire a matriz no sentido anti- R
horário (não em incrementos de 90 graus, apenas um número por vez),
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
Exemplo completo:
Entrada:
2
[[1, 2, 3, 4 ],
[5, 6, 7, 8 ],
[9, 10, 11, 12],
[13, 14, 15, 16]]
Saída:
[[3, 4, 8, 12],
[2, 11, 10, 16],
[1, 7, 6, 15],
[5, 9, 13, 14]]
(espaços estranhos são para alinhar os números em boas colunas)
O "anel" externo da matriz gira 2 no sentido anti-horário e o interior direito também gira 2. Nesta matriz, existem apenas dois anéis.
Um exemplo com 1 "anel":
2
[[1, 2],
[3, 4],
[5, 6]]
Saída deve:
[[4, 6],
[2, 5],
[1, 3]]
Seu desafio é obter uma matriz e um número inteiro R
e gerar a versão traduzida após as R
rotações.
A rotação de uma matriz 4x5 é representada pela seguinte figura:
Restrições:
2 ≤ M, N ≤ 100
, onde M e N são as dimensões da matriz. É garantido que o mínimo de M e N seja par.1 ≤ R ≤ 80
, em que r é o número de rotações.- A matriz sempre conterá números inteiros positivos.
- Os valores nem sempre são distintos.
- A entrada sempre deve ser como uma matriz 2D (se você não pode receber a entrada de tempo de execução como uma matriz 2D, basta encontrar outra maneira de obter entrada).
Outro caso de teste, com valores não distintos:
1
[[1, 1],
[2, 2],
[3, 3]]
Saídas:
[[1, 2],
[1, 3],
[2, 3]]
Isso é código-golfe , então a resposta mais curta vence!
[[3, 4, 8, 12], [2, 11, 10, 16], [1, 7, 6, 16], [5, 9, 13, 14]]
os 16 são subitamente duplicados, acho que deveria ser [[3, 4, 8, 12], [2, 11, 10, 16], [1, 7, 6, 15], [5, 9, 13, 14]]
:?