Diciamo che ho la seguente matrice (2D):
[[1, 2, 3, 4 ],
[5, 6, 7, 8 ],
[9, 10, 11, 12],
[13, 14, 15, 16]]
Ruota le matrici in senso antiorario R
(non con incrementi di 90 gradi, solo di 1 numero ogni volta),
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
Esempio completato:
Ingresso:
2
[[1, 2, 3, 4 ],
[5, 6, 7, 8 ],
[9, 10, 11, 12],
[13, 14, 15, 16]]
Produzione:
[[3, 4, 8, 12],
[2, 11, 10, 16],
[1, 7, 6, 15],
[5, 9, 13, 14]]
(spazi strani sono per allineare i numeri in belle colonne)
L '"anello" esterno della matrice ruota 2 in senso antiorario e anche la parte interna destra ruota 2. In questa matrice, ci sono solo due anelli.
Un esempio con 1 "anello":
2
[[1, 2],
[3, 4],
[5, 6]]
Dovrebbe produrre:
[[4, 6],
[2, 5],
[1, 3]]
La tua sfida è quella di prendere una matrice e un numero intero R
e produrre la versione tradotta dopo le R
rotazioni.
La rotazione di una matrice 4x5 è rappresentata dalla figura seguente:
vincoli:
2 ≤ M, N ≤ 100
, dove M e N sono le dimensioni della matrice. È garantito che il minimo di M e N sarà pari.1 ≤ R ≤ 80
, dove r è il numero di rotazioni.- La matrice conterrà solo numeri interi positivi.
- I valori non sono sempre distinti.
- L'input dovrebbe essere sempre come un array 2D (se non puoi prendere l'input di runtime come un array 2D, devi solo trovare un altro modo per ottenere l'input).
Un altro caso di test, con valori non distinti:
1
[[1, 1],
[2, 2],
[3, 3]]
Uscite:
[[1, 2],
[1, 3],
[2, 3]]
Questo è code-golf , quindi vince la risposta più breve!
[[3, 4, 8, 12], [2, 11, 10, 16], [1, 7, 6, 16], [5, 9, 13, 14]]
il 16 è improvvisamente duplicato immagino che dovrebbe essere [[3, 4, 8, 12], [2, 11, 10, 16], [1, 7, 6, 15], [5, 9, 13, 14]]
:?