¿Cuál de las siguientes expresiones regulares representa el conjunto de todos los números binarios que son divisibles por tres? Suponga que la cuerda ϵ es divisible por tres.
(A) (0+1(01*0)*1)*
(B) (0+11+10(1+00)*01)*
(C) (0*(1(01*0)*1) *)*
(D) (0+11+11(1+00)*00)*
Respuesta: (A) (B) (C)
Explicación: Los números binarios divisibles por 3 se dividen en 3 categorías:
Números con dos 1 consecutivos o dos 1 separados por un número par de 0. Efectivamente, cada par se “cancela” a sí mismo.
(ej. 11, 110, 1100,1001,10010, 1111)
(decimales: 3, 6, 12, 9, 18, 15)
Números con tres 1 cada uno separado por un número impar de 0. Estos trillizos también se “cancelan” a sí mismos.
(ej. 10101, 101010, 1010001, 1000101)
(decimales: 21, 42, 81, 69)
Alguna combinación de las dos primeras reglas (incluidas una dentro de otra)
(por ejemplo, 1010111, 1110101, 1011100110001)
(decimales: 87, 117, 5937)
Entonces, una expresión regular que tenga en cuenta estas tres reglas es simplemente:
0*(1(00)*10*|10(00)*1(00)*(11)*0(00)*10*)*0*
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA