^
1 N23456
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
.* (.).*
$1
Używa uid do wzlotów i upadków.
Wypróbuj online!
Wyjaśnienie
Ten program działa z zachowaniem 1N23456sekwencji instrukcji. Śledzi bieżący bieg, mając za sobą miejsce. Potem wymaga jednej instrukcji na raz, aż nie będzie już więcej.
^
1 N23456
Zacznij od umieszczenia 1 N23456przed wejściem. Poprzednia spacja Nwskazuje, że Njest to bieżący bieg.
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
Są to dwa etapy wymiany, zgrupowane razem i trwają do momentu, aż przestaną zmieniać ciąg:
(.)?(\w*6)u
$1 $2
Pierwszy obsługuje zmianę biegów w górę. Będzie szukał dowolnej liczby biegów po spacji, a następnie a 6, a następnie u( uwskazuje instrukcję zmiany biegu na wyższy). Jeśli przed 6 znajdowały się znaki, zamienia spację znakiem bezpośrednio po nim, usuwa ui pozostawia nienaruszoną resztę ciągu. Ponieważ 6jest to obowiązkowe w meczu, zamieni przestrzeń tylko dowolną postacią przed 6. Nigdy nie zamieni się z 6.
(.)? (\w*6)d
$1$2
Drugi etap obsługuje zmianę biegów i działa podobnie. Opcjonalnie szuka postaci przed spacją, a następnie kilku innych biegów po zakończeniu 6, a następnie d. Zamienia przestrzeń z postacią przed nią, usuwa di pozostawia resztę nietkniętą. Jeśli spacja znajdowała się na początku łańcucha, przed znakiem nie było żadnego znaku, więc nie następuje zamiana.
.* (.).*
$1
Po tym, jak nie można już wykonać żadnej z powyższych wymian, wszystkie zmiany biegów zostały zakończone. Linia jest oczyszczona ze wszystkiego oprócz sprzętu bezpośrednio po spacji. To jest ostatni bieg.