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 .