Tugas
Diberikan elemen pembungkus dan array 3D yang tidak bergerigi, bungkus array atas, bawah, dan semua-sekitar. Anda harus menangani data karakter dan numerik, tetapi pembungkus dan sekarang akan memiliki tipe data yang sama.
Contoh karakter
Untuk data karakter, Anda dapat memilih untuk menangani array 3D karakter tunggal atau array string 2D:
Diberikan array karakter 2 layer, 2 baris, 4 kolom
[[["Y","o","u","r"],
["g","i","f","t"]],
[["g","o","e","s"],
["h","e","r","e"]]]
dan karakter "."
, jawab array karakter 4 layer, 4 baris, 6 kolom
[[[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".","Y","o","u","r","."],
[".","g","i","f","t","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".","g","o","e","s","."],
[".","h","e","r","e","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."]]]
atau diberi 2 baris, 2 larik kolom string 4-karakter
[["Your",
"gift"],
["goes",
"here"]]
dan karakter "."
, jawab deretan 4 baris, 4 kolom string 6-karakter
[["......",
"......",
"......",
"......"],
["......",
".Your.",
".gift.",
"......"],
["......",
".goes.",
".here.",
"......"],
["......",
"......",
"......",
"......"]]
Contoh numerik
Diberikan 2 layer, 2 baris, 2 array numerik kolom
[[[1,2],
[3,4]],
[[5,6],
[7,8]]]`
dan nomornya 0
, jawab larik numerik 4 layer, 4 baris, 4 kolom
[[[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]],
[[0,0,0,0],
[0,1,2,0],
[0,3,4,0],
[0,0,0,0]],
[[0,0,0,0],
[0,5,6,0],
[0,7,8,0],
[0,0,0,0]],
[[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]]]
Jawaban:
J ,
1615 byteIni adalah kata kerja anonim. Cobalah online!
Terima kasih kepada Adám selama 1 byte!
Penjelasan
sumber
h=.,,[
JavaScript (ES6), 97 byte
Di mana
a
array tiga dimensi dane
pembungkusnya. Secara otomatis mengkonversi array string dua dimensi ke array karakter tiga dimensi. Versi alternatif untuk kapana
adalah array string dua dimensi dane
merupakan karakter dan Anda ingin mengembalikan array string dua dimensi:sumber
e
.Oktaf,
2327 bytearray:
a
padval:
p
Itu bisa disebut sebagai:
coba (tempel!) di Octave Online
Catatan: jawaban sebelumnya diasumsikan padval default
sumber
Python,
106104126 byteDisebut sebagai
w(gift, wrapping character)
. Dapat menggunakan notasi string dan array. Cobalah online!sumber
Perl 6, 86 byte
Sebuah lambda yang menggunakan array 3D dan karakter pembungkus sebagai argumen.
sumber
Dyalog APL ,
31191312 byteHampir transliterasi (31 byte) dari solusi @ Zgarb .
Fungsi anonim. Argumen kiri adalah pembungkus, argumen kanan adalah hadiah.
⊣h⍤1
h diterapkan, dengan argumen kiri fungsi anonim, ke kolom⊣h⍤2
h diterapkan, dengan argumen kiri fungsi anonim, ke barish←
h diterapkan pada sel-sel utama yaitu lapisan argumen fungsi anonim, di mana h adalah⍪
argumen kiri dipertalikan dengan argumen kanan⍪
ditambahkan ke⊣
argumen kiriDengan kata lain, h adalah fungsi yang mengelilingi argumen kanannya (hadiah) dengan argumen kiri (pembungkusnya). h kemudian diterapkan ke lapisan hadiah, lalu baris itu, dan akhirnya kolom itu.
TryAPL online!
Solusi Dyalog APL versi 16.0 ini (19 byte - milik @ngn ) menangani sejumlah dimensi:
⍵
hadiah@(
ditempatkan di1+
satu ditambah⍳
semua indeks⍴⍵
bentuk hadiah)⊢
dalam array yang terdiri dari⍺⍴⍨
bungkusnya dibentuk kembali menjadi bentuk2+
dua ditambahkan ke⍴⍵
bentuk hadiahDengan kata lain, kami membuat array yang seluruhnya terdiri dari elemen pembungkus, yang di setiap dimensi dua elemen lebih besar dari hadiah, lalu kami menempatkan hadiah ke dalam array itu (dengan demikian menggantikan elemen pembungkus di posisi-posisi itu) dengan mengimbangi satu dari tepi, yaitu di tengah.
Penemuan saya sendiri (-1 terima kasih kepada @ngn ):
Ini menerapkan fungsi-kereta anonim 6 kali, setiap kali dengan pembungkus sebagai argumen kiri, dan hasil dari aplikasi sebelumnya sebagai argumen yang benar (meskipun pertama kali di sekitarnya akan menjadi hadiah yang tidak dimodifikasi):
(
fungsi-kereta anonim⌽
kolom terbalik dari2 3 1⍉
transposisi baris-ke-lapisan, kolom-ke-baris, layer-ke-kolom,
bungkusnya diikuti oleh hadiah)⍣6
diterapkan enam kaliDengan kata lain, kami menambahkan lapisan pembungkus di bagian atas array, lalu melengkung sehingga sisi berikutnya diputar ke posisi lapisan atas, siap untuk putaran pembungkus berikutnya. Ini diulangi sebanyak enam kali, dengan lilitan akhir memposisikan semua sumbu ke urutan semula.
TryAPL online!
sumber
05AB1E ,
343331 byteCobalah online! (string) atau Coba online! (numerik)
sumber
Ruby, 89 byte
Pernahkah saya memberi tahu Anda bahwa saya hanya di sini untuk belajar ruby? :-)
sumber