^
1 N23456
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
.* (.).*
$1
Sử dụng u
và d
cho lên và xuống.
Hãy thử trực tuyến!
Giải trình
Chương trình này hoạt động bằng cách giữ 1N23456
đằng sau chuỗi hướng dẫn. Nó theo dõi các thiết bị hiện tại bằng cách có một không gian phía sau nó. Sau đó, phải mất một hướng dẫn tại một thời điểm cho đến khi không còn nữa.
^
1 N23456
Bắt đầu bằng cách đặt 1 N23456
trước đầu vào. Không gian trước N
cho biết đó N
là thiết bị hiện tại.
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
Đây là hai giai đoạn thay thế, được nhóm lại với nhau và chạy cho đến khi chúng ngừng thay đổi chuỗi:
(.)?(\w*6)u
$1 $2
Người đầu tiên xử lý việc chuyển bánh răng lên. Nó sẽ tìm kiếm bất kỳ số lượng bánh răng nào sau khoảng trống, theo sau là a 6
, sau đó theo sau u
( u
biểu thị hướng dẫn chuyển bánh răng lên). Nếu có các ký tự trước 6, nó sẽ hoán đổi khoảng trắng với ký tự ngay sau nó, xóa u
và giữ nguyên phần còn lại của chuỗi. Kể từ khi6
là bắt buộc trong trận đấu, nó sẽ chỉ trao đổi không gian với bất kỳ nhân vật nào trước 6
. Nó sẽ không bao giờ trao đổi với 6
.
(.)? (\w*6)d
$1$2
Giai đoạn thứ hai xử lý chuyển bánh răng xuống, và hoạt động tương tự. Nó trông tùy chọn cho một nhân vật trước không gian, sau đó một số bánh răng khác sau khi kết thúc 6
, tiếp theo là d
. Nó hoán đổi không gian với nhân vật trước nó, xóad
và giữ nguyên phần còn lại. Nếu khoảng trắng ở đầu chuỗi, không có kết quả khớp nào cho một ký tự trước khoảng trắng, do đó không xảy ra hoán đổi.
.* (.).*
$1
Sau khi không thể thay thế ở trên nữa, tất cả các chuyển số đã được hoàn thành. Các dòng được xóa tất cả mọi thứ trừ thiết bị ngay sau không gian. Đây là thiết bị cuối cùng.