สมมติว่าฉันมีเมทริกซ์ต่อไปนี้ (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
โดยที่ M และ N คือขนาดของเมทริกซ์ รับประกันได้ว่าขั้นต่ำของ M และ N จะเท่ากัน1 ≤ R ≤ 80
ที่ r คือจำนวนรอบการหมุน- เมทริกซ์จะมีจำนวนเต็มบวกเท่านั้น
- ค่าไม่แตกต่างกันเสมอ
- อินพุตควรเป็นอาร์เรย์ 2 มิติเสมอ (หากคุณไม่สามารถรับข้อมูลรันไทม์เป็นอาร์เรย์ 2 มิติได้คุณจะต้องหาวิธีอื่นในการรับอินพุต)
อีกกรณีทดสอบที่มีค่าไม่แตกต่างกัน:
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]]
?