Secara manual menjumlahkan wajah kubus kubus itu membosankan dan memakan waktu, agak seperti menulis kode dalam kubus itu sendiri.
Dalam cubifier paling efisien , saya meminta Anda untuk menerjemahkan ASCII ke sumber Cubically. Salah satu jawaban di sana menggunakan urutan inisialisasi kubus dan kemudian memodifikasi kubus yang dihasilkan berdasarkan jumlah kubus pra-diinisialisasi. Metode ini telah digunakan di banyak program yang berhubungan dengan Cubic. Saat menguji urutan inisialisasi baru, kita harus menambahkan semua nilai pada semua wajah, yang biasanya memakan waktu dua atau tiga menit.
Tugas Anda adalah mengotomatiskan proses ini untuk kami!
Anda akan mengambil dua input, integer n
dan string c
. Ini dapat dibaca dari argumen baris perintah, argumen fungsi, input standar, file, atau kombinasi dari semuanya. c
akan menjadi kubus memori kubik dengan ukuran yang n
cukup dicetak oleh penerjemah.
Juru bahasa Cubs membuang kubusnya ke STDERR setelah penghentian program, diformat dengan baik untuk tampilan sederhana. Jalankan program kosong dalam juru bahasa Cubically dan buka bagian debug untuk melihat pembuangan kubus dari sebuah kubus diinisialisasi. Tambahkan argumen 4
untuk melihat 4x4x4, atau 5
untuk melihat 5x5x5, dll.
Jika n
3, c
akan mengikuti format ini (bilangan bulat akan menjadi variabel):
000
000
000
111222333444
111222333444
111222333444
555
555
555
Spasi, baris baru, dan semua. Jika n
4, c
akan terlihat seperti ini (juga dengan variabel integer):
0000
0000
0000
0000
1111222233334444
1111222233334444
1111222233334444
1111222233334444
5555
5555
5555
5555
Dll.
Program Anda akan menghasilkan enam bilangan bulat. Bilangan bulat pertama adalah jumlah dari semua angka di permukaan atas.
000
000 top face
000
111222333444 left, front, right, and back faces, respectively
111222333444
111222333444
555
555 bottom face
555
Bilangan bulat kedua adalah jumlah dari wajah kiri, ketiga di depan, keempat di kanan, kelima di belakang dan keenam di bawah.
Jadi jika n
3 dan c
ini:
242
202
242
000131555313
010121535343
000131555313
424
454
424
Program Anda akan menampilkan 20 1 14 43 24 33
.
Aturan tambahan:
- Bilangan bulat output harus dibatasi oleh karakter non-integer. Anda juga dapat memilih untuk mengembalikan array.
- Anda dapat mengasumsikan bahwa inputnya benar -
n
adalah bilangan bulat danc
merupakan kubus dari hasil debugging Cubically . Jadi, jikan
itu3.0
danc
itufoo bar
, program anda bisa istirahat dan masih berlaku. - Program Anda hanya perlu bekerja untuk
n > 1
dann < 1260
. Ini mungkin (mencoba untuk) menangani ukuran kubus yang lebih besar atau lebih kecil, tetapi tidak perlu.
Ini kode-golf , jadi kode terpendek menang! Jika Anda butuh bantuan, silakan bertanya di ruang obrolan Cubically .
sumber
n
spasi setelah setiap baris, tidak. Mereka tidak termasuk dalam dump.Jawaban:
Jelly ,
161413 byte3 byte berkat Erik the Outgolfer.
Cobalah online!
sumber
Z
:ḟ⁶ỴV€€sS€ẎsS€
(atauḟ⁶ỴV€€sS€FsS€
)Python 2 ,
155150147123121120 byteMungkin bisa bermain golf sedikit
Sunting: -5 byte dengan menggunakan metode yang lebih baik untuk menghapus spasi putih
Sunting: -3 bytes berkat @Leaky Nun
Edit: -24 byte dengan tidak menghapus spasi putih
Edit: -2 byte dengan mengeksploitasi prioritas
Cobalah online!
sumber
05AB1E , 16 byte
Cobalah online!
sumber
Sekam , 15 byte
3
ṁ
detik dan 2m
detikCobalah online!
Penjelasan
sumber
mṁṁi
sangat bagus!Oktaf,
645954 byteCobalah online!
Jawaban sebelumnya:
Cobalah online!
Mengembalikan array sebagai output.
sumber
Perl 5 , 66 + 1 (-n) = 67 byte
Cobalah online!
sumber
Python 2 ,
137127 byte-10 byte berkat @Halvard Hummel
Cobalah online!
sumber
Haskell, 128 byte
Menerima string dengan jeda baris.
sumber
PowerShell , 236 byte
Cobalah online!
Ooof, ini panjang. Tapi, membelah dan mengiris senar bukanlah salah satu dari kekuatan kuat PowerShell, jadi kurasa itu agak diharapkan. Juga - Jadi Banyak. Dolar
Mengambil parameter
$n
dan$z
sebagai ukuran dan kubus bersih, masing-masing. Kemudian membangun fungsi yang digunakan di seluruh. Di sini, kami menghapus spasi, memisahkan setiap digit individu, menghapus karakter kosong di antaranya, menggabungkan semua karakter bersama dengan+
, dan kemudian menjalankan pernyataan yang dihasilkan untuk mendapatkan nomor. Sebagai contoh, ini berubah"123"
menjadi1+2+3
ketika dieksekusi6
.Baris berikutnya
split
adalah jaring kubus input pada baris baru, menyimpan hasilnya ke dalam array$a
. Kami kemudian melakukan fungsi pada$n
baris pertama dan menampilkan permukaan atas kubus.Untuk set berikutnya, kita perlu menyambung string berdasarkan pada ukuran kubus. Jadi, kita loop melalui setiap baris, membangun
$x
sebagai pola regex yang sesuai (misalnya, untuk ukuran$n=3
ini akan"(...)"
), membagi string berdasarkan pola itu, lagi-lagi menghapus elemen kosong, dan menyimpannya menjadi empat variabel yang mewakili empat wajah. Itu kemudian string digabungkan keh
melaluik
.Baris berikutnya kemudian dikirimkan
h
melaluik
fungsi untuk menampilkan sisi (kiri, depan, kanan, belakang) dari kubus.Akhirnya, kita menjalankan
$n
baris terakhir melalui fungsi untuk menampilkan permukaan bawah kubus.Semua angka dibiarkan dalam pipa, dan hasilnya tersirat.
sumber
APL (Dyalog Classic) ,
3027 byteDicukur 3 byte berkat @ Adám
⍺
is n⍵
is cPenjelasan
Cobalah online!
sumber
⊆
dengan⎕U2286
hanya akan menambah 5 byte.3
dan⍺
.(6,⍺*2)
→6(⍺*2)
,
setelah⍴
seperti⍴
selalu menggunakan argumen yang benar dalam urutan ravel.Secara kubik , 19 byte
Mengambil kubus dari STDIN dan ukurannya sebagai argumen baris perintah ke penerjemah. Menghasilkan jumlah wajah atas, byte nol, wajah kiri, byte nol, ... wajah bawah, dan byte nol.
Cobalah online! ... yang tampaknya menampilkan byte nol sebagai semacam spasi di browser saya.
Bahasa ini tidak dibuat untuk tantangan ini, tetapi tantangan itu dibuat untuk bahasa .... apakah itu masih curang? ;)
sumber