พิจารณาอาร์เรย์ของบิตพูด
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
เราเรียก subarray ที่ต่อเนื่องกันที่มีความยาว≥ 5 a phaseถ้าอย่างน้อย 85% ของบิตเหมือนกันและบิตแรก / ครั้งสุดท้ายมีค่าเท่ากับบิตส่วนใหญ่ นอกจากนี้เราเรียกเฟสสูงสุดถ้ามันไม่ใช่ subarray ที่เข้มงวดของเฟสอื่น ๆ
นี่คือขั้นสูงสุดของตัวอย่างข้างต้น:
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
-------------
-------------
-------------
อย่างที่คุณเห็นมี3
ระยะมากที่สุด ในทางกลับกันสิ่งนี้
1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0
---------
ไม่ใช่ระยะสูงสุดเนื่องจากเป็น subarray ที่เข้มงวดของเฟสอื่นอย่างน้อยหนึ่งตัว
ความท้าทาย
อินพุตเป็นลำดับ≥ 5 บิตผ่าน STDIN บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชัน บิตอาจมาเป็นสตริงหรืออาร์เรย์
คุณจะส่งออกจำนวนเต็มเดียวจำนวนขั้นตอนสูงสุดสำหรับอาร์เรย์ทั้งพิมพ์ผ่าน STDOUT หรือส่งกลับจากฟังก์ชั่น
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟดังนั้นโปรแกรมที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ
กรณีทดสอบ
0 1 0 1 0 -> 0
0 0 0 0 0 -> 1
0 0 0 0 1 0 1 1 1 1 -> 0
0 0 0 0 0 1 0 1 1 1 1 1 -> 2
1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -> 1
0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 -> 2
0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -> 1
0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 -> 0
1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 -> 4
0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 -> 5
นี่คือคำอธิบายสำหรับกรณีสุดท้าย:
0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0
---------------------------
-------------------------
-----------------
-----------------
-------------
ความจริง: ความท้าทายนี้เกิดขึ้นจากปัญหาการขุดข้อมูลโดยมีเป้าหมายในการตรวจจับการเปลี่ยนแปลงข้อมูลชั่วคราว
0
และสิ้นสุดที่หนึ่งล่าสุด
1 1 0 1 1
85% ของ 5 คือ 4.25 ซึ่งก็คือความยาว 5 จะเป็นไปไม่ได้หรือเราควรปัดลงเป็น 4?