นี่คือกระจกเงา: |
. ฉันเพิ่งค้นพบว่าคุณสามารถติดกระจกที่อยู่ตรงกลางของสตริงถ้าสตริงสามารถสะท้อนในตัวเอง! abccba
ยกตัวอย่างเช่นสตริง หากคุณผ่าครึ่งครึ่งทั้งสองจะเป็นภาพสะท้อนซึ่งกันและกัน:
abc <--> cba
abc|cba
ดังนั้นเราสามารถติดกระจกในช่วงกลางของสตริงและสตริงใหม่ของเราคือ บางครั้งมีเพียงบางส่วนของสตริงเท่านั้นที่สามารถทำการมิรเรอร์ได้ ตัวอย่างเช่นสตริง "mirror" r สองถูกมิร์เรอร์ แต่ส่วนที่เหลือของสตริงไม่ใช่ ไม่เป็นไรเราจะลบส่วนของสตริงที่ไม่ทำมิเรอร์กันและเราจะได้สตริงต่อไปนี้:
r|r
บางสายอาจถูกมิร์เรอร์ในหลาย ๆ ที่ ตัวอย่างเช่น "Hello World, xyzzyx" ฉันชอบที่มีข้อความจำนวนมากสะท้อนในกระจกของฉันดังนั้นคุณต้องหาที่ที่ดีที่สุดในการวางกระจกของฉัน ในกรณีนี้คุณควรส่งออกสตริงมิเรอร์ที่ยาวขึ้นและเหมือนกับตัวอย่างสุดท้ายของเราลบทุกอย่างออก สายนี้กลายเป็น:
xyz|zyx
สตริงบางอย่างดูเหมือนว่าพวกเขาสามารถสะท้อน แต่จริงๆแล้วไม่สามารถ หากสตริงไม่สามารถมิร์เรอร์ที่ใดก็ได้คุณไม่ควรแสดงผลอะไรเลย
ความท้าทาย:
รับสตริงที่มีเพียงพิมพ์ -iiii หาที่ที่ดีที่สุดที่จะนำกระจกของฉัน ในคำอื่น ๆ
ค้นหาสตริงย่อย palindromic ที่ยาวที่สุดที่ใหญ่ที่สุดจากนั้นส่งออกด้วยอักขระไพพ์ '|' ตรงกลางของมัน
อินพุตจะมีความยาว 1-50 อักขระ
คุณสามารถสมมติว่าอินพุตจะไม่มีมิร|
เรอร์หรือบรรทัดใหม่ นอกเหนือจากนั้นตัวละครที่พิมพ์ได้ทั้งหมดเป็นเกมที่ยุติธรรม หากสตริงย่อยที่มิรเรอร์ที่ยาวที่สุดนั้นเชื่อมโยงกันระหว่างสองสตริงย่อยคุณสามารถเลือกได้ว่าจะเอาอันไหนออก ตัวอย่างเช่นสำหรับสตริง "abba ollo" คุณต้องส่งออก "ab | ba" หรือ "ol | lo" แต่ไม่สำคัญว่าคุณจะส่งออกใด สตริงจะต้องตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เช่น "ABba" ไม่ควรส่งออก "AB | ba" แต่ควรส่งออกสตริงว่างเปล่า
ตัวอย่าง IO:
"Hello World" --> "l|l"
"Programming Puzzles and Code-Golf" --> Either "m|m" or "z|z"
"abcba" --> ""
"Hulluh" --> "ul|lu"
"abcdefggfedcba" --> "abcdefg|gfedcba"
"abcdefggfabc" --> "fg|gf"
"AbbA" --> "Ab|bA"
"This input is a lot like the last one, but with more characters that don't change the output. AbbA" --> "Ab|bA"
ตามปกตินี่คือ code-golf ดังนั้นจึงใช้ช่องโหว่มาตรฐานและคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ!