^
1 N23456
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
.* (.).*
$1
Używa u
id
do wzlotów i upadków.
Wypróbuj online!
Wyjaśnienie
Ten program działa z zachowaniem 1N23456
sekwencji 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 N23456
przed wejściem. Poprzednia spacja N
wskazuje, że N
jest 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
( u
wskazuje instrukcję zmiany biegu na wyższy). Jeśli przed 6 znajdowały się znaki, zamienia spację znakiem bezpośrednio po nim, usuwa u
i pozostawia nienaruszoną resztę ciągu. Ponieważ 6
jest 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 d
i 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.