Expression régulière pour des chaînes de bits avec le même nombre de 1s
Laisser L= { w in (0+1)* | w has even number of 1s}
, c'est à dire L est l'ensemble de toutes les chaînes de bits avec le même nombre de 1s. Laquelle des expressions régulières ci-dessous représente L?
Un) (0*10*1)*
B) 0*(10*10*)*
C) 0*(10*1)* 0*
D) 0*1(10*1)* 10*
Selon l'option m' D
n'est jamais correct car il ne représente pas la chaîne de bits à zéro 1s. Mais ce que sur les autres options? Nous sommes préoccupés par le nombre de 1s(ou même pas) et non pas le nombre de zéros n'a pas d'importance.
Alors laquelle est la bonne option, et pourquoi?
Notez que ce ne sont pas de la chaîne de recherche d'expressions régulières; ce sont des langues de correspondance des expressions régulières. Alors, n'oubliez pas de les ancrer lors de l'essai.
OriginalL'auteur Prasoon Saurav | 2010-04-24
Vous devez vous connecter pour publier un commentaire.
Un si faux. Elle n'est pas compensée par 0110 (ou les zéros seule chaîne non vide)
B représente OK. Je ne vais pas la peine de le prouver ici depuis les marges de page sont trop petites.
C n'obtenez pas compensée par 010101010 (zéro dans le moyen n'est pas assorti)
D comme vous l'avez dit, n'obtient pas compensée par 00 ou tout autre # sans.
Donc seulement B
Une ne correspondent
0*
La chaîne "
000
" a un nombre pair de 1 à zéro (1s) mais les regex ne correspond pas. (Je suppose que je devrais avoir dit que la regex ne correspond pas0+
que c'est la chaîne vide). --- J'ai fait ça parce que C'est important que les cas de coin qui n'avait pas été mis en place et je n'ai donc ici parce que je ne pense pas que ça valait le coup de sa propre réponse.Ah. OK, je t'ai eu... mis à Jour! Merci!
OriginalL'auteur DVK
De résoudre ce problème, vous devriez
L
qui n'est pas adapté, ou un correspondant de la chaîne deL
.De prouver le reste "correct", vous devez répondre à deux questions:
L
? Cela peut être fait par l'élaboration de propriétés de chacune des chaînes mises en correspondance doit satisfaire, par exemple, le nombre d'occurrences de certains personnages...L
compensée par la regexp? Ceci est fait en divisantL
facilement analysable sous-classes, et de montrer que chacun d'entre eux correspond au modèle à sa façon.(Pas de réponses concrètes en raison de [devoirs]).
OriginalL'auteur P Shved
Examinant le schéma
B
:Son assez évident que ce modèle ne fait correspondre les chaînes qui ont 0,2,4,...
1
'.OriginalL'auteur gnarf
De chercher des exemples qui doit correspondre mais n'en ont pas.
0
,11011
, et1100
doivent tous correspondre, mais chacun d'échec de l'un de ces quatreOriginalL'auteur Michael Mrozek
C est incorrecte car elle ne permet pas de 0s entre le deuxième 1 d'un groupe et le premier 1 le groupe suivant.
OriginalL'auteur Ignacio Vazquez-Abrams
Cette réponse qui serait le mieux pour cette langue
Votre expression ne correspond pas à 011011. Il faut lire: (0*10*10*)*, ce qui n'est pas mieux que 0*(10*10*)*
OriginalL'auteur prabhat
un script python rapide effectivement éliminé toutes les possibilités:
la sortie:
oups, my bad. lorsque l'ancrage de l'expressions (plaçant chacune entre une ^ et $), la seule qui survit B. bien sûr, si vous souhaitez toujours avoir à le prouver...
Je ne pense pas que les espaces dans les expressions régulières sont censés compter. Vous devez relancer avec les espaces ignorés.
OriginalL'auteur Igor Serebryany