Các thách thức
Cho một regex hợp lệ, xuất ra một regex khớp với cùng một chuỗi các chuỗi, nhưng bị đảo ngược.
Nhiệm vụ
Thách thức này sử dụng hầu hết các hoạt động regex cơ bản: ^
, $
, ?
, +
, *
, []
, {}
, |
. Không có thứ gọi là nhóm bắt giữ hay bất kỳ thứ phức tạp nào. Nhân vật đặc biệt có thể được trốn thoát.
Đầu vào / đầu ra mẫu
Lưu ý: Đầu vào không hợp lệ sẽ không bao giờ được đưa ra và thường có nhiều câu trả lời có thể có cho một đầu vào nhất định!
Input | Sample Output
-----------|-------------
abc | cba
tuv? | v?ut
a(b|c) | (c|b)a
1[23] | [23]1
a([bc]|cd) | (dc|[bc])a
^a[^bc]d$ | ^d[^bc]a$
x[yz]{1,2} | [yz]{1,2}x
p{2} | p{2}
q{7,} | q{7,}
\[c[de] | [de]c\[
ab[c | <output undefined>
a(?bc) | <output undefined>
a[]]bc | <output undefined>
Bản giới thiệu
Bản demo làm việc thể hiện đầu vào / đầu ra chính xác. Điều này có một số logic bổ sung để xác nhận các đầu vào không cần thiết trong một câu trả lời thực sự. Xem xét đầu vào không hợp lệ là hành vi không xác định.
Cụ thể
Để đơn giản, tất cả các ký tự đặc biệt hoặc có ý nghĩa đặc biệt của chúng hoặc được thoát; đó là, [[]
không phải là một phạm vi nhân vật cho [
. Phạm vi chiều dài đến từ ERE POSIX tiêu chuẩn; có nghĩa là, {n}
, {n,}
, và {n,m}
được hỗ trợ. Phạm vi nhân vật []
và [^]
được hỗ trợ. Do các quy tắc này và vì không có đầu vào không hợp lệ nào được đưa ra, bạn thực sự chỉ cần sao chép trực tiếp nội dung của các quy tắc này vào đầu ra. Cuối cùng, sự tham lam không thành vấn đề, tức là không thành vấn đề nếu regex đảo ngược tìm thấy một kết hợp khác trước, nó chỉ cần tìm một kết quả khớp cho cùng một chuỗi.
Chấm điểm
Chương trình nhỏ nhất tính bằng byte (chặn gian lận như yêu cầu mạng) sẽ thắng. Chương trình có thể sử dụng IO thực hoặc chỉ đơn giản là xác định hàm.
(^a|b)(c$|d)
là một trường hợp thử nghiệm mặc dù.
(a)?(b)+
↦ (b)+(a)?
?
()
, được sử dụng trong ví dụ của bạn.
?
để đính kèm. Hãy thử gõ/a(?bc)/
vào bảng điều khiển của trình duyệt.