Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Dominique Newsgroups: fr.comp.lang.python Subject: Tricher au scrabble... Date: Tue, 28 Nov 2023 11:33:38 +0100 Organization: A noiseless patient Spider Lines: 62 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Tue, 28 Nov 2023 10:33:40 -0000 (UTC) Injection-Info: dont-email.me; posting-host="f64030d23be6c134d3d3404674ad6565"; logging-data="267351"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18VpAEsX+EJ91F15QF5rvBTVueSyreNdyg=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:WYHf3/6VqcqW0iwu/qpEfoQ46uA= Content-Language: fr Bytes: 2838 Bonjour, Je m'amuse à faire un logiciel de triche au Scrabble. J'ai bien les presque 350 000 mots en français au format txt. Voici mes débuts : ----------------------------------------- f=open('/home/USER/dico.txt') scrabble=dict() for i in f: j=i[:-1] mot=list(j) mot.sort() mot=''.join(mot) scrabble[str(mot)]=j del (mot) del (i) del(j) del (f) print('Création du dictionnaire terminée') test='xx' while test=='xx': lettres=input('Lettres ') lettres=list(lettres) lettres.sort() lettres=''.join(lettres) if lettres!='xx': if lettres in scrabble.keys(): print(scrabble[lettres]) else: test=9 ----------------------------------------- Ce script fonctionne en deux blocs. Le premier, qui ne tourne qu'une fois, charge le dico.text. Il parcourt chaque mot, le transforme en liste, met les lettre par ordre alpha croissant, reconstitue un string avec join. Il affecte comme values à cette keys le mot d'origine j. Le deuxième bloc me demande mes lettres, les transforme en liste, les classe par ordre alpha, reconstitue un string et voit si cette variable existe en keys dans mon dictionnaire scrabble, ce à quoi il me donne la values correspondant. Il répond à la question, dès lors que les lettres que je lui soumets existent à l'identique en clef. J'ai des limites. Par exemple, avec les lettre aberv, il me proposera brave mais pas baver. La vraie limite vient de ce que je ne vois pas trop comment faire pour que l'application cherche un mot avec mes 7 lettres, en cas d'échec, avec 6 lettres etc. Je pense que je pourrais utiliser les outils d'itertools (combination ou permutations. mais j'ai peur que les temps de traitements deviennent très longs... Comment verriez-vous les choses ? Merci et belle journée à vous tous, -- Dominique Esto quod es