อินพุต
ข้อมูลที่คุณป้อนในการท้าทายนี้คือรายการคู่จำนวนเต็ม พวกเขาเป็นตัวแทนของมุมหน่วยตะวันตกเฉียงใต้ของหน่วยสี่เหลี่ยมบนเครื่องบินและรายการแสดงถึงสหภาพของพวกเขาเป็นส่วนย่อยของเครื่องบิน ตัวอย่างเช่นรายการ
[(0,0),(1,0),(0,1),(1,1),(2,1),(1,2),(2,2)]
แสดงถึงชุดสีแดงในภาพนี้:
เอาท์พุต
Yor output เป็นรายการของ quadruples จำนวนเต็มซึ่งเป็นตัวแทนเซ็ตย่อยของเครื่องบิน อย่างชัดเจนมากขึ้นเป็นสี่เท่า(x,y,w,h)
reperents สี่เหลี่ยมผืนผ้ากว้างw > 0
และความสูงที่มีมุมตะวันตกเฉียงใต้ที่h > 0
(x,y)
สี่เหลี่ยมต้องเป็นรูปแบบที่ถูกต้องครอบคลุมของภูมิภาคอินพุตในแง่ที่ว่าแต่ละหน่วยสี่เหลี่ยมเป็นส่วนย่อยของสี่เหลี่ยมบางส่วนแต่ละสี่เหลี่ยมเป็นส่วนย่อยของภูมิภาคและสองสี่เหลี่ยมอาจทับซ้อนกันที่ชายแดนของพวกเขาเท่านั้น ในการห้ามวิธีแก้ปัญหาเล็ก ๆ น้อย ๆ การครอบคลุมจะต้องไม่มีสี่เหลี่ยมสองรูปที่สามารถผสานเป็นสี่เหลี่ยมขนาดใหญ่กว่าได้
ตัวอย่างเช่นรายการ
[(0,0,2,1),(0,1,3,1),(1,2,2,1)]
แสดงถึงความคุ้มครองทางกฎหมาย
ของภูมิภาคด้านบนในขณะที่ครอบคลุมโดย
[(0,0,2,2),(2,1,1,1),(1,2,1,1),(2,2,1,1)]
เป็นสิ่งผิดกฎหมายเนื่องจากสี่เหลี่ยม 1 ต่อ 1 ที่อยู่ใกล้เคียงสามารถรวมกันได้:
กฎระเบียบ
คุณสามารถให้โปรแกรมเต็มหรือฟังก์ชั่น การจัดรูปแบบที่แม่นยำของอินพุตและเอาต์พุตไม่สำคัญเนื่องจากเหตุผล การนับไบต์ที่สั้นที่สุดชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต ขอแนะนำให้คุณอธิบายอัลกอริทึมของคุณและตัวอย่างผลลัพธ์บางส่วน
กรณีทดสอบ
ภูมิภาครูปตัวยู:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(2,0),(2,1),(3,0),(3,1),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5)]
สามเหลี่ยมขนาดใหญ่:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(0,9),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(6,0),(6,1),(6,2),(6,3),(7,0),(7,1),(7,2),(8,0),(8,1),(9,0)]
สี่เหลี่ยมจัตุรัสที่มีรู:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(3,0),(3,1),(3,2),(3,4),(3,5),(3,6),(3,7),(3,8),(3,9),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,7),(5,8),(5,9),(6,1),(6,2),(6,3),(6,5),(6,6),(6,7),(6,8),(6,9),(7,0),(7,1),(7,2),(7,3),(7,4),(7,5),(7,6),(7,7),(7,8),(7,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,4),(9,5),(9,6),(9,7),(9,8),(9,9)]
ภูมิภาคที่ไม่เชื่อมต่อ:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(4,0),(4,1),(4,2),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,6),(5,7),(5,8),(5,9),(6,0),(6,1),(6,2),(6,4),(6,5),(6,6),(6,7),(6,8),(6,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,7),(9,8),(9,9),(10,0),(10,1),(10,2),(10,3),(10,4),(10,5),(10,6),(10,7),(10,8),(10,9)]
ตรวจสอบ
ใช้นี้งูหลาม 2 โปรแกรมเพื่อตรวจสอบวิธีการแก้ปัญหาของคุณ มันใช้จาก STDIN รายการของ tuples (อินพุต) และรายการของสี่เท่า (เอาต์พุตของคุณ) คั่นด้วยเครื่องหมายจุลภาค
ฉันยังเขียนนี้งูหลาม 2 โปรแกรมการสร้างภาพและคุณสามารถใช้มันมากเกินไป มันต้องใช้เวลาจาก STDIN รายการทั้ง tuples out.png
หรือสี่เท่าและผลิตไฟล์ชื่อ มันต้องมีห้องสมุด PIL คุณสามารถเปลี่ยนขนาดของเซลล์กริดและความกว้างของเส้นคาดเอวได้เช่นกันหากต้องการ