มันเป็นวันเกิดของเพื่อนฉันในไม่ช้าและเนื่องจากเขาเป็นโปรแกรมเมอร์และคนรักงานศิลปะ ASCII ฉันคิดว่าฉันจะทำให้เขาเป็นเค้ก ASCII!
น่าเศร้าที่ฉันลืมอายุปัจจุบันของเขาดังนั้นฉันจึงต้องการมีโปรแกรมสำหรับเตาอบ ASCII ของฉันที่อบเค้กด้วยจำนวนเทียนที่ระบุดังนั้นฉันไม่ต้องทำเองถ้าฉันทำผิดกับเขา อายุ.
ASCII เตาอบเพียง แต่มีหน่วยความจำและความจุที่ จำกัด ดังนั้นจึงควรใช้ไบต์น้อยที่สุดที่เป็นไปได้
งานของคุณ:
เขียนโปรแกรมที่ส่งเค้กวันเกิดไปยังคอนโซลโดยมีเทียนให้มากที่สุดเท่าที่อินพุตระบุ
ข้อกำหนดเค้กคือ:
- มันจะต้องมีเส้นขอบสร้างขึ้นจากแนวนอน
-
และแนวตั้งเส้นและจุด|
+
- อย่างน้อย 5 ตัวอักษรกว้าง (รวมถึงชายแดนเค้ก
|
) - อย่างน้อย 5 ตัวอักษรสูง (รวมถึงชายแดนเค้ก
-
) - จะต้องมีตัวอักษรช่องว่าง
ระหว่างชายแดนเค้กและฐานเทียนแรก (ไม่ใช่เปลวไฟ) ในแต่ละด้านยกเว้นว่ามีเปลวไฟในพื้นที่นั้น เปลวไฟหรือเทียนฐานไม่ควรซ้อนทับขอบเค้ก
- ความกว้างสูงสุดของเค้กคือ 9 ตัวอักษรดังนั้นจึงมีสูงสุด 5 เทียนต่อแถว
- เนื่องจากเราไม่ต้องการให้เค้กของเราเป็นแบบสองมิติมันจะต้องมีความสูงเพิ่มอีก 2 แถวเพื่อให้ได้ปริมาตร เพิ่มชายแดนอื่นที่ด้านล่างและเชื่อมต่อจุดกับคนที่เหนือกว่าพวกเขาอีกครั้งใช้อักขระ ASCII จากด้านบน (
-
,|
และ+
)
ความต้องการเทียนคือ:
- ประกอบด้วยฐาน
|
และเปลวไฟ*
โดยมีเปลวไฟซ้อนอยู่ด้านบนของฐาน - เทียนอาจไม่ได้อยู่ติดกันกับคนอื่น ๆ ยกเว้นเส้นทแยงมุม
- เทียนถูกวางจากซ้ายไปขวาจากนั้นจากบนลงล่างโดยมี 5 ในหนึ่งบรรทัดที่สูงสุด
(หมายเหตุ: หากมีเทียน 5 อันในแถวก่อนหน้าแถวถัดไปอาจจะไม่ได้ 5 รวมทั้งเนื่องจากจะติดกัน)
หมายเหตุเพิ่มเติม:
- ความกว้างของเค้กขึ้นอยู่กับจำนวนเทียนในแถวแรกแต่ต้องมีอย่างน้อย 5 ตัวอักษรและสูงสุด 9 ตัว
- เทียนจะถูกเติมเต็มโดยเริ่มจากแถวบนสุดจากซ้ายไปขวา เมื่อหนึ่งแถวหากเต็มแล้วแถวถัดไปควรเริ่มต้นในแถวด้านล่างแถวแรก
การป้อนข้อมูล:
คุณอาจยอมรับตัวเลขในรูปแบบ (สมเหตุสมผล) ที่คุณต้องการ
สำหรับความท้าทายนี้คุณอาจคิดว่าตัวเลขอยู่ระหว่าง 0 ถึง 2 31 (ไม่รวม 0) แม้ว่าฉันจะไม่ยอมรับคนที่มีอายุเท่านี้
เอาท์พุท:
คุณสามารถส่งคืนสตริงหรือเขียนผลลัพธ์เค้กลงในเอาต์พุตคอนโซลโดยตรง
กฎ:
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- นี่คือcode-golfดังนั้นรหัสที่สั้นที่สุดเป็นไบต์ในภาษาใดก็ได้จะเป็นผู้ชนะ
ตัวอย่าง:
การป้อนข้อมูล: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
การป้อนข้อมูล: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
การป้อนข้อมูล: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
โชคดี!