เมื่อคุณค้อนชุดของเล็บเป็นไม้กระดานและห่อยางรัดรอบตัวพวกเขาคุณจะได้รับฮัลล์นูน
ภารกิจของคุณหากคุณตัดสินใจที่จะยอมรับมันคือการหาเรือนูนของชุดคะแนน 2D ที่กำหนด
กฎบางอย่าง:
- เขียนเป็นฟังก์ชันพิกัดรายการของจุด (ในรูปแบบที่คุณต้องการ) เป็นอาร์กิวเมนต์
- ผลลัพธ์จะต้องเป็นรายการของจุดในตัวเรือตามรายการทวนเข็มนาฬิกาหรือทวนเข็มนาฬิกาเริ่มต้นที่ใด ๆ ของพวกเขา
- รายการเอาท์พุทสามารถอยู่ในรูปแบบที่เหมาะสมซึ่งพิกัดของแต่ละจุดมีความแตกต่างอย่างชัดเจน (ตัวอย่างเช่นไม่ใช่หนึ่งรายการสลัว {0.1, 1.3, 4, ... })
- หากจุดสามจุดขึ้นไปในส่วนของตัวเรือนูนอยู่ในแนวเดียวควรเก็บสองสุดยอดไว้บนเอาท์พุท
ข้อมูลตัวอย่าง:
ตัวอย่างที่ 0
การป้อนข้อมูล:
{{1, 1}, {2, 2}, {3, 3}, {1, 3}}
เอาท์พุท:
{{3, 3}, {1, 3}, {1, 1}}
(ตัวเลขเป็นเพียงตัวอย่างเท่านั้น)
ตัวอย่างที่ 1
การป้อนข้อมูล:
{{4.4, 14}, {6.7, 15.25}, {6.9, 12.8}, {2.1, 11.1}, {9.5, 14.9},
{13.2, 11.9}, {10.3, 12.3}, {6.8, 9.5}, {3.3, 7.7}, {0.6, 5.1}, {5.3, 2.4},
{8.45, 4.7}, {11.5, 9.6}, {13.8, 7.3}, {12.9, 3.1}, {11, 1.1}}
เอาท์พุท:
{{13.8, 7.3}, {13.2, 11.9}, {9.5, 14.9}, {6.7, 15.25}, {4.4, 14},
{2.1, 11.1}, {0.6, 5.1}, {5.3, 2.4}, {11, 1.1}, {12.9, 3.1}}
ตัวอย่างที่ 2
การป้อนข้อมูล:
{{1, 0}, {1, 1}, {1, -1}, {0.68957, 0.283647}, {0.909487, 0.644276},
{0.0361877, 0.803816}, {0.583004, 0.91555}, {-0.748169, 0.210483},
{-0.553528, -0.967036}, {0.316709, -0.153861}, {-0.79267, 0.585945},
{-0.700164, -0.750994}, {0.452273, -0.604434}, {-0.79134, -0.249902},
{-0.594918, -0.397574}, {-0.547371, -0.434041}, {0.958132, -0.499614},
{0.039941, 0.0990732}, {-0.891471, -0.464943}, {0.513187, -0.457062},
{-0.930053, 0.60341}, {0.656995, 0.854205}}
เอาท์พุท:
{{1, -1}, {1, 1}, {0.583004, 0.91555}, {0.0361877, 0.803816},
{-0.930053, 0.60341}, {-0.891471, -0.464943}, {-0.700164, -0.750994},
{-0.553528, -0.967036}}
ใช้กฎมาตรฐานของกอล์ฟ ไม่มีไลบรารีเรขาคณิตแบบเฉพาะกิจ รหัสที่สั้นกว่าชนะ
แก้ไข 1
เรากำลังมองหาคำตอบอัลกอริธึมที่นี่ไม่ใช่ตัวค้นหาล่วงหน้าที่มีโปรแกรมเช่นตัวนี้ใน MatLabหรืออันนี้ใน Mathematica
แก้ไข 2
ตอบความคิดเห็นและข้อมูลเพิ่มเติม:
- คุณสามารถสมมติว่ารายการอินพุตมีจำนวนจุดต่ำสุดที่เหมาะสมกับคุณ แต่คุณต้องแน่ใจว่าได้รับการปฏิบัติอย่างเหมาะสมกับชุดย่อย (sub)
- คุณอาจพบจุดซ้ำ ๆ ในรายการอินพุต
- จำนวนคะแนนสูงสุดควรถูก จำกัด โดยหน่วยความจำที่มีอยู่เท่านั้น
- เรื่อง "floating point": คุณต้องสามารถประมวลผลรายการอินพุตด้วยพิกัดทศนิยมตามที่กำหนดในตัวอย่าง คุณสามารถทำได้โดยใช้การแทนจุดลอยตัว
.