ความคิด
เราทำเมทริกซ์เกลียววนมาก่อนและหมุนเต็มรูปแบบและหมุนวนในแนวทแยงแต่ไม่เท่าที่ฉันจะหาได้การหมุนของงู !
การหมุนของงูคืออะไร?
ลองนึกภาพแถวของเมทริกซ์ที่กระโดดไปมาด้วยตัวแบ่งระหว่างพวกมันเหมือนกับตัวหารของคิวยาว:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+
ทีนี้ลองนึกภาพการหมุนของไอเท็มเหล่านี้ด้วย 2 แต่ละไอเท็มจะก้าวหน้าเหมือนคนที่เคลื่อนที่เป็นเส้นและไอเท็มที่ส่วนท้ายหกออกมาแล้วกลับไปที่จุดเริ่มต้น:
+--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+
หากมีจำนวนแถวที่คี่มันจะออกจากด้านขวา แต่ยังคงตัดไปที่จุดเริ่มต้น ตัวอย่างเช่นต่อไปนี้เป็นการหมุน 3 ครั้ง:
+--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15
+--------------+
+--------------+
--> 13 14 15 1 2|
+------------ |
| 7 6 5 4 3|
| +-----------+
| 8 9 10 11 12 -->
+--------------+
การหมุนเชิงลบจะนำคุณย้อนกลับ นี่คือการหมุน -2:
+--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+
ความท้าทาย
ฟังก์ชั่นหรือโปรแกรมของคุณจะมี 2 อินพุตในรูปแบบที่สะดวก:
- เมทริกซ์
- จำนวนเต็ม (บวกหรือลบ) ระบุจำนวนตำแหน่งที่จะหมุน
มันจะกลับมา:
- เมทริกซ์ที่หมุน
หมายเหตุ:
- รหัสกอล์ฟ ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ
- เมทริกซ์ไม่จำเป็นต้องเป็นจตุรัส แต่จะมีอย่างน้อย 2 แถวและ 2 คอลัมน์
- จำนวนเต็มบวกจะหมุน 1 แถวไปทางขวา
- จำนวนเต็มลบจะหมุน 1 แถวไปทางซ้าย
- คุณอาจย้อนกลับความหมายของตัวเลขหมุนกลับเป็นบวก / ลบหากสะดวก
- หมายเลขการหมุนสามารถมากกว่าจำนวนรายการ ในกรณีนั้นมันจะห่อ นั่นคือมันจะเท่ากับจำนวนโมดูโลจำนวนของรายการ
- เมทริกซ์จะมีจำนวนเต็มเท่านั้น แต่อาจมีจำนวนเต็มใด ๆ รวมถึงการทำซ้ำ
กรณีทดสอบ
รูปแบบ:
- มดลูก
- หมายเลขการหมุน
- ค่าตอบแทนที่คาดหวัง
4 5
6 7
1
6 4
7 5
2 3 4 5
6 7 8 9
10 11 12 13
-3
5 9 8 7
12 11 10 6
13 2 3 4
8 8 7 7
5 5 6 6
10
5 5 8 8
6 6 7 7