Bài tập
Xác định một biểu thức chính đơn giản như một biểu thức chính quy không rỗng chỉ bao gồm
- nhân vật
0
và1
, - nhóm dấu ngoặc đơn
(
và)
, - định lượng lặp lại một hoặc nhiều
+
.
Đưa ra một chuỗi 0
s và 1
s không trống , chương trình của bạn sẽ tìm thấy biểu thức chính đơn giản ngắn nhất phù hợp với chuỗi đầu vào đầy đủ . (Nghĩa là, khi khớp với một biểu thức chính đơn giản, hãy giả vờ rằng nó bị vùi dập bởi ^
và $
.) Nếu có nhiều biểu thức chính ngắn nhất, hãy in bất kỳ hoặc tất cả chúng.)
code-golf , vì vậy bài nộp ngắn nhất (tính bằng byte) sẽ thắng.
Các trường hợp thử nghiệm
1 -> 1
00 -> 00 or 0+
010 -> 010
1110 -> 1+0
01010 -> 01010
0101010 -> 0(10)+ or (01)+0
011111 -> 01+
10110110 -> (1+0)+
01100110 -> (0110)+ or (01+0)+
010010010 -> (010)+
111100111 -> 1+001+ or 1+0+1+
00000101010 -> 0+(10)+ or (0+1)+0
1010110001 -> 1(0+1+)+ or (1+0+)+1
01100110
là một trường hợp thú vị ... một thuật toán ngây thơ sẽ viết 01+0+1+0
hoặc (0+1+)+0
không tối ưu.