^
1 N23456
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
.* (.).*
$1
Kullanır u
ve d
yukarı ve aşağı.
Çevrimiçi deneyin!
açıklama
Bu program 1N23456
komutların sırasını geride tutarak çalışır . Arkasında bir boşluk bırakarak mevcut dişliyi takip eder. Sonra bir daha bir şey olmaz, bir daha bitene kadar.
^
1 N23456
Girişten 1 N23456
önce koyarak başlayın . Önündeki boşluk , o anki dişli N
olduğunu gösterir N
.
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
Bunlar iki değiştirme aşamasıdır, birlikte gruplandırılmış ve dizeyi değiştirmeyi bırakana kadar devam eder:
(.)?(\w*6)u
$1 $2
İlki, vitesi yukarı kaydırırken işler. Boşluktan sonra herhangi bir sayıda vites arayacak, ardından a 6
, ardından takip edecektir u
( u
vites yükseltme talimatını gösterir). 6'dan önce karakterler varsa, boşluktan hemen sonra karakterin bulunduğu alanı değiştirir, siler u
ve dizenin geri kalanını bozulmadan bırakır. Yana 6
maçında zorunludur, sadece daha önce herhangi bir karakter boşluk takas edecek 6
. Asla değişmeyecek 6
.
(.)? (\w*6)d
$1$2
İkinci kademe, vitese geçişi gerçekleştirir ve benzer şekilde çalışır. İsteğe bağlı olarak boşluktan önce bir karakter arar, ardından bittikten sonra diğer bazı dişliler 6
ve onu takip eder d
. Boşluktan önce karakteriyle değiştirir, siler d
ve gerisini sağlam bırakır. Boşluk dize başındaysa, boşluktan önce bir karakterle eşleşme olmadığından takas oluşmaz.
.* (.).*
$1
Yukarıdaki değişikliklerin hiçbiri artık yapılamadığında, tüm vites değişimleri tamamlanmıştır. Satır, boşluktan hemen sonra dişli hariç her şeyden temizlenir. Bu son vites.