การป้อนข้อมูล:
- คุณได้รับชุดจำนวนเต็ม (ป้อนผ่าน stdin หรือพรอมต์)
- เลขจำนวนเต็มทุกคู่ในชุดนี้แสดงถึงความกว้างของอาคาร [ช่วงที่ถูกต้อง: 1..10] และสูง [ช่วงที่ถูกต้อง: 0..10]
- สมมติว่าอินพุตเป็นรูปแบบที่ถูกต้อง
ตัวอย่างอินพุต (บรรทัดที่สองใช้สำหรับการสาธิตเท่านั้น):
1 2 1 1 1 0 2 4 1 3 1 2 2 1 WHWHWHWHWHWHWH
ผลลัพธ์ตัวอย่างที่สอดคล้องกัน:
______ / ______ / | | | | __ | | / __ / | __ | | | | __ / __ / | | | | / __ / | | | | __ | | | | | ______ | | / __ / | | | | | / ______ / | | | | | _ | | | | | | | _o_ | _o_ | / __ | _O _____ | _o_ | _o_ | _O _____ | / ------------------------------------- - - - - - - - - - - - - -------------------------------------
กฎ:
สิ่งก่อสร้าง
- Building Block พื้นฐานดูเหมือนว่านี้ (1 W, 1H)
__ / __ / | (ฐาน cube ยืมมาจากก้อนที่คำถามนี้: | | | http://stackoverflow.com/questions/1609702/code-golf-playing-cubes) | ___ | /
มุมมองของเราคือ (ahum) ~ 3D ดังนั้นอาคารใกล้เคียงอาจซ่อนบางส่วนของผู้อื่น สิ่งปลูกสร้างนั้น 'ลอจิคัล' แสดงผลจากซ้ายไปขวา
สิ่งก่อสร้างแรกจะถูกนำหน้าด้วยสองช่องว่างทางด้านซ้าย
คุณสร้างทุกสิ่งปลูกสร้างโดยใช้ WIDTH และ HEIGHT กับมิติของคิวบ์ฐาน (ดูที่ตัวอย่างผลลัพธ์ที่มีให้!) สำหรับการอ้างอิง: จำนวนตัวอักษรจากซ้ายไปขวา 'ผนัง' (สำหรับอาคารที่มี W> 1): (W * 5) - (W-1)
สิ่งปลูกสร้างที่มีความสูง> 0 มีหนึ่งประตู (ซึ่งแสดงโดยตัวละคร
o
และตั้งอยู่ที่อักขระสองตัวจากผนัง 'ซ้าย' ในแถว 'ด้านล่าง')
ถนน:
- ถนนประกอบด้วยสามส่วนที่เราจะเรียกว่า 'บน', 'กลาง' และ 'ด้านล่าง'
- ส่วน 'ด้านบน' และ 'ด้านล่าง' เหมือนกันนอกเหนือจากข้อเท็จจริงที่ว่าส่วน 'ด้านบน' นำหน้าด้วยช่องว่างสองช่อง
- ส่วนตรงกลางนำหน้าด้วยหนึ่งช่องว่างและประกอบด้วยการทำซ้ำของรูปแบบต่อไปนี้:
'-'
- ความยาวจะถูกกำหนดโดยความกว้างทั้งหมดของอาคารรวม: ส่วนที่ด้านขวาสุดของถนนสอดคล้องกับตำแหน่งของผนัง 'ขวา' ของอาคาร 'สุดท้าย'
ผู้ชนะ:
นี่คือรหัสกอล์ฟ! ผู้ชนะคือผู้เข้าแข่งขันที่มีคุณสมบัติพร้อมทางออกที่สั้นที่สุด (ตามการนับซอร์สโค้ด) แหล่งที่มาต้องประกอบด้วยอักขระ ASCII ที่พิมพ์ได้เท่านั้น มีความสุข!
คะแนนโบนัสจินตนาการสำหรับหน้าต่าง (สุ่ม) รถยนต์หรือคนเดินเท้า
อย่าลังเลที่จะแสดงความคิดเห็นหากข้อกำหนดไม่ชัดเจน!
'- '
(มีสองช่องว่าง) หรือไม่ แก้ไข : อ้าทั้งสองช่องว่างไม่แสดง: P คุณสามารถแสดงช่องว่างหลายช่องโดยใช้ ASCII 255 (พื้นที่ไม่แตก, ALT + 255 บน numpad) หรือโดยการคัดลอกและวางจากความคิดเห็นของฉันที่นี่ ออร์ ... คุณสามารถบอกได้ว่ามันเป็นการทำซ้ำของ' - '
:)
but you must not enforce this
ใน 3) IMO มีข้อสันนิษฐานใด ๆ ที่สามารถนำไปใช้ประโยชน์หากคะแนนของคุณเพิ่มขึ้น ดังนั้นผมอาจจะเขียนโค้ดที่เพียงทำงานหากความกว้างทั้งหมดน้อยกว่า 80 ถ้าฉันสามารถบีบออกนับจำนวนตัวอักษรที่ต่ำกว่า ตัวอย่างเช่นการเขียนเอาต์พุตไปยังอาร์เรย์บัฟเฟอร์การแสดงผลที่มีความกว้าง 80 ดังนั้นจึงจะขัดข้องกับความกว้างทั้งหมดที่สูงกว่า หากคุณต้องการความกว้างที่รองรับอย่าให้สมมติฐาน - คุณไม่มีทั้งคู่: P