^
1 N23456
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
.* (.).*
$1
Usa ue dpara cima e para baixo.
Experimente online!
Explicação
Este programa funciona mantendo 1N23456a sequência de instruções. Ele mantém o controle da engrenagem atual, tendo um espaço atrás dela. Depois, são necessárias uma instrução de cada vez até que não haja mais.
^
1 N23456
Comece colocando 1 N23456antes da entrada. O espaço anterior Nindica que Né a marcha atual.
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
Esses são dois estágios de substituição, agrupados e executados até que parem de alterar a sequência:
(.)?(\w*6)u
$1 $2
O primeiro lida com a mudança de marcha. Ele procurará qualquer número de marchas após o espaço, seguido de a e 6, em seguida, seguido por u( uindica a instrução para mudar de marcha). Se houvesse caracteres antes do 6, ele trocaria o espaço pelo caractere imediatamente após, excluí-lo ue deixaria o restante da string intacta. Como o jogo 6é obrigatório na partida, ele só trocará o espaço com qualquer personagem antes do 6. Ele nunca será trocado com o 6.
(.)? (\w*6)d
$1$2
O segundo estágio lida com a mudança de marchas para baixo e funciona da mesma forma. Ele procura opcionalmente um personagem antes do espaço, depois outras artes depois de terminar 6, seguido por d. Ele troca o espaço com o personagem antes dele, exclui o de deixa o resto intacto. Se o espaço estava no início da sequência, não havia correspondência para um caractere antes do espaço, portanto, nenhuma troca ocorre.
.* (.).*
$1
Depois que nenhuma das substituições acima pode ser realizada, todas as trocas de marchas foram concluídas. A linha é limpa de tudo, exceto a engrenagem imediatamente após o espaço. Esta é a engrenagem final.