Tâche
Définissez une expression régulière simple comme une expression régulière non vide composée uniquement de
- personnages
0
et1
, - regrouper les parenthèses
(
et)
, - un ou plusieurs quantificateurs de répétition
+
.
Étant donné une chaîne non vide de 0
s et 1
s, votre programme devrait trouver l'expression rationnelle simple la plus courte correspondant à la chaîne d'entrée complète . (C'est-à-dire, lorsque vous associez une expression régulière simple, faites comme si elle était reliée par ^
et $
.) S'il y a plusieurs expressions rationnelles les plus courtes, imprimez-en une ou toutes.)
code-golf , donc la soumission la plus courte (en octets) gagne.
Cas de test
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
c'est un cas intéressant ... un algorithme naïf écrirait 01+0+1+0
ou (0+1+)+0
qui n'est pas optimal.