Santa, elflerin bir gecede çaldığı tüm hediyeleri yeniden üretmeyi başardı! Şimdi onları paketleme için montaj hattına göndermek zorunda. Genellikle elflerin iyi bir iş yaptığından emin olmak için montaj hattını denetleyecek bir kameraya sahiptir ve çünkü montaj hattı resimleri reklam afişlerinde güzel görünür [alıntı gerekli]
Ne yazık ki, kamerası bozuldu, bu yüzden montaj hattının nasıl görüneceğine dair bir simülasyon çizmenizi istiyor!
Montaj hattının maksimum verimlilikte çalışmasını sağlamak ve hata veya arıza riskini azaltmak için, mevcut tüm kutular aynı genişliğe sahiptir, böylece konveyör bandına mükemmel şekilde otururlar.
Meydan okuma
Boyutlarıyla temsil edilen hediyeler listesi verildiğinde, tüm hediyelerle birlikte bir konveyör bandı üretin.
Bir hediye şöyle çizilir:
+----+
/ /|
+----+ |
| | +
| |/
+----+
Bu hediye genişlik 1, yükseklik 2 ve uzunluk 4'e sahiptir. Artı işaretlerinin yan uzunluk için sayılmadığına dikkat edin, bu nedenle 4 uzunluğundaki bir hediye aslında 6 pozisyona yayılır.
Tüm hediyeler, en yakın iki karakter arasında bir boşluk olacak şekilde yan yana çizilir; yani, hediyelerin sol alt köşeleri, mevcut bir kutunun uzunluğu l
ve genişliği varsa w
, bir sonraki mevcut kutunun sol l + w + 4
alt köşesi, bir önceki kutunun sol alt köşesinin tam olarak sağında olacak şekilde aralıklıdır .
Mevcut tüm kutular çizildikten sonra, konveyör bandı, son width + 2
hatların her biri üzerindeki kutular arasındaki boşluğun alt çizgilerle değiştirilmesiyle çizilir .
Mevcut kutuları için son çıkış (l, w, h)
arasında [(4, 1, 2), (8, 1, 3), (1, 1, 1)]
olacaktır:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
Biçimlendirme Spesifikasyonları
Öğelerden birinin tüm liste boyunca tutarlı olduğu 3 genişliğin bir listesini almayı seçebilirsiniz (bu, genişlik olacaktır) veya mevcut genişliği ve ardından uzunluğu ve her bir yüksekliğin yüksekliği. Girişleri herhangi bir sırada ve makul bir formatta alabilirsiniz, ancak hediyeler giriş olarak verildiği sırada gösterilmelidir.
ASCII-art için herhangi bir makul çıktı formatı seçebilirsiniz (bir işlevden döndürme dahil).
Test Durumları
Bu test senaryoları [(l, w, h), ...]
format olarak verilmiştir .
[(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)
++
//|
// |
// |
++ |
|| |
|| |
|| |
+--------+ || |
/ /+_|| +
/ //__|| /
/ //___|| /
+--------+/____||/
+--------+_____++
kurallar
- Standart Loopholes Uygula
- Bu kod golfü , bu yüzden bayttaki en kısa cevap kazanıyor
- Hiçbir cevap kabul edilmeyecek
Not: Advent Of Code'dan bu meydan okuma serisi için ilham aldım . Bu siteyle hiçbir bağlantım yok
Buradaki ilk zorluğun 'Bağlantılı' bölümüne bakarak dizideki tüm zorlukların bir listesini görebilirsiniz .