다음과 같은 (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
입니다.
제약 사항 :
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]]
.