Programme pour les mots croisés

Description

voici un petit programme très simple qui ouvre un dico et demande à l'utilisateur un mot avec des espaces et cherche dans le dictionnaire si un mot peut remplir ces espaces.
par example : d f le donnera difficile.

le zip contient le dico medium et small et la source.
Je précise aussi que cette source est compilable par shedskin.

j'attends des conseils et des critiques !!

Source / Exemple :


# variables, a typage statique pour shedskin
dicostart = []
tailleok = []
ok = []
egal = False
text = "first time"
compteur = 0

print "programme de resolution de mots croises par dictionnaire par clem120%\na tout moment vous pouvez taper help pour obtenir de l'aide"
print "-------------------------------------------------------------------------------"

# selection du dictionnaire de mots
print "\nentrez small pour avoir le petit dico fr (ultrarapide, petit, tres fiable)"
print "entrez latin pour avoir le dico latin (rapide, moyen, tres fiable)"
print "entrez medium pour avoir le dico fr moyen (rapide, gros, moyennement fiable)"
print "entrez big pour avoir le gros dico fr (lent, tres gros, peu fiable)"

while True:
 print "\nentrez le nom du dico :",
 adresse = raw_input()

 # interpretation de la saisie
 if adresse == "small":
  adresse = "top10000fr.txt"
 elif adresse == "medium":
  adresse = "dictionary_french.dic"
 elif adresse == "big":
  adresse = "wordlist.txt"
 elif adresse == "latin":
  adresse = "dictionary_latin.dic"
 if adresse == "help": # l'aide a tout moment
  print "\nentrez small pour avoir le petit dico fr (ultrarapide, petit, tres fiable)"
  print "entrez latin pour avoir le dico latin (rapide, moyen, tres fiable)"
  print "entrez medium pour avoir le dico fr moyen (rapide, gros, moyennement fiable)"
  print "entrez big pour avoir le gros dico fr (lent, tres gros, peu fiable)"

 # ouverture du dico
 try:
  if adresse != "help":
   Liste=file(adresse,'r')
   print "ouverture du dico..."
   Ligne=Liste.readline()
   break
 except:
  print "impossible d'ouvrir le fichier indique"

# fichier -> liste de mots, ligne par ligne
while Ligne<>"":
 dicostart.append(Ligne)

 Ligne=Liste.readline()
Liste.close()

# nouvelle liste de mots sans \n et en minuscule
dico = []
for mot in dicostart:
 mot.lower()
 dico.append(mot[0:len(mot)-1])

# entree du mot a rechercher
while True:
 tailleok = []
 ok = []
 print "veuillez entrer le mot, mettez un espace ou vous ne savez pas :",
 text = raw_input()
 if text == "":
  break
 print "--------------------------------------------------------------------------------"

 # nouvelle liste avec les mots de bonne taille
 for mot in dico:
  if len(mot) == len(text):
   tailleok.append(mot)

 # test pour savoir si les deux mots peuvent etres ==
 print "tests sur les mots..."
 for mot in tailleok:
  compteur = 0
  for lettre in mot:
   if lettre == text[compteur] or text[compteur] == " ":
    egal = True
   else:
    egal = False
    break
   compteur += 1
  if egal == True:
   ok.append(mot)

 # affichage des mots trouves
 if len(ok)>0:
  print "\nvoici la liste des mots possibles :"
  print "-------------------------------------------------------------------------------"
  for mot in ok:
   print mot, " ",
  print "\n--------------------------------------------------------------------------------"
 else:
  print "aucun mot ne correspond"

Conclusion :


Voilà avec cela vous n'avez aucune excuse pour ne pas vous mettre aux mots croisés.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.