Compito
Definire una regex semplice come espressione regolare non vuota composta solo da
- personaggi
0
e1
, - raggruppamento di parentesi
(
e)
, - uno o più quantificatori di ripetizione
+
.
Data una stringa non vuota di 0
s e 1
s, il programma dovrebbe trovare la regex semplice più breve corrispondente alla stringa di input completa . (Cioè, quando abbini una semplice regex, fai finta che sia prenotata da ^
e $
.) Se ci sono più regex più brevi, stampane una o tutte.)
code-golf , quindi vince l'invio più breve (in byte).
Casi 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
è un caso interessante ... un algoritmo ingenuo scriverebbe 01+0+1+0
o (0+1+)+0
che non sono ottimali.