Завдання
Визначте простий регулярний вираз як не порожній регулярний вираз, що складається тільки з
- символів
0
і1
, - групування дужок
(
та)
, - одно-або більше кількісний показник повторення
+
.
Враховуючи не порожній рядок 0
s і 1
s, ваша програма повинна знайти найкоротший простий регулярний вираз, що відповідає повній вхідній рядку. (Тобто, при збігу простий регулярних виразів, робити вигляд , що це bookended від ^
і $
.) Якщо існує кілька регулярних виразів найкоротших, виведіть будь-який з них або все.)
код-гольф , тому найкоротше подання (у байтах) виграє.
Тестові кейси
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
цікавий випадок ... написав би наївний алгоритм 01+0+1+0
чи (0+1+)+0
не є оптимальним.