Nhiệm vụ của bạn là tạo một chương trình xác định xem một chuỗi đã cho có phải là biểu thức chính quy hợp lệ hay không sử dụng các đoạn mã có nguồn gốc từ các trang web trên mạng StackExchange.
Đối với mục đích của thử thách này, phương ngữ biểu thức chính quy sẽ là một bộ siêu ký tự rút gọn và chủ yếu là tối thiểu : ()*?|\
. Như vậy, bạn sẽ không thể sử dụng trình phân tích cú pháp regex tích hợp.
\
được sử dụng để thoát các ký tự meta. Nó phải được theo sau bởi một siêu nhân vật.- Dấu ngoặc đơn không được cân bằng phải được cân bằng
*
và?
phải được đi trước bởi một nhân vật không phải là meta, một nhóm được ngoặc đơn hoặc một siêu ký tự thoát.- Tất cả các ký tự ASCII có thể in khác cộng với dòng mới, tab và khoảng trắng phải được hỗ trợ dưới dạng các ký tự không phải là meta. Điều gì xảy ra với một chuỗi chứa các ký tự khác là không xác định.
- Ý nghĩa thực sự của regex không quan trọng đối với thử thách này.
Ví dụ
Truthy:
abc
a?
(a|)*
()
a|b*
\*
\\
\\*
a*b?(cd|e)
+
[
}
(123\))*
\|
(a(b(c|d)*e)*f)*
(|\)*)
(abc)+*
(abc)+
+abc
^ last test case is an actual newline
Falsy:
?abc
*
**
\
(
a*?
a?*
?
a)
(\)
(|\)*
\()
|*
(?:abc)
\\**
\n
Chấm điểm
Điểm tổng thể của bạn là số lượng đoạn trích được lấy từ các câu hỏi và câu trả lời xung quanh StackExchange.
- Đoạn trích lặp đi lặp lại nhiều lần như chúng được sử dụng.
- Khoảng trắng có thể được thêm và xóa một cách tự do (vì Python, Haskell và các ngôn ngữ nhạy cảm với khoảng trắng khác) và không được tính vào số lượng đoạn trích của bạn.
- Ngoại lệ sẽ là nếu mã của bạn thực sự được viết trong Khoảng trắng .
- Đoạn trích được phép từ bất kỳ trang web StackExchange nào miễn là chúng đến từ các câu hỏi, câu trả lời và nhận xét cũ hơn (Bao gồm cả thời gian chỉnh sửa - sử dụng các bản sửa đổi cũ hơn nếu cần thiết) so với thử thách này. (Ngày 24 tháng 9 năm 2019 @ 3:30 chiều UTC)
- Đoạn trích có thể đến từ bất kỳ nơi nào trong câu hỏi, câu trả lời hoặc nội dung nhận xét, cho dù đó là trong một khối mã được định dạng trước hay không.
- Ghép một đoạn vào giữa một đoạn khác khiến đoạn trích bên ngoài được tính là hai đoạn
Điểm số thấp nhất chiến thắng!