次の(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回転します。このマトリックスには、2つのリングしかありません。
1つの「リング」の例:
2
[[1, 2],
[3, 4],
[5, 6]]
出力する必要があります:
[[4, 6],
[2, 5],
[1, 3]]
あなたの課題は、行列と整数を取り込んで、回転R
後の翻訳バージョンを出力することR
です。
制約:
2 ≤ M, N ≤ 100
ここで、MとNは行列の次元です。MとNの最小値が偶数になることが保証されます。1 ≤ R ≤ 80
ここで、rは回転数です。- 行列には正の整数のみが含まれます。
- 値は常に明確ではありません。
- 入力は常に2D配列である必要があります(ランタイム入力を2D配列として取得できない場合は、入力を取得する別の方法を見つける必要があります)。
異なる値を持つ別のテストケース:
1
[[1, 1],
[2, 2],
[3, 3]]
出力:
[[1, 2],
[1, 3],
[2, 3]]
これはcode-golfなので、最短の答えが勝ちです!
[[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]]
ます。