Diberikan array ortogonal N-dimensional (non-compang-camping) dari bilangan bulat non-negatif, dan indikasi yang dimensi untuk membalik, mengembalikan array tetapi terbalik sepanjang dimensi tersebut. Indikasi dapat diberikan sebagai daftar panjang Boolean N atau daftar subset dari dimensi N pertama yang diindeks dari 0 atau 1.
Silakan sebutkan format input Anda. Penjelasan kode sangat dihargai.
Contoh walked-through
Kami diberi 2-layer 3-baris 4-kolom 3D-array
[[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9,10,11,12]],
[[13,14,15,16],
[17,18,19,20],
[21,22,23,24]]]
dan salah satunya
[true,false,true]
(Daftar Boolean)
[0,2]
( daftar 0-diindeks)
[1,3]
( daftar 1-diindeks)
Kita perlu membalik urutan dimensi pertama dan terakhir, yaitu lapisan dan elemen dari baris (kolom), tetapi bukan baris dari setiap lapisan. Pertama (urutan sebenarnya Anda melakukan ini tidak masalah) kami membalikkan urutan lapisan:
[[[13,14,15,16],
[17,18,19,20],
[21,22,23,24]],
[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9,10,11,12]]]
dan kemudian kita membalik urutan elemen dari setiap baris:
[[[16,15,14,13],
[20,19,18,17],
[24,23,22,21]],
[[ 4, 3, 2, 1],
[ 8, 7, 6, 5],
[12,11,10, 9]]]
Uji kasus
[[[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
bekerja pada array arbitrer tetapi hanya peduli pada level pertama), generik, atau kelas rekursif (kelas tipe / objek tergantung pada fungsional atau OOP, tetapi serupa kasus penggunaan). Dua yang terakhir biasanya jauh lebih bertele-tele.