Diberikan array 3D biner, untuk setiap lapisan, putar secara siklikal ke atas setiap kolomnya sebanyak langkah sebagaimana ditunjukkan oleh pengodean biner dari kolom lapisan di atasnya, dan kemudian putar secara siklik ke kiri setiap barisnya sebanyak langkah seperti yang ditunjukkan oleh pengkodean biner dari baris-baris lapisan di bawahnya.
Akan selalu ada setidaknya tiga lapisan. Kolom lapisan atas dan baris lapisan bawah tidak boleh diputar.
Walk-through
Mari kita mulai dengan array 4-layer, 2-baris, 3-kolom kecil:
[[[1,0,1],
[1,0,0]],
[[1,0,1],
[0,1,1]],
[[0,1,1],
[1,1,1]],
[[1,1,0],
[1,1,1]]]
Langkah pertama adalah mengevaluasi angka-angka yang dikodekan dalam biner oleh kolom dan baris setiap lapisan:
3 0 2
5 [[[1,0,1],
4 [1,0,0]],
2 1 3
5 [[1,0,1],
3 [0,1,1]],
1 3 3
3 [[0,1,1],
7 [1,1,1]],
3 3 1
6 [[1,1,0],
7 [1,1,1]]]
Lapisan pertama, [[1,0,1],[1,0,0]]
tidak akan memiliki kolomnya diputar, tetapi barisnya akan diputar secara siklis, masing-masing tersisa 5 langkah dan 3 langkah, sehingga menjadi [[1,1,0],[1,0,0]]
.
Lapisan kedua [[1,0,1],[0,1,1]]
,, akan memiliki kolomnya diputar secara siklis masing-masing hingga 3, 0, dan 2 langkah, memberi [[0,0,1],[1,1,1]]
, dan kemudian baris-baris tersebut diputar secara siklik ke kiri masing-masing 3 dan 7 langkah, tanpa perubahan yang terlihat.
Lapisan ketiga, [[0,1,1],[1,1,1]]
diputar ke atas 2, 1, dan 3 langkah tetap sama, dan juga tidak berputar kiri 6 dan 7 langkah melakukan apa pun.
Akhirnya, lapisan keempat, [[1,1,0],[1,1,1]]
diputar ke atas langkah 1, 3, dan 3 adalah [[1,1,1],[1,1,0]]
, tetapi barisnya tidak diputar setelah itu, karena itu adalah lapisan terakhir.
Menyatukan semua layer lagi, memberi kita array 3D self-rotated biner:
[[[1,1,0],
[1,0,0]],
[[0,0,1],
[1,1,1]],
[[0,1,1],
[1,1,1]],
[[1,1,1],
[1,1,0]]]
Contoh kasus:
[[[1,0,1],[1,0,0]],[[1,0,1],[0,1,1]],[[0,1,1],[1,1,1]],[[1,1,0],[1,1,1]]]
memberi
[[[1,1,0],[1,0,0]],[[0,0,1],[1,1,1]],[[0,1,1],[1,1,1]],[[1,1,1],[1,1,0]]]
[[[1]],[[1]],[[0]]]
memberi
[[[1]],[[1]],[[0]]]
[[[1,0,1],[1,0,1],[1,0,1]],[[0,0,1],[0,0,1],[0,0,1]],[[1,0,0],[1,0,1],[0,0,1]]]
memberi
[[[0,1,1],[0,1,1],[0,1,1]],[[0,1,0],[1,0,0],[0,1,0]],[[1,0,1],[1,0,1],[0,0,0]]]
None
selama pemotongan untuk rotasi saya percaya keduanya['0']
bisa menjadi[[]]
.