บทนำ
อลิซเป็น 2-D ภาษาโดยมาร์ตินเอนเดอร์ซึ่งมีสองโหมดการดำเนินการที่แตกต่างกัน, พระคาร์ดินัลและลำดับ เมื่อตัวชี้คำแนะนำส่งผ่านมิรเรอร์ (อย่างใดอย่างหนึ่ง/หรือ\) มันจะสลับจากโหมดหนึ่งไปอีกโหมดหนึ่ง
ในการท้าทายนี้เราจะมุ่งเน้นไปที่โหมดเลขลำดับซึ่งคำสั่งทำงานกับสตริงและตัวชี้คำสั่งเคลื่อนที่ในแนวทแยงมุมกระดอนกับขอบของรหัส
โปรแกรมอย่างง่ายที่ใช้งานได้เฉพาะในโหมดเลขลำดับสามารถเขียนในสไตล์ที่ค่อนข้างกะทัดรัดได้ดังตัวอย่างต่อไปนี้:
/fbd/
@aec\
ที่นี่ IP เริ่มต้นในโหมดที่สำคัญจากเซลล์แรกไปทางทิศตะวันออกผ่านมิรเรอร์แรกและเริ่มเคลื่อนที่ในแนวทแยงมุมและกระดอนโดยเรียกใช้คำสั่ง a , และb cจากนั้นก็พบกระจกภาคตะวันออกเฉียงเหนือซึ่งจะทำให้มันไปทางทิศใต้กระจกอื่น ๆ และจากนั้นเริ่มใหญ่กลับไปทางทิศตะวันตกคำสั่งเผชิญหน้าd, e, fและในที่สุด@ซึ่งสิ้นสุดโปรแกรม
โครงสร้างแบบนี้ค่อนข้างเล็ก แต่ไม่ง่ายในการเขียนและบำรุงรักษา (การเพิ่มคำสั่งเดียวอาจบังคับให้เราเรียงลำดับโค้ดส่วนใหญ่!) ดังนั้นฉันต้องการให้คุณช่วยฉันจัดรูปแบบ
งาน
กำหนดลำดับของคำสั่งโดยที่แต่ละคำสั่งเป็นอักขระ ASCII เดียวที่พิมพ์ได้ให้เรียงลำดับใหม่ในสองบรรทัดเพื่อให้ครึ่งแรกของลำดับสามารถอ่านได้โดยเริ่มจากอักขระตัวแรกของบรรทัดที่สองจากนั้นเลื่อนแนวทแยงมุมไปทางขวาเสมอ ในขณะที่ครึ่งหลังสามารถอ่านตัวอักษรที่เหลือจากขวาไปซ้าย ไม่ต้องกังวลกับกระจกเงาและสัญลักษณ์บอกเลิกฉันจะเพิ่มมันเอง
ตัวอย่างเช่นอินพุตที่กำหนด abcdefคุณควรส่งออก
fbd
aec
ในกรณีที่การป้อนข้อมูลมีความยาวคี่คุณควรเพิ่มช่องว่างเดียว (ซึ่งเป็น noop ในอลิซ) ที่ใดก็ได้ตราบใดที่ลำดับของคำสั่งที่พบยังคงเหมือนเดิม นอกจากนี้คุณยังสามารถเลือกที่จะเอาท์พุทสองบรรทัดที่มีความยาวต่างกันโดยหนึ่งตัวอักษรในกรณีนี้อันที่สั้นกว่านั้นจะถือเป็นช่องว่างเดียวที่ส่วนท้าย
กฎระเบียบ
นี่คือ รหัสกอล์ฟคำตอบที่สั้นที่สุดเป็นไบต์ชนะ!
- คุณสามารถอินพุต / เอาต์พุตผ่านวิธีการอินพุต / เอาต์พุตเริ่มต้นใดก็ได้
- อินพุตประกอบด้วยอักขระ ASCII ที่พิมพ์ได้บรรทัดเดียว
- บรรทัดใหม่ต่อท้ายเดียวได้รับอนุญาตในการส่งออก
- เอาต์พุตบางส่วนของโปรแกรมของคุณอาจไม่ทำงานอย่างถูกต้องเมื่อเรียกใช้เป็นโปรแกรมของอลิซ (เช่นหากใส่ช่องว่างภายในไว้ในตัวอักษรสตริง) คุณไม่ต้องกังวลกับสถานการณ์เหล่านี้
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
กรณีทดสอบ
--Input
abcdef
--Output
fbd
aec
--Input
123
--Output
2
13
OR
31
2
OR
3
12
OR
32
1
--Input
O
--Output
O
OR
O
--Input
"Hello, World!"o
--Output
oH!lloo
""edlr,W
--Input
i.szR.szno
--Output
o.zz.
inssR
--Input
" ^^} .~[}.~~[}{~~{}[^^^^.""!}"r.h~;a*y'~i.*So
--Output
o *^i}'.*[;.h~r}}~"{.[^
"S .^~ y~a}~~.["{!~"}^^^
(Odd length, your solution may be different)