หมายเลขคดเคี้ยวคือหมายเลขจำนวนเต็มของการหมุนวนทวนเข็มนาฬิกาสุทธิผู้สังเกตการณ์ต้องทำตามเส้นทางปิดที่กำหนด โปรดทราบว่าการหมุนตามเข็มนาฬิกาใด ๆ นับว่าเป็นลบต่อจำนวนคดเคี้ยว เส้นทางได้รับอนุญาตให้ตัดกันด้วยตนเอง
ตัวอย่างบางส่วน (นำมาจากวิกิพีเดียลงคอ) ได้รับด้านล่าง:
เป้าหมายของคุณคือการคำนวณหมายเลขที่คดเคี้ยวสำหรับเส้นทางที่กำหนด
อินพุต
(0,0)
ผู้สังเกตการณ์จะถือว่าเป็นที่แหล่งกำเนิด
อินพุตเป็นลำดับที่แน่นอนของคะแนน (เหมือนคู่ของตัวเลขจำนวนเต็ม) จากแหล่งอินพุตที่ต้องการซึ่งอธิบายเส้นทางเชิงเส้นแบบชิ้นส่วน คุณสามารถทำให้แบนนี้เป็น 1D ตามลำดับของตัวเลขจำนวนเต็มหากต้องการและอาจ swizzle อินพุตเพื่อใช้พิกัด x ทั้งหมดก่อนที่พิกัด y ทั้งหมด / vise-versa a+b i
นอกจากนี้คุณยังอาจใช้การป้อนข้อมูลเป็นตัวเลขที่ซับซ้อน เส้นทางอาจตัดกันด้วยตนเองและอาจมีเซ็กเมนต์ที่มีความยาวเป็นศูนย์ จุดแรกคือจุดเริ่มต้นของเส้นทางและคาดว่าจะอยู่ที่ไหนสักแห่งบนแกน x บวก
ไม่มีส่วนใดของเส้นทางที่จะตัดกันที่มา เส้นทางจะปิดตลอดเวลา (เช่นจุดแรกและจุดที่หายไปเหมือนกัน) รหัสของคุณอาจบ่งบอกถึงจุดสุดท้ายหรือต้องการให้รวมไว้
ตัวอย่างเช่นขึ้นอยู่กับความต้องการของคุณทั้งสองอินพุทให้ระบุสแควร์เดียวกัน
จุดสิ้นสุดโดยนัย
1,0
1,1
-1,1
-1,-1
1,-1
จุดสิ้นสุดที่ชัดเจน
1,0
1,1
-1,1
-1,-1
1,-1
1,0
เอาท์พุต
เอาท์พุทเป็นจำนวนเต็มเดียวสำหรับหมายเลขคดเคี้ยว สิ่งนี้อาจเป็นแหล่งที่มาใด ๆ (ค่าส่งคืน, stdout, ไฟล์, ฯลฯ )
ตัวอย่าง
ตัวอย่างทั้งหมดมีจุดสิ้นสุดที่กำหนดไว้อย่างชัดเจนและได้รับเป็นคู่ x, y คุณควรป้อนตัวอย่างเหล่านี้ลงในรหัสใด ๆ โดยตรงโดยสมมติว่าจุดสิ้นสุดที่กำหนดโดยปริยายและผลลัพธ์ควรเหมือนกัน
1. การทดสอบขั้นพื้นฐาน
1,0
1,1
-1,1
-1,-1
1,-1
1,0
เอาท์พุต
1
2. การทดสอบจุดซ้ำ
1,0
1,0
1,1
1,1
-1,1
-1,1
-1,-1
-1,-1
1,-1
1,-1
1,0
เอาท์พุต
1
3. การทดสอบตามเข็มนาฬิกา
1,0
1,-1
-1,-1
-1,1
1,1
1,0
เอาท์พุต
-1
4. นอกการทดสอบ
1,0
1,1
2,1
1,0
เอาท์พุต
0
5. คดเคี้ยวผสม
1,0
1,1
-1,1
-1,-1
1,-1
1,0
1,-1
-1,-1
-1,1
1,1
1,0
1,1
-1,1
-1,-1
1,-1
1,0
1,1
-1,1
-1,-1
1,-1
1,0
เอาท์พุต
2
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟ รหัสที่สั้นที่สุดชนะ ช่องโหว่มาตรฐานใช้ คุณสามารถใช้ฟังก์ชั่นบิวอินใดก็ได้ตราบใดที่มันไม่ได้ถูกออกแบบมาโดยเฉพาะเพื่อคำนวณหมายเลขคดเคี้ยว
"1-i"
หรือ"1-1i"
?)