Dans un puzzle croisé, certaines lettres sont données et nous devons déterminer quel mot complet pouvons-nous en faire. Par exemple, des lettres "CWD" données dans le même ordre, nous pouvons faire le mot "mots croisés" ou "foule" avec elle. Mais si "DW" est donné dans cet ordre, nous ne pouvons pas faire de "mots croisés", car d et w sont dans l'ordre inverse ici.
Nous devons trouver une méthode efficace et écrire un code pour ce processus. Le code prendra deux chaînes comme entrée dans deux lignes. La première chaîne contiendra des lettres sur le bouton croisé ("CWD") et la deuxième chaîne contiendra un mot que nous voulons vérifier. (C'est-à-dire que nous voulons vérifier si le mot peut être fait de lettres données dans le même ordre) . La sortie doit dire "oui" si le mot peut être formé, sinon il devrait dire "non" p>
J'ai écrit un code: p> mais Je ne reçois pas la sortie correcte. P> où, p> lettres = CCWD # des réserves déjà dans le bouton croisé p> GUEST = Crossword #word pour vérifier l'ajustement < / p> p>
6 Réponses :
Dans votre premier exemple, vous souhaitez trouver un mot contenant l'expression régulière pour "n'importe quoi (ou rien)" est Alors, vous voulez Pour rechercher cette expression régulière: p> C code>, suivi de n'importe quoi (ou rien), suivi de w code>, suivi de n'importe quoi (ou rien ), suivi de d code>. . * p>
Je pense qu'elle recherche une solution générique, mais cela est particulièrement particulier à une affaire.
@yabhishek Ce code est trivialement adaptable à une solution générale. Quelle est votre objection?
Mon point est que, si le motif est donné, il peut être généralisé en insérant . * Code> s entre ses caractères comme motif = '. *'. Joindre (Liste) code>.
Si vous recherchez une solution générique, essayez-la - supposons que vous ayez une liste, appelons-le lst code>, de mots de dictionnaire et que vous recevez un motif, disons pat Et vous voulez savoir lequel des mots de la liste correspondent au modèle. Cela peut être fait en construisant une expression régulière tout en séparant chacun des caractères de motif par . * Code> pour permettre l'insertion 0 code> ou plusieurs caractères entre eux. Le programme suivant réalise que pattern = "xyz" # can be replaced to have the desired pattern
lst =["crossword", "crowd"] # this can be replaced to contain the words of your choice
pattern = '.*'.join(list(pattern)) # modifies the pattern to include .* between each of the characters of the pattern
obj = re.compile(pattern) # create compiled regex object to use it again and again
for word in lst:
if obj.search(word):
print "Yes"
else:
print "No"
Comme mentionné, ajouter des caractères spéciaux B / W Lettres dans l'entrée et la recherche de ce modèle
x=re.findall(".*".join(list(letters)),guess)
if (x):
print("yes")
else:
print("no")
lets=input()
guess=input()
i = 0
for x in guess:
if x == lets[i]:
i += 1
if i >= len(lets): break
if (i == len(lets)):
print("Yes")
else:
print("No")
Utilisation de Regex Import Re let = Entrée () deviness = entrée () Scrabble = re.findall (". *". Joindre (Liste (List)), devinez-le ("Oui") Sinon: Imprimer ( "non")
Ce code fonctionnera pour votre question.
### import Library for using re.compile() method
import re
### letters already in the crossword
letters=input()
### word to check for fit
guess=input()
### modify letters to include .* between each character
x=re.findall(".*".join(list(letters)),guess)
if (x):
print("yes")
else:
print("no")
Pour le problème tel que défini, vous pouvez utiliser une expression régulière, mais vous devez couvrir des cas où un préfixe ou un suffixe est ajouté (pas seulement des lettres entre): si vous êtes Non autorisé à utiliser des bibliothèques, vous pouvez le faire avec une fonction récursive: p> pour un mot croisé réel, une méthode très efficace serait de créer un index des ensembles de mots pour chaque Lettre de la longueur-positan. Vous pouvez ensuite combiner les ensembles pour les positions de lettre connue de votre mot incomplet: p> par exemple: p> chargement de l'index peut prendre quelques secondes, mais , après cela, le temps de réponse est instantané. p> sortie: p> Vous pouvez également utiliser la fonction pour résoudre les problèmes de Scrabble en l'alimentant diverses longueurs et filtrage Sur les lettres disponibles: p> une variante de cela pourrait être faite pour Hangman. P> P>
Vous devrez nous dire ce que
lettres code> etdevinez code> sont.