รับอาร์เรย์ N-Dim orthogonal (ไม่มอมแมม) ของจำนวนเต็มไม่เป็นลบและบ่งชี้ว่ามิติใดที่จะย้อนกลับส่งคืนอาร์เรย์ แต่กลับตามมิติเหล่านั้น การบ่งชี้อาจถูกกำหนดเป็นรายการบูลีนที่มีความยาว N หรือรายการของเซ็ตย่อยของมิติ N แรกที่จัดทำดัชนีจาก 0 หรือ 1
โปรดระบุรูปแบบการป้อนข้อมูลของคุณ คำอธิบายรหัสชื่นชมมาก
ตัวอย่างแบบ walk-through
เราได้รับอาร์เรย์ 3 มิติ 4 แถว 4 แถวแบบ 3 มิติ
[[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9,10,11,12]],
[[13,14,15,16],
[17,18,19,20],
[21,22,23,24]]]
และหนึ่งในนั้น
[true,false,true]
(รายการบูลีน)
[0,2]
(รายการที่จัดทำดัชนี 0)
[1,3]
(รายการที่จัดทำดัชนี 1 รายการ)
เราจำเป็นต้องเรียงลำดับของส่วนข้อมูลแรกและส่วนสุดท้ายนั่นคือเลเยอร์และองค์ประกอบของแถว (คอลัมน์) แต่ไม่ใช่แถวของแต่ละชั้น ครั้งแรก (คำสั่งซื้อจริงที่คุณทำไม่เป็นไร) เรากลับคำสั่งของเลเยอร์:
[[[13,14,15,16],
[17,18,19,20],
[21,22,23,24]],
[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9,10,11,12]]]
แล้วเรากลับลำดับขององค์ประกอบของแต่ละแถว:
[[[16,15,14,13],
[20,19,18,17],
[24,23,22,21]],
[[ 4, 3, 2, 1],
[ 8, 7, 6, 5],
[12,11,10, 9]]]
กรณีทดสอบ
[[[1,2,3,4],[5,6,7,8],[9,10,11,12]],[[13,14,15,16],[17,18,19,20],[21,22,23,24]]]
[true,false,true]
/ [0,2]
/ [1,3]
↓
[[[16,15,14,13],[20,19,18,17],[24,23,22,21]],[[4,3,2,1],[8,7,6,5],[12,11,10,9]]]
[[1,2,3],[4,5,6]]
[true,false]
/ [0]
/ [1]
↓
[[4,5,6],[1,2,3]]
[[1],[4]]
[true,false]
/ [0]
/ [1]
↓
[[4],[1]]
[[7]]
[true,true]
/ [0,1]
/ [1,2]
↓
[[7]]
[1,2,3,4,5,6,7]
[true]
/ [0]
/ [1]
↓
[7,6,5,4,3,2,1]
[]
[true]
/ [0]
/ [1]
↓
[]
[[],[]]
[false,false]
/ []
/ []
↓
[[],[]]
[[[[3,1,4,1],[5,9,2,6]],[[5,3,5,8],[9,7,9,3]]],[[[2,3,8,4],[6,2,6,4]],[[3,3,8,3],[2,7,9,5]]]]
[true,false,true,true]
/ [0,2,3]
/ [1,3,4]
↓
[[[[4,6,2,6],[4,8,3,2]],[[5,9,7,2],[3,8,3,3]]],[[[6,2,9,5],[1,4,1,3]],[[3,9,7,9],[8,5,3,5]]]]
[[[[3,1,4,1],[5,9,2,6]],[[5,3,5,8],[9,7,9,3]]],[[[2,3,8,4],[6,2,6,4]],[[3,3,8,3],[2,7,9,5]]]]
[false,true,false,false]
/ [1]
/ [2]
↓
[[[[5,3,5,8],[9,7,9,3]],[[3,1,4,1],[5,9,2,6]]],[[[3,3,8,3],[2,7,9,5]],[[2,3,8,4],[6,2,6,4]]]]
[[[[3,1,4,1],[5,9,2,6]],[[5,3,5,8],[9,7,9,3]]],[[[2,3,8,4],[6,2,6,4]],[[3,3,8,3],[2,7,9,5]]]]
[false,false,false,false]
/ []
/ []
↓
[[[[3,1,4,1],[5,9,2,6]],[[5,3,5,8],[9,7,9,3]]],[[[2,3,8,4],[6,2,6,4]],[[3,3,8,3],[2,7,9,5]]]]
reverse
ทำงานในอาเรย์โดยพลการ แต่สนใจเฉพาะในระดับแรก), generics หรือคลาสแบบเรียกซ้ำ (คลาส / วัตถุคลาสขึ้นอยู่กับหน้าที่ หรือ OOP แต่กรณีใช้คล้ายกัน) สองหลังมักจะ verbose มากขึ้น