บทนำ
ในความท้าทายนี้งานของคุณคือจำลองเกมการกำจัดบางประเภท ในเกมผู้เข้าร่วมยืนเป็นวงกลมและทุกคนถือเลขจำนวนเต็ม ในแต่ละรอบของเกมผู้เข้าร่วมทุกคนจะได้คะแนนจากคนที่n
ก้าวออกไปถ้าn
เป็นตัวเลขที่พวกเขาถืออยู่ ถ้าn
เป็นบวกพวกเขานับไปทางขวาหากn
เป็นลบพวกเขานับทางซ้ายและถ้าn
เป็นศูนย์พวกเขาจะชี้ไปที่ตัวเอง ผู้เข้าร่วมทุกคนที่มีคนชี้ไปที่พวกเขาจะถูกกำจัดและออกจากวงกลม จบรอบนี้ รอบต่อไปจนกว่าจะไม่มีผู้เข้าร่วมเหลือ
อินพุต
ข้อมูลที่คุณป้อนเป็นรายการจำนวนเต็มที่ไม่ว่างเปล่าในรูปแบบที่เหมาะสม มันหมายถึงตัวเลขที่ผู้เข้าร่วมของเกมจะถือ
เอาท์พุต
ผลลัพธ์ของคุณคือจำนวนรอบที่ใช้จนกว่าเกมจะจบลง
ตัวอย่าง
[3,1,-2,0,8]
พิจารณารายชื่อการป้อนข้อมูล ในรอบแรกสิ่งต่อไปนี้จะเกิดขึ้น:
- คนถือจุดที่เหมาะสมในการถือครองคน
3
0
- คนถือจุดที่เหมาะสมในการถือครองคน
1
-2
- คนที่ถือครองจุดซ้ายที่ถือครองคน
-2
3
- คนที่ถือ
0
คะแนนในตัวเอง - บุคคลที่ถือ
8
คะแนนอยู่ที่บุคคลที่ถือ-2
(รายการแสดงถึงวงกลมดังนั้นจึงล้อมรอบที่ปลาย)
ซึ่งหมายความว่า0
, -2
และจะถูกตัดออกเพื่อให้รอบที่สองจะทำกับรายการ3
[1,8]
ที่นี่1
ชี้ไปที่8
และ8
ชี้ไปที่ตัวเองจึง8
ถูกกำจัด รอบที่สามจะทำกับรายการ[1]
ที่1
เพียงแค่ชี้ที่ตัวเองและจะถูกกำจัดออก 3
มันต้องใช้เวลาสามรอบเพื่อกำจัดผู้เข้าร่วมทั้งหมดเพื่อการส่งออกที่ถูกต้องคือ
กฎและการให้คะแนน
คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดที่ชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต
กรณีทดสอบ
[3] -> 1
[0,0,0] -> 1
[-2,-1,0,1,2,3,4,5,6,7] -> 2
[5,5,5,6,6,6] -> 2
[3,-7,-13,18,-10,8] -> 2
[-7,5,1,-5,-13,-10,9] -> 2
[4,20,19,16,8,-9,-14,-2,17,7,2,-2,10,0,18,-5,-5,20] -> 3
[11,2,7,-6,-15,-8,15,-12,-2,-8,-17,6,-6,-5,0,-20,-2,11,1] -> 4
[2,-12,-11,7,-16,9,15,-10,7,3,-17,18,6,6,13,0,18,10,-7,-1] -> 3
[18,-18,-16,-2,-19,1,-9,-18,2,1,6,-15,12,3,-10,8,-3,7,-4,-11,5,-15,17,17,-20,11,-13,9,15] -> 6
n
หมายเลขที่บุคคลนั้นถืออยู่หรือไม่