網膜、65バイト
^
1 N23456
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
.* (.).*
$1
用途 u
やd
上下ため。
オンラインでお試しください!
説明
このプログラム1N23456
は、一連の命令を保持することで機能します。背後にスペースを確保することで、現在のギアを追跡します。その後、それ以上なくなるまで、一度に1つの命令を取ります。
^
1 N23456
1 N23456
入力の前に置くことから始めます。前のスペースは、N
それN
が現在のギアであることを示しています。
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
これらは2つの置換ステージで、グループ化され、文字列の変更が停止するまで実行されます。
(.)?(\w*6)u
$1 $2
最初の1つは、ギアのシフトアップを処理します。スペースの後に任意の数のギアを探し6
、その後に、続いてu
(u
ギアシフトアップの指示を示します)。6の前に文字があった場合、その直後の文字とスペースを交換し、を削除してu
、文字列の残りをそのまま残します。以来6
試合で必須であり、それだけで前に任意の文字とスペースを交換します6
。それは決して交換しません6
。
(.)? (\w*6)d
$1$2
2番目の段階では、ギアのシフトダウンを処理し、同様に機能します。必要に応じて、スペースの前の文字を探し、次にで終わる他のギアを探し6
、その後にd
。スペースの前の文字とスワップし、を削除してd
、残りをそのまま残します。スペースが文字列の先頭にある場合、スペースの前の文字に一致するものはなかったため、スワップは発生しません。
.* (.).*
$1
上記の交換のいずれももうできなくなった後、すべてのギアシフトが完了しました。スペースの直後のギア以外のすべての行がクリアされます。これが最終ギアです。