เรติน่า 65 ไบต์
^
1 N23456
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
.* (.).*
$1
ใช้u
และd
สำหรับขึ้นและลง
ลองออนไลน์!
คำอธิบาย
โปรแกรมนี้ทำงานโดยการ1N23456
เรียงลำดับคำสั่งไว้เบื้องหลัง มันติดตามเกียร์ปัจจุบันโดยมีช่องว่างด้านหลัง จากนั้นจะใช้เวลาสอนหนึ่งครั้งจนกว่าจะไม่มีอีกต่อไป
^
1 N23456
เริ่มต้นด้วยการใส่1 N23456
ก่อนที่จะป้อน ช่องว่างก่อนหน้าN
บ่งชี้ว่าN
เป็นเกียร์ปัจจุบัน
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
เหล่านี้เป็นสองขั้นตอนการแทนที่จัดกลุ่มเข้าด้วยกันและทำงานจนกว่าพวกเขาจะหยุดเปลี่ยนสตริง:
(.)?(\w*6)u
$1 $2
คนแรกจัดการการเปลี่ยนเกียร์ขึ้น มันจะมองหาจำนวนของเกียร์หลังจากช่องว่างตามด้วย a 6
แล้วตามด้วยu
( u
ระบุคำแนะนำในการเลื่อนเกียร์ขึ้น) หากมีตัวอักษรอยู่ก่อนหน้า 6 จะเป็นการสลับช่องว่างด้วยอักขระในทันทีหลังจากนั้นลบu
, และปล่อยให้ส่วนที่เหลือของสตริงไม่เปลี่ยนแปลง เนื่องจาก6
มีผลบังคับใช้ในการแข่งขันก็จะสลับพื้นที่ที่มีตัวอักษรใด ๆ 6
ก่อนที่จะ 6
มันจะไม่สลับกับ
(.)? (\w*6)d
$1$2
ขั้นตอนที่สองจัดการกับการเปลี่ยนเกียร์และทำงานในทำนองเดียวกัน มันดูเป็นตัวเลือกสำหรับตัวก่อนพื้นที่แล้วบางส่วนเกียร์อื่น ๆ หลังจากที่ลงท้ายด้วยตามมาด้วย6
d
มันสลับช่องว่างกับตัวละครก่อนหน้านั้นลบd
และออกจากส่วนที่เหลือเหมือนเดิม หากช่องว่างอยู่ที่จุดเริ่มต้นของสตริงจะไม่มีการจับคู่อักขระก่อนช่องว่างดังนั้นจึงไม่มีการสลับเกิดขึ้น
.* (.).*
$1
หลังจากการเปลี่ยนทั้งสองข้างต้นไม่สามารถทำได้อีกต่อไปการเปลี่ยนเกียร์ทั้งหมดเสร็จสมบูรณ์แล้ว เส้นจะถูกล้างทุกอย่างยกเว้นเกียร์ทันทีหลังจากที่ว่าง นี่คือเกียร์สุดท้าย