Zadanie
Zdefiniuj proste wyrażenie regularne jako niepuste wyrażenie regularne składające się tylko z
- znaków
0i1, - grupowanie nawiasów
(i), - jeden lub więcej kwantyfikatorów powtórzeń
+.
Biorąc niepusty ciąg 0s oraz 1s, Twój program powinien znaleźć najkrótszą proste regex pasujący do pełnego wejścia ciąg. (Oznacza to, że dopasowując proste wyrażenie regularne, udawaj, że jest ono zarezerwowane przez ^ i $.) Jeśli istnieje wiele najkrótszych wyrażeń regularnych , wydrukuj jeden lub wszystkie z nich.)
code-golf , więc wygrywa najkrótsze przesłanie (w bajtach).
Przypadki testowe
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
01100110jest interesujący przypadek ... naiwny algorytm zapisałby 01+0+1+0lub (0+1+)+0który nie jest optymalny.