คุณเป็นเกษตรกรและฝูงแกะของคุณได้หลบหนีไป! ไม่นะ!
ล้อมรอบแกะเหล่านั้นด้วยการสร้างรั้วเพื่อเก็บไว้ ในฐานะเกษตรกรที่มีงบประมาณ จำกัด คุณต้องการใช้รั้วน้อยที่สุดเท่าที่จะเป็นไปได้ โชคดีสำหรับคุณพวกเขาไม่ใช่แกะที่ฉลาดที่สุดในโลกและไม่ต้องกังวลกับการเคลื่อนไหวหลังจากหนีรอดมาได้
งาน
รับรายการพิกัดส่งเอาต์พุตจำนวนเซ็กเมนต์รั้วน้อยที่สุดที่จำเป็นเพื่อให้มีแกะ
กฎระเบียบ
- มีแกะอยู่หากไม่สามารถเดินได้ (ไม่มีรูในรั้ว)
- คุณไม่จำเป็นต้องมีแกะทั้งหมดในรั้วหนึ่งบล็อก - อาจมีหลายพื้นที่ที่ไม่พอใจไม่เป็นอิสระจากกัน
- ส่วนของรั้วนั้นเน้นไปในทิศทางที่สำคัญ
- tuple พิกัดแต่ละอันแสดงถึงแกะตัวเดียว
- ข้อมูลที่ป้อนจะต้องเป็นจำนวนเต็มบวก
x>0และy>0สามารถจัดรูปแบบอย่างเหมาะสมสำหรับภาษาของคุณ- เช่น:
{{1,1},{2,1},{3,7}, .. }หรือ[1,2],[2,1],[3,7], ..
- เช่น:
- ช่องว่างภายในพื้นที่ไม่พอใจไม่เป็นไร
- คุณไม่สามารถสันนิษฐานได้ว่าพิกัดป้อนเข้าในลำดับเฉพาะใด ๆ
ตัวอย่างเช่นแกะเดียวต้องมี4ส่วนรั้วที่จะถูกบรรจุอย่างเต็มที่
กรณีทดสอบ
[1,1]
4
[1,1],[1,2],[2,2]
8
[2,1],[3,1],[2,3],[1,1],[1,3],[3,2],[1,2],[3,3]
12
[1,1],[1,2],[2,2],[3,7],[4,9],[4,10],[4,11],[5,10]
22
[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]
36
[1,1],[2,2],[3,3],[4,4],[6,6],[7,7],[8,8],[9,9]
32
[2,1],[8,3],[8,4]
10
หมายเหตุ
- คุณสามารถสมมติว่าพิกัดอินพุตนั้นถูกต้อง
- อัลกอริทึมของคุณควรทำงานในเชิงตรรกะสำหรับจำนวนเต็มขนาดใหญ่ที่สมเหตุสมผล (ขึ้นอยู่กับค่าสูงสุดของภาษาที่รองรับ)
- คำตอบโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบไม่เป็นไร
นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!
x,yอินพุตต้องอยู่ด้วยกัน คิดดีแม้ว่าฉันไม่ได้คิดว่าตัวเอง
{1,2,3,4},{5,6,7,8} -> {1,5},{2,6},{3,7},{4,8}