레티 나 , 65 바이트
^
1 N23456
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
.* (.).*
$1
용도 u및 d상하합니다.
온라인으로 사용해보십시오!
설명
이 프로그램은 1N23456일련의 명령 을 유지함으로써 작동 합니다. 뒤에 공간을 확보하여 현재 기어를 추적합니다. 그런 다음 더 이상 없을 때까지 한 번에 하나의 명령이 필요합니다.
^
1 N23456
1 N23456입력하기 전에 시작하십시오 . 앞의 공간 은 현재 기어 N임을 나타냅니다 N.
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
다음은 두 개의 대체 단계이며 그룹화되어 있으며 문자열 변경이 중지 될 때까지 실행됩니다.
(.)?(\w*6)u
$1 $2
첫 번째는 기어 변속을 처리합니다. 공간 다음에 임의의 수의 기어를 6찾은 후, 그 다음에 u( u기어 변속 지시를 나타냅니다) 를 찾습니다 . 6 이전에 문자가 있으면 공백 바로 뒤에있는 문자와 공백을 바꾸고을 삭제 u하고 나머지 문자열을 그대로 둡니다. 6는 경기에서 필수 이므로 공백 앞에있는 문자 만 교체합니다 6. 와 교환하지 않습니다 6.
(.)? (\w*6)d
$1$2
두 번째 단계는 기어 변속을 처리하고 비슷하게 작동합니다. 그런 다음 다른 기어의 종료 후 공간 전에 문자에 대해 선택적으로 보이는 6, 다음에 d. 이전의 문자와 공백을 바꾸고를 삭제 d하고 나머지는 그대로 둡니다. 공백이 문자열의 시작 부분에 있으면 공백 앞의 문자와 일치하지 않으므로 스왑이 발생하지 않습니다.
.* (.).*
$1
위의 교체를 더 이상 수행 할 수 없으면 모든 기어 변속이 완료된 것입니다. 공간 직후에는 기어를 제외한 모든 것이 지워집니다. 이것이 마지막 장비입니다.