задача
Определите простое регулярное выражение как непустое регулярное выражение, состоящее только из
- персонажи
0и1, - группировка скобок
(и), - один или более квантификатор повторения
+.
Учитывая непустую строку 0s и 1s, ваша программа должна найти самое короткое простое регулярное выражение, соответствующее полной входной строке. (То есть, когда вы сопоставляете простое регулярное выражение, представьте, что оно добавлено ^ и $.) Если имеется несколько кратчайших регулярных выражений, выведите любое или все из них.)
Code-Golf , поэтому выигрывает самое короткое представление (в байтах).
Контрольные примеры
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неоптимальный.