Aufgabe
Definieren Sie einen einfachen regulären Ausdruck als einen nicht leeren regulären Ausdruck, der nur aus besteht
- Zeichen
0
und1
, - Gruppierungs Klammern
(
und)
, - ein oder mehrere Wiederholungsquantifizierer
+
.
Bei einer nicht leeren Zeichenfolge von 0
s und 1
s sollte Ihr Programm den kürzesten einfachen regulären Ausdruck finden, der mit der vollständigen Eingabezeichenfolge übereinstimmt . (Wenn Sie also einen einfachen regulären Ausdruck zuordnen, tun Sie so, als wäre er mit ^
und verbucht $
.) Wenn es mehrere kürzeste reguläre Ausdrücke gibt, drucken Sie einen oder alle aus.)
Code-Golf , so dass die kürzeste Einreichung (in Bytes) gewinnt.
Testfälle
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
ist ein interessanter Fall ... ein naiver Algorithmus würde schreiben 01+0+1+0
oder (0+1+)+0
welche sind nicht optimal.