ซานต้าสามารถผลิตของขวัญทั้งหมดที่เอลฟ์ขโมยคืนได้! ตอนนี้เขาต้องส่งพวกเขาไปยังสายการประกอบบรรจุภัณฑ์ เขามักจะมีกล้องเพื่อควบคุมสายการประกอบทั้งสองเพื่อให้แน่ใจว่าพวกเอลฟ์ทำงานได้ดีและเนื่องจากรูปภาพไลน์ประกอบดูดีบนโปสเตอร์โฆษณา[จำเป็นต้องมี]
น่าเสียดายที่กล้องของเขาพังดังนั้นเขาอยากให้คุณวาดแบบจำลองของสายการประกอบว่าจะเป็นอย่างไร!
เพื่อให้สายการประกอบทำงานอย่างมีประสิทธิภาพสูงสุดและเพื่อลดความเสี่ยงของข้อผิดพลาดหรือความล้มเหลวกล่องที่มีอยู่ทั้งหมดจะมีความกว้างเท่ากันเพื่อให้พอดีกับสายพานลำเลียงอย่างสมบูรณ์
ท้าทาย
รับรายการของขวัญที่แสดงตามขนาดของมันเอาท์พุทสายพานลำเลียงพร้อมของนำเสนอทั้งหมด
ของขวัญถูกดึงออกมาเช่น:
+----+
/ /|
+----+ |
| | +
| |/
+----+
ของขวัญนี้มีความกว้าง 1 ความสูง 2 และความยาว 4 โปรดทราบว่าเครื่องหมายบวกจะไม่นับสำหรับความยาวด้านดังนั้นของขวัญที่มีความยาว 4 จะครอบคลุมตำแหน่งจริง 6 ตำแหน่ง
ของขวัญทั้งหมดจะถูกวาดติดกันโดยมีช่องว่างหนึ่งช่องระหว่างอักขระสองตัวที่ใกล้เคียงที่สุด นั่นคือมุมซ้ายล่างของของขวัญถูกเว้นระยะเช่นถ้ากล่องของขวัญมีความยาวl
และความกว้างw
มุมซ้ายล่างของกล่องของขวัญถัดไปจะเป็นl + w + 4
ตำแหน่งที่ถูกต้องของมุมซ้ายล่างของกล่องก่อนหน้า
หลังจากดึงกล่องที่มีอยู่ทั้งหมดแล้วสายพานลำเลียงจะถูกดึงโดยแทนที่ช่องว่างระหว่างกล่องในแต่ละwidth + 2
บรรทัดสุดท้ายด้วยขีดล่าง
ผลลัพธ์สุดท้ายสำหรับกล่องปัจจุบันที่มี(l, w, h)
ของ[(4, 1, 2), (8, 1, 3), (1, 1, 1)]
จะเป็น:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
การจัดรูปแบบข้อมูลจำเพาะ
คุณสามารถเลือกที่จะใช้รายการของ 3 tuples ที่หนึ่งในองค์ประกอบที่สอดคล้องกันในรายการทั้งหมด (ที่จะเป็นความกว้าง) หรือคุณสามารถใช้ความกว้างปัจจุบันและจากนั้นรายการของ 2-tuples แสดงความยาวและ ความสูงของแต่ละปัจจุบัน คุณสามารถรับอินพุตในลำดับใดก็ได้และในรูปแบบที่เหมาะสม แต่ต้องแสดงของขวัญตามลำดับเดียวกับที่ได้รับเป็นอินพุต
คุณสามารถเลือกรูปแบบผลลัพธ์ที่เหมาะสมสำหรับ ASCII-art (รวมถึงการส่งคืนจากฟังก์ชัน)
กรณีทดสอบ
กรณีทดสอบเหล่านี้มี[(l, w, h), ...]
รูปแบบ
[(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)
++
//|
// |
// |
++ |
|| |
|| |
|| |
+--------+ || |
/ /+_|| +
/ //__|| /
/ //___|| /
+--------+/____||/
+--------+_____++
กฎระเบียบ
- ช่องโหว่มาตรฐานใช้
- นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
- จะไม่ยอมรับคำตอบ
หมายเหตุ: ผมดึงแรงบันดาลใจสำหรับชุดความท้าทายนี้จากการจุติของรหัส ฉันไม่มีส่วนเกี่ยวข้องกับเว็บไซต์นี้
คุณสามารถดูรายการของความท้าทายทั้งหมดในซีรีส์โดยดูที่ส่วน 'เชื่อมโยง' ของความท้าทายแรกที่นี่