Santa mampu membuat ulang semua hadiah yang mencuri peri semalaman! Sekarang dia harus mengirim mereka ke jalur perakitan untuk pengemasan. Dia biasanya memiliki kamera untuk mengawasi perakitan baris kedua untuk memastikan para elf melakukan pekerjaan yang baik dan karena jalur perakitan gambar terlihat bagus di poster iklan [kutipan dibutuhkan]
Sayangnya, kameranya rusak, jadi dia ingin Anda menggambar simulasi seperti apa garis perakitan nantinya!
Agar jalur perakitan tetap bekerja pada efisiensi maksimum dan untuk mengurangi risiko kesalahan atau kegagalan, semua kotak yang ada memiliki lebar yang sama sehingga pas di sabuk konveyor.
Tantangan
Diberikan daftar hadiah yang diwakili oleh dimensi mereka, menampilkan sabuk konveyor dengan semua hadiah.
Hadiah diambil seperti ini:
+----+
/ /|
+----+ |
| | +
| |/
+----+
Hadiah ini memiliki lebar 1, tinggi 2, dan panjang 4. Perhatikan bahwa tanda plus tidak dihitung untuk panjang sisi, jadi hadiah dengan panjang 4 sebenarnya mencakup 6 posisi.
Semua hadiah digambar bersebelahan dengan satu ruang di antara dua karakter terdekat; yaitu, sudut kiri bawah dari hadiah diberi jarak sedemikian rupa sehingga jika kotak sekarang memiliki panjang l
dan lebar w
, sudut kiri bawah kotak hadiah berikutnya akan persis l + w + 4
posisi tepat dari sudut kiri bawah kotak sebelumnya.
Setelah semua kotak yang ada digambar, ban berjalan ditarik dengan mengganti ruang antar kotak pada masing-masing width + 2
garis terakhir dengan garis bawah.
Hasil akhir untuk kotak hadir dengan (l, w, h)
dari [(4, 1, 2), (8, 1, 3), (1, 1, 1)]
akan menjadi:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
Spesifikasi Format
Anda dapat memilih untuk mengambil daftar 3-tupel di mana salah satu elemen konsisten di seluruh daftar (yang akan menjadi lebar), atau Anda dapat mengambil lebar sekarang dan kemudian daftar 2-tupel mewakili panjang dan ketinggian setiap hadiah. Anda dapat mengambil input dalam urutan apa pun dan dalam format apa pun yang masuk akal, tetapi hadiah harus ditampilkan dalam urutan yang sama dengan yang diberikan sebagai input.
Anda dapat memilih format output yang wajar untuk seni ASCII (termasuk kembali dari fungsi).
Uji Kasus
Kasing uji ini diberikan sebagai [(l, w, h), ...]
format.
[(4, 1, 2), (8, 1, 3), (1, 1, 1)]:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
[(5, 3, 4), (8, 3, 1), (1, 3, 7)]:
+-+
/ /|
/ / |
+-----+ / / |
/ /| +-+ |
/ / | | | |
/ / | +--------+ | | |
+-----+ | / /| | | |
| | +___/ / +_| | +
| | /___/ / /__| | /
| | /___+--------+ /___| | /
| |/____| |/____| |/
+-----+_____+--------+_____+-+
[(0, 0, 0)] (this is the most interesting test case ever :P)
++
+++
++
[(8, 3, 0), (0, 3, 8)] (more zero cases)
++
//|
// |
// |
++ |
|| |
|| |
|| |
+--------+ || |
/ /+_|| +
/ //__|| /
/ //___|| /
+--------+/____||/
+--------+_____++
Aturan
- Celah Standar Berlaku
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang
- Tidak ada jawaban yang akan diterima
Catatan: Saya mendapat inspirasi untuk seri tantangan ini dari Advent Of Code . Saya tidak memiliki afiliasi dengan situs ini
Anda dapat melihat daftar semua tantangan dalam seri dengan melihat bagian 'Tertaut' dari tantangan pertama di sini .
Jawaban:
Arang ,
9681 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Input adalah lebar pada baris pertama, kemudian dimensi lain pada baris berikut, diakhiri dengan baris kosong. Penjelasan:
Masukkan lebar.
Lingkarkan ke garis yang tersisa sampai garis kosong tercapai.
Tarik sabuk di antara hadiah. The
u
variabel adalah standar untuk daftar kosong, yang karenanya tidak apa-apa pada lulus pertama, sementara nanti itu berakhir dengan satu elemen, menyebabkan kode ini untuk menjalankan sekali. (Menggunakanif
akan kurang golf.)Membagi dimensi di ruang, melemparkannya ke bilangan bulat, dan menyimpannya
u
.Hapus dimensi terakhir dan simpan di
p
.Salin dimensi pertama
r
, tetapi biarkanu
hingga sabuk ditarik pada loop berikutnya.Hapus bagian dalam hadiah, jika ikat pinggang tumpang tindih.
Gambarlah garis interior masa kini.
Gambarlah setengah di sekitar bagian luar hadiah, lalu ulangi untuk setengah lainnya.
sumber
Pip ,
160154 byte153 byte kode, +1 untuk
-l
bendera.Ini adalah fungsi yang mengambil daftar daftar yang berisi
[width height length]
. Cobalah online!Bagaimana?
Penjelasan tingkat atas:
Tinggalkan komentar dan saya akan menambahkan penjelasan yang lebih rinci.
sumber
Python 2 , 508 byte
Cobalah online!
Mengambil daftar daftar
[height, width, length]
sumber