ในฐานะที่เป็นส่วนหนึ่งของอัลกอริธึมการบีบอัดมาตรฐาน JPEG จะเปิดใช้งานเมทริกซ์เป็นเวกเตอร์ตามแนวต้านของทิศทางสลับ:
งานของคุณคือนำเวกเตอร์ที่ไม่ได้เลื่อนพร้อมกับขนาดเมทริกซ์และสร้างเมทริกซ์ที่เกี่ยวข้องอีกครั้ง ตัวอย่างเช่น:
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3], 4, 3
ควรให้ผลผลิต
[1 2 3 4
5 6 7 8
9 1 2 3]
ในขณะที่ขนาด6, 2
จะให้
[1 2 6 3 1 2
5 9 4 7 8 3]
กฎระเบียบ
คุณอาจเลือกที่จะใช้มิติข้อมูลเดียวเท่านั้นเป็นอินพุต อินพุตแต่ละรายการสามารถดำเนินการในลำดับใดก็ได้ คุณอาจสมมติว่าความกว้างและความสูงเป็นค่าบวกและใช้ได้กับความยาวเวกเตอร์ที่กำหนด
10
คุณอาจจะคิดว่าองค์ประกอบเวกเตอร์เป็นจำนวนเต็มบวกน้อยกว่า
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์
เวกเตอร์อินพุตอาจได้รับในรูปแบบลิสต์แบบแบนหรือแบบสตริง
เมทริกซ์เอาต์พุตอาจอยู่ในรูปแบบรายการหรือรูปแบบสตริงที่สะดวกไม่คลุมเครือซ้อนกันหรือเป็นรายการแบบแบนพร้อมกับมิติเมทริกซ์ทั้งสอง (หรือแน่นอนว่าเป็นเมทริกซ์หากภาษาของคุณมี)
ใช้กฎมาตรฐานของกอล์ฟ
กรณีทดสอบ
vector width height => matrix
กรณีทดสอบแต่ละคนจะอยู่ในรูป
[1] 1 1 => [[1]]
[1 2 3 1] 2 2 => [[1 2] [3 1]]
[1 2 3 1] 4 1 => [[1 2 3 1]]
[1 2 5 9 6 3 4 7 1 2 8 3] 3 4 => [[1 2 3] [5 6 4] [9 7 8] [1 2 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 4 3 => [[1 2 3 4] [5 6 7 8] [9 1 2 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 6 2 => [[1 2 6 3 1 2] [5 9 4 7 8 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 12 1 => [[1 2 5 9 6 3 4 7 1 2 8 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 1 12 => [[1] [2] [5] [9] [6] [3] [4] [7] [1] [2] [8] [3]]
ความท้าทายที่เกี่ยวข้อง
- Zigzagify a Matrix (การแปลงผกผันค่อนข้างง่ายกว่า)
- หมุนตัวต้านเส้นทแยงมุม