estoy leyendo a través de la dragon book y tratando de resolver un ejercicio que se expresan como sigue¿Expresión regular para cadena de dígitos sin dígitos repetidos?
Escribir las definiciones regulares para los siguientes idiomas:
- Todas las cadenas de dígitos sin dígitos repetidos. Sugerencia: Primero pruebe este problema con algunos dígitos, como {0, 1, 2}.
A pesar de haber intentado resolver durante horas, no puedo imaginar una solución, al lado de la muy prolijo
d0 -> 0?
d1 -> 1?
d2 -> 2?
d3 -> 3?
d4 -> 4?
d5 -> 5?
d6 -> 6?
d7 -> 7?
d8 -> 8?
d9 -> 9?
d10 -> d0d1d2d3d4d5d6d7d8d9 | d0d1d2d3d4d5d6d7d9d8 | ...
lo tanto tener que escribir 10!
alternativas en d10
. Dado que vamos a escribir esta definición regular, dudo que esta es una solución adecuada. ¿Puedes ayudarme por favor?
Un disccussion de una pregunta similar se encuentra en: http://www.perlmonks.org/?node_id=353072 –
utilizando Quizás rellamadas ayudarían? –
¿Quizás el autor está tratando de mostrarle que una expresión regular no siempre es la representación más compacta? Una máquina de estados finitos para hacer esto sería bastante compacta. Es bastante fácil mostrar que este es un lenguaje común, pero eso no significa que tenga una representación breve como expresión regular ... Como otros señalaron si se permite que el operador del complemento cambie las cosas. Wikipedia tiene una buena discusión bajo Expresión regular. –