iBug เมื่อเร็ว ๆ นี้มีแท่งยาวที่ทำจากวัสดุคอมโพสิต แต่มีคุณค่า บาร์ยาวมากที่ iBug ไม่สามารถขายได้ง่ายสำหรับเครดิตดังนั้นเขาจึงต้องการตัดมัน แท่งทำจากวัสดุที่เปราะบางและเวทย์มนตร์ซึ่งหากส่วนใดส่วนหนึ่งหักบาร์ทุกส่วนที่ทำจากวัสดุเดียวกันจะแตกเช่นกันทำให้ยากต่อการตัดโดยพลการ
iBug ต้องการตัดแท่งเป็นชิ้นให้ได้มากที่สุด นอกจากนี้เขายังรักโปรแกรมสั้น ๆ และการตีกอล์ฟดังนั้นเขาจึงวิเคราะห์ปัญหาของเขาได้อย่างเป็นนามธรรม
แถบเวทของ iBug นั้นแสดงเป็นสตริง (หรืออาร์เรย์หรือลำดับของอักขระหากคุณต้องการ) เช่นนี้:
aaabbccccccbbbaaacccccaabbbaaaaa
ตัวอักษรแต่ละตัวในสตริงแสดงถึงวัสดุเวทมนตร์หนึ่งชิ้น บาร์ตรงกับ RegEx เสมอ^\w*$
ดังนั้นอาจมีวัสดุถึง 63 รายการในบาร์ "ส่วน" เป็นลำดับต่อเนื่องของตัวละครใด ๆ ที่ไม่ได้คั่นด้วยช่องว่าง
iBug ต้องการให้คุณเขียนโปรแกรมที่คำนวณส่วนสูงสุดที่เขาจะได้รับถ้าชุดอักขระเป็นศูนย์หรือมากกว่านั้นถูกลบออกอย่างสมบูรณ์ (แทนที่ด้วยช่องว่าง) และบอก iBug ว่าหมายเลขนั้น
ตัวอย่างที่ 1:
In: aaabbccccccbbbaaacccccaabbbaaaaa
Out: 4
คำอธิบาย: หากb
ถูกลบออกจากแถบอย่างเต็มที่ iBug อาจได้รับ 4 ส่วน เขาสามารถรับ 4 ส่วนโดยการลบb
และc
ตามที่แสดงด้านล่าง
aaabbccccccbbbaaacccccaabbbaaaaa # Original string
aaa cccccc aaacccccaa aaaaa # Remove 'b'
aaa aaa aa aaaaa # Remove 'b' and 'c'
และนั่นคือจำนวนชิ้นส่วนสูงสุดที่ iBug สามารถรับได้จากแถบนี้
ตัวอย่างที่ 2:
In: 111aa___9999____aaa99111__11_a_aa999
Result: 111aa 9999 aaa99111 11 a aa999
Out: 6
คำอธิบาย: การลบเฉพาะขีดล่าง, iBug สามารถรับได้ 6 ส่วนจากแถบและนั่นคือค่าสูงสุด
ตัวอย่างที่ 3:
In: __________
Out: 1
คำอธิบาย: อะไร คุณต้องการที่จะตัดสิ่งนี้? เป็นไปได้ที่จะได้ 1 ส่วนถ้าคุณไม่ตัดเลย
ตัวอย่างที่ 4:
In:
Out: 0
คำอธิบาย: ไม่มีอะไรจะตัดดังนั้นศูนย์
นอกจากนี้ยังมีกฎบางอย่างที่ iBug ต้องการให้โปรแกรมเชื่อฟัง:
iBug ไม่ชอบช่องโหว่มาตรฐานและเป็นสิ่งต้องห้าม
ตราบใดที่มันใช้งานได้มันไม่จำเป็นต้องเป็นโปรแกรมเต็มรูปแบบ ฟังก์ชั่นที่รับอินพุตจากพารามิเตอร์และให้เอาต์พุตผ่านค่าส่งคืนก็รับได้เช่นกัน
อนุญาตอินพุตและเอาต์พุตที่ยืดหยุ่นได้ โปรแกรมหรือฟังก์ชั่นของคุณสามารถใช้สตริงหรืออาเรย์ของตัวละครหรืออะไรก็ตามที่คุณคิดว่าจัดการได้ง่ายที่สุด คุณสามารถให้ผลลัพธ์โดยการพิมพ์หมายเลขหรือคืนมัน
ตัวอย่างกรณีทดสอบ (แต่ไม่ จำกัด เฉพาะกรณีเหล่านี้)
aaabbbaaa = 2
123456789 = 5
AaAaAaAa = 4
aaabcccdedaaabefda = 6
________ = 1
(empty) = 0
ตั้งแต่นี้เป็นรหัสกอล์ฟโปรแกรมที่สั้นที่สุด (เป็นไบต์) ในแต่ละภาษาชนะ!
พิเศษ
iBug ชื่นชมอย่างมากหากคุณสามารถให้คำอธิบายสำหรับโปรแกรมของคุณแม้ว่าจะไม่ส่งผลกระทบต่อการให้คะแนนของคุณ (มันยังคงมีความยาวเป็นไบต์)
2468
bd
2,4,6,8
จากรายการแรกและb,d,f
จากรายการที่สอง
123456789
ให้ผลผลิต 5? และaaabcccdedaaabefda
ให้ผลผลิต 6 อย่างไร? ฉันได้ 2 และ 4 ตามลำดับสำหรับกรณีทดสอบทั้งสองนี้