Alternestingคือการรับสตริงและซ้อนในวงเล็บ นี่คือวิธีที่คุณสลับสตริง
สำหรับสตริงที่มีความยาวNให้ใช้อักขระNกึ่งกลางและล้อมรอบไว้ในวงเล็บ ดังนั้นถ้าสตริงของเราคือ
Hello world!
(12 ตัวอักษร) เราจะจบลงด้วย(Hello world!)
จากนั้นนำ
n-2
อักขระกึ่งกลางที่เหลือและล้อมรอบพวกเขาในวงเล็บเหลี่ยม ในกรณีนี้มีอักขระกลาง 10 ตัวello world
ดังนั้นการทำซ้ำครั้งถัดไปคือ:(H[ello world]!)
ตราบใดที่มีมากกว่าตัวละครสองตัวที่เหลืออยู่ในช่วงกลางของสตริงทำซ้ำขั้นตอนที่สองที่ผ่านมาสลับกันระหว่างและ
()
[]
นี่คือขั้นตอนสุดท้าย:(Hello world!) (H[ello world]!) (H[e(llo worl)d]!) (H[e(l[l(o[ w]o)r]l)d]!)
เนื่องจากมีอักขระเพียงสองตัวที่เหลืออยู่ตรงกลางในการทำซ้ำครั้งล่าสุดเราจึงหยุด สตริงสุดท้ายของเราคือ
(H[e(l[l(o[ w]o)r]l)d]!)
สังเกตว่ามีอักขระสองตัวในวงเล็บตรงกลางได้อย่างไร สิ่งนี้จะเกิดขึ้นเมื่ออินพุตมีความยาวเท่ากัน หากอินพุตเป็นความยาวคี่ (ตัวอย่างเช่น
Hello, world!
เมื่อเพิ่มเครื่องหมายจุลภาค) เราจะมีอักขระเพียงตัวเดียวที่อยู่ตรงกลาง:(H[e(l[l(o[,( )w]o)r]l)d]!)
สำหรับความท้าทายในวันนี้คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่รับสตริงเป็นอินพุตและสลับมันเพื่อแสดงผลสตริงใหม่ คุณสามารถนำเข้าและส่งออกในรูปแบบที่เหมาะสมตามที่คุณต้องการ ข้อมูลที่ป้อนจะมีความยาวอย่างน้อยหนึ่งตัวอักษรและจะมีเฉพาะ ASCII ที่พิมพ์ได้ นอกจากนี้คุณยังสามารถสมมติว่าอินพุตจะไม่มีวงเล็บหรือวงเล็บเหลี่ยม สำหรับภาษาดั้งเดิมสิ่งนี้ไม่ควรมีมากเกินไป แต่มันอาจทำให้ภาษาลึกลับบางอย่างง่ายขึ้น
ตามปกตินี่คือการแข่งขันรหัส - กอล์ฟดังนั้นพยายามทำให้คำตอบที่สั้นที่สุดในภาษาที่คุณเลือก มีความสุข!
ทดสอบ IO
#Input #Output
"Alternesting is fun!" --> (A[l(t[e(r[n(e[s(t[in]g) ]i)s] )f]u)n]!)
"PPCG" --> (P[PC]G)
"Code-golf" --> (C[o(d[e(-)g]o)l]f)
"4 8 15 16 23 42" --> (4[ (8[ (1[5( [1]6) ]2)3] )4]2)
"a" --> (a)
"ab" --> (ab)
"abc" --> (a[b]c)
()
) เสมอหรือเราจะเริ่มด้วยวงเล็บ ( []
) ได้ไหม?
()
HelloWorld
.