ข้อจำกัดความรับผิดชอบ: เรื่องราวที่บอกไว้ในคำถามนี้เป็นเรื่องสมมติทั้งหมดและคิดค้นขึ้นเพื่อวัตถุประสงค์ในการให้คำแนะนำ
ฉันมีเพื่อนที่เป็นสถาปนิกและหลังจากอธิบายแนวคิดของ code-golf และเว็บไซต์นี้ให้เขาแล้วเขาบอกว่าฉันควรเขียนโค้ดบางอย่างที่มีประโยชน์สำหรับการเปลี่ยนแปลง ฉันถามเขาว่าสิ่งใดที่เขาคิดว่ามีประโยชน์และในฐานะสถาปนิกเขาตอบว่าเขาจะสนุกกับการวางแผนพื้นที่ให้การเตรียมการที่เป็นไปได้ทั้งหมดสำหรับห้องขนาดบางขนาดภายในบ้านที่มีขนาดที่แน่นอน ฉันคิดว่าฉันจะพิสูจน์ว่า code-golf ไม่ได้ไร้ประโยชน์เลยและให้โปรแกรมนี้แก่เขาด้วยจำนวนไบต์ที่น้อยที่สุดเท่าที่จะเป็นไปได้
งานของคุณ:
เขียนโปรแกรมหรือฟังก์ชั่นที่เมื่อได้รับอาเรย์ D ที่มีขนาดของทั้งบ้านและอาเรย์ที่สองที่มีขนาดของห้องภายในออกเป็นศิลปะ ASCII การกำหนดค่าที่เป็นไปได้ทั้งหมดของห้องภายในบ้าน
ห้องพักทุกห้องและผนังด้านนอกของบ้านควรสร้างเป็นกล่อง ASCII มาตรฐานโดยใช้ | สัญลักษณ์สำหรับผนังแนวตั้งสัญลักษณ์ - เป็นผนังแนวนอนและสัญลักษณ์ + สำหรับมุม ตัวอย่างเช่นบ้านที่มีขนาด [4,4] จะมีลักษณะดังนี้:
+----+
| |
| |
| |
| |
+----+
อย่างที่คุณเห็นมุมไม่นับรวมเป็นส่วนหนึ่งของชุดข้อมูล จำนวน - หรือ | อักขระที่สร้างด้านข้างควรเท่ากับจำนวนที่กำหนดในมิติข้อมูล ห้องพักอาจแชร์ผนังหรือแชร์กำแพงกับบ้าน ห้องอาจไม่ประกอบด้วยห้องขนาดเล็กภายในตัวเอง
ตัวอย่างเช่นการกำหนดค่า
+--+---+-+
| | | |
| | | |
+--+---+ |
| |
| |
+--------+
ถูกต้องสำหรับ D = [5,8] และ R = [[2,2], [2,3]]
การป้อนข้อมูล:
สองอาร์เรย์หนึ่งในนั้นมีสองจำนวนเต็มขนาดสำหรับบ้านและอื่น ๆ ที่มีชุดของอาร์เรย์ที่มีมิติสำหรับห้องพัก
เอาท์พุท:
อาเรย์ของบ้านที่เป็นไปได้ทั้งหมดเป็นสตริงหรือสตริงที่มีบ้านที่เป็นไปได้ทั้งหมดคั่นด้วยวิธีที่สอดคล้องกัน โปรดทราบว่าควรนับการหมุนของการกำหนดค่าเดียวกันที่แน่นอนหนึ่งครั้งเท่านั้น
กรณีทดสอบ:
D R -> Output
[4,3] [[2,1],[4,1]] -> +-+-+ +-+-+ +-+-+ Note that though there is an option to switch which side the [2,1] room and the [4,1] room are on, doing so would merely be rotating the house by 180 degrees, and therefore these possibilities do not count.
| | | +-+ | | | |
+-+ | | | | | | |
| | | | | | +-+ |
| | | +-+ | | | |
+-+-+ +-+-+ +-+-+
[4,7] [[3,1],[4,2],[2,2] -> +----+--+ +----+--+ +----+--+ +----+--+ There are some more possiblities I didn't feel like adding, but it's the same four again, just with the [4,2] and the [2,2] room switched.
| | | | | | | | | | | |
| | | | | | | | | | | |
+---++--+ +--+-+-++ +-+--++-+ ++---+--+
| | | | | || | | | | || | |
+---+---+ +--+---++ +-+---+-+ ++---+--+
เกณฑ์การให้คะแนน:
นี่คือโค้ดกอล์ฟคะแนนต่ำสุดเป็นไบต์ชนะ!
D = [4,2]
แต่บ้านของคุณ[4,3]
ใช่มั้ย