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[[]]
.APL + WIN,
5339 byteTerima kasih banyak untuk Adim karena telah menghemat 14 byte
Cobalah online! Atas perkenan Dyalog Classic
Meminta input array 3d dari formulir:
yang menghasilkan:
Penjelasan:
sumber
¨
, cukup proses seluruh array sekaligus. Cobalah online!R ,
226216205 byte-21 byte berkat digEmAll
Cobalah online!
sumber
05AB1E ,
4139 byteIni terasa terlalu lama .. Pasti bisa bermain golf lagi.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Bahasa Wolfram (Mathematica) ,
138131125123 byteCobalah online!
Map[Thread]
setara denganTranspose[a, {1,3,2}]
, yang mentransposisi kolom dan baris.Fold[#+##&]
lebih pendek daripadaIntegerDigits[#,2]
untuk mengkonversi dari biner.sumber