ในการท้าทายนี้คุณจะได้รับสตริงตัวอักษรเป็นอินพุต เราจะกำหนด "anti-string" ของอินพุตที่กำหนดให้เป็นสตริงที่มีกรณีของตัวอักษรทั้งหมดคว่ำ ตัวอย่างเช่น
AaBbbUy -> aAbBBuY
คุณควรเขียนโปรแกรมที่รับสตริงเป็นอินพุตและค้นหาสตริงย่อยที่ต่อเนื่องกันที่ยาวที่สุดซึ่งมีแอนตีสตริงนั้นเป็นสตริงย่อยที่ต่อเนื่องกัน สตริงย่อยทั้งสองไม่ควรทับซ้อนกัน
ตัวอย่างเช่นถ้าคุณได้รับสตริง
fAbbAcGfaBBagF
ส่วนที่เป็นตัวหนาจะเป็นคู่ที่ต่อต้านสตริงที่ยาวที่สุด
โปรแกรมของคุณควรเมื่อพบคู่แล้วยุบให้เป็นอักขระเดียว มันควรทำโดยการลบทั้งหมดยกเว้นตัวอักษรตัวแรกของแต่ละซับสตริง ตัวอย่างเช่นสตริงด้านบน
fAbbAcGfaBBagF
จะกลายเป็น
fAcGfagF
โปรแกรมของคุณควรทำกระบวนการซ้ำจนกว่าคู่ anti-string สตริงที่ยาวที่สุดคืออักขระตัวเดียวหรือสั้นกว่า
ตัวอย่างเช่นการทำงานกับสตริงเดียวกันคู่ที่ยาวที่สุดใหม่หลังจากการล่มสลายคือ
fAcGfagF
ดังนั้นเราจึงยุบสายอีกครั้ง
fAcGag
ตอนนี้สตริงไม่สามารถยุบได้อีกดังนั้นเราควรเอาท์พุท
ในกรณีที่มีการเสมอกันระหว่างคู่ของผู้สมัคร (ตัวอย่างAvaVA
) คุณอาจทำการลดขนาด ( AaA
หรือAvV
แต่ไม่ใช่Aa
)
นี่คือcode-golfดังนั้นคำตอบจะได้คะแนนเป็นไบต์ด้วยจำนวนไบต์ที่น้อยกว่าจะดีกว่า
กรณีทดสอบ
fAbbAcGfaBBagF -> fAcGag
AvaVA -> AaA / AvV
QQQQQQQ -> QQQQQQQ
fAbbAcQQQQaBBacqqqqA -> fAbcQBcq
gaq -> gaq
fAbbAcGfaBBagFaBBa -> fcGaBBag
แรงจูงใจ
ในขณะที่ปัญหานี้อาจดูเหมือนว่าเป็นเรื่องจริง แต่เป็นปัญหาที่ฉันพบขณะทำโค้ดเพื่อประมวลผลรูปหลายเหลี่ยมพื้นฐาน กระบวนการนี้สามารถใช้เพื่อลดรูปหลายเหลี่ยมพื้นฐานให้มีขนาดเล็กลงn -gon หลังจากที่ฉันลองฉันคิดว่ามันจะทำให้เป็นสนามกอล์ฟเล็ก ๆ ที่ดี
aaaAAAaaa -> aAaaa
เหรอ?