Cho một mảng số nguyên không trực giao (không bị rách) của các số nguyên không âm và một dấu hiệu cho biết kích thước nào sẽ đảo ngược, trả về mảng nhưng đảo ngược dọc theo các kích thước đó. Chỉ báo có thể được đưa ra dưới dạng danh sách Boolean có độ dài N hoặc danh sách tập hợp con có kích thước N đầu tiên được lập chỉ mục từ 0 hoặc 1.
Vui lòng cho biết các định dạng đầu vào của bạn. Giải thích mã được nhiều đánh giá cao.
Ví dụ đi qua
Chúng tôi được cung cấp mảng 3D 4 cột 4 hàng
[[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9,10,11,12]],
[[13,14,15,16],
[17,18,19,20],
[21,22,23,24]]]
và một trong
[true,false,true]
(Danh sách Boolean)
[0,2]
( danh sách 0 chỉ mục)
[1,3]
( danh sách 1 chỉ mục)
Chúng ta cần đảo ngược thứ tự của các kích thước đầu tiên và cuối cùng, đó là các lớp và các thành phần của các hàng (các cột), nhưng không phải là các hàng của mỗi lớp. Đầu tiên (thứ tự thực tế bạn làm điều này không quan trọng) chúng tôi đảo ngược thứ tự của các lớp:
[[[13,14,15,16],
[17,18,19,20],
[21,22,23,24]],
[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9,10,11,12]]]
và sau đó chúng tôi đảo ngược thứ tự các phần tử của mỗi hàng:
[[[16,15,14,13],
[20,19,18,17],
[24,23,22,21]],
[[ 4, 3, 2, 1],
[ 8, 7, 6, 5],
[12,11,10, 9]]]
Các trường hợp thử nghiệm
[[[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
hoạt động trên các mảng tùy ý nhưng chỉ quan tâm đến cấp độ đầu tiên), chung chung hoặc các lớp đệ quy (loại lớp / đối tượng tùy thuộc vào chức năng hoặc OOP, nhưng trường hợp sử dụng tương tự). Hai cái sau thường dài dòng hơn nhiều.