Giới thiệu
Tôi không thấy nhiều thách thức regex ở đây, vì vậy tôi muốn đưa ra thử thách đơn giản này có thể được thực hiện theo một số cách sử dụng một số hương vị regex. Tôi hy vọng nó cung cấp cho những người đam mê regex với một chút thời gian chơi golf vui vẻ.
Thử thách
Thách thức là để phù hợp với những gì tôi đã rất lỏng lẻo gọi là một sê-ri "bình đẳng": một loạt các số lượng nhân vật khác nhau bằng nhau. Điều này được mô tả tốt nhất với các ví dụ.
Trận đấu:
aaabbbccc
xyz
iillppddff
ggggggoooooollllllffffff
abc
banana
Không khớp:
aabc
xxxyyzzz
iilllpppddff
ggggggoooooollllllfff
aaaaaabbbccc
aaabbbc
abbaa
aabbbc
Để khái quát hóa, chúng tôi muốn khớp một chủ đề của biểu mẫu ( cho bất kỳ danh sách các ký tự nào , ở đâu cho tất cảc1)n(c2)n(c3)n...(ck)n
c1
ck
ci != ci+1
i, k > 1, and n > 0.
Làm rõ:
Đầu vào sẽ không trống.
Một ký tự có thể lặp lại sau trong chuỗi (ví dụ: "chuối")
k > 1
, vì vậy sẽ luôn có ít nhất 2 ký tự khác nhau trong chuỗi.Bạn chỉ có thể giả sử các ký tự ASCII sẽ được chuyển làm đầu vào và không có ký tự nào là dấu kết thúc dòng.
Quy tắc
(Cảm ơn Martin Ender vì khối quy tắc được nêu rõ này)
Câu trả lời của bạn nên bao gồm một regex duy nhất, không có bất kỳ mã bổ sung nào (ngoại trừ, tùy chọn, một danh sách các sửa đổi regex cần thiết để làm cho giải pháp của bạn hoạt động). Bạn không được sử dụng các tính năng của hương vị regex của ngôn ngữ cho phép bạn gọi mã bằng ngôn ngữ lưu trữ (ví dụ: công cụ e
sửa đổi của Perl ).
Bạn có thể sử dụng bất kỳ hương vị regex nào tồn tại trước thử thách này, nhưng vui lòng chỉ định hương vị.
Đừng cho rằng regex được neo hoàn toàn, ví dụ nếu bạn đang sử dụng Python, giả sử rằng regex của bạn được sử dụng với re.search chứ không phải với re.match. Regex của bạn phải khớp với toàn bộ chuỗi cho các chuỗi bình đẳng hợp lệ và không mang lại kết quả khớp nào cho các chuỗi không hợp lệ. Bạn có thể sử dụng nhiều nhóm chụp như bạn muốn.
Bạn có thể giả định rằng đầu vào sẽ luôn là một chuỗi gồm hai hoặc nhiều ký tự ASCII không chứa bất kỳ đầu cuối dòng nào.
Đây là regex golf, vì vậy regex ngắn nhất tính bằng byte thắng. Nếu ngôn ngữ của bạn yêu cầu các dấu phân cách (thông thường /.../
) để biểu thị các biểu thức chính quy, đừng đếm chính các dấu phân cách. Nếu giải pháp của bạn yêu cầu sửa đổi, hãy thêm một byte cho mỗi sửa đổi.
Tiêu chí
Đây là môn đánh gôn thời trang tốt, vì vậy hãy quên đi hiệu quả và chỉ cần cố gắng để regex của bạn nhỏ nhất có thể.
Vui lòng đề cập đến hương vị regex nào bạn đã sử dụng và, nếu có thể, bao gồm một liên kết hiển thị bản demo trực tuyến về biểu hiện của bạn trong hành động.
banana
là bình đẳng.