รับเมทริกซ์รวมค่าของขึ้น / ลงหรือซ้าย / ขวาเพื่อสร้าง X, พับมันขึ้นและกลับรายการ ฉันอธิบายอัลกอริทึมที่นี่:
ขั้นตอนวิธี
ข้อมูลที่คุณป้อนจะเป็นเมทริกซ์จตุรัสที่มีขนาดเป็นจำนวนคี่ในความสามารถเชิงตัวเลขที่สมเหตุสมผลของภาษาของคุณ
ลองดูเมทริกซ์ต่อไปนี้เป็นตัวอย่าง:
1 2 3 2 1
0 3 2 3 0
4 2 5 6 3
7 4 7 9 4
0 6 7 2 5
ก่อนอื่นให้เพิ่มหมายเลขทุกตัวในจำนวนที่ใกล้เคียงที่สุดที่อยู่บนเส้นทแยงมุมหลักหรือเส้นทแยงมุม นั่นคือแบ่งเมทริกซ์ออกเป็นสี่ส่วนตามแนวทแยงมุมหลักและเส้นทแยงมุมแล้วรวมตัวเลขทั้งหมดในแต่ละส่วนเข้าหากึ่งกลางเช่น:
1 2 3 2 1
↓ ↓ ↓
0 → 3 2 3 ← 0
↓
4 → 2 → 5 ← 6 ← 3
↑
7 → 4 7 9 ← 4
↑ ↑ ↑
0 6 7 2 5
ขั้นตอนนี้ให้ผลลัพธ์ต่อไปนี้:
1 1
5 5
39
17 15
0 5
จากนั้นเราพับมันโดยทำให้แบนราบ X และผสมผสานองค์ประกอบเข้ากับด้านบนซ้ายก่อนและล่างซ้ายสุด สิ่งนี้ให้ผลลัพธ์ต่อไปนี้:
1, 0, 5, 17, 39, 5, 15, 1, 5
คุณสามารถจินตนาการสิ่งนี้ว่าเป็นการยืดเส้นทแยงมุมหลักและหมุนทวนเข็มนาฬิกา
นี่คือผลลัพธ์สุดท้าย
ท้าทาย
ใช้อัลกอริทึมนี้ ช่องโหว่มาตรฐานใช้ ยอมรับรูปแบบ I / O ที่เหมาะสมทั้งหมด
กรณีทดสอบ
Input
Output
1 2 3 2 1
0 3 2 3 0
4 2 5 6 3
7 4 7 9 4
0 6 7 2 5
1, 0, 5, 17, 39, 5, 15, 1, 5
1 2 3 4 5
5 4 3 2 1
1 3 5 7 9
0 9 8 7 6
6 7 8 9 0
1, 6, 11, 16, 47, 7, 22, 5, 0
1 3 7 4 8 5 3
8 4 7 5 3 8 0
0 6 3 6 9 8 4
2 6 5 8 7 4 2
0 6 4 3 2 7 5
0 6 7 8 5 7 4
8 5 3 2 6 7 9
1, 8, 15, 11, 23, 20, 62, 32, 25, 13, 18, 3, 9