Re: Tricher au scrabble...

Liste des GroupesRevenir à fcl python 
Sujet : Re: Tricher au scrabble...
De : ram (at) *nospam* zedat.fu-berlin.de (Stefan Ram)
Groupes : fr.comp.lang.python
Date : 28. Nov 2023, 14:22:24
Autres entêtes
Organisation : Stefan Ram
Message-ID : <recherche-20231128131821@ram.dialup.fu-berlin.de>
References : 1
Dominique <dominique.sextant@orange.fr.invalid> writes:
Ce script fonctionne en deux blocs.

  Il y a encore une remarque à faire sur le style de programmation :
  si un script est composé de deux blocs, il sera plus clair
  pour le lecteur si chaque bloc est défini comme une fonction
  et nommé par sa tâche.

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...

  Voici une approche possible (sans essayer d'optimiser quoi que ce
  soit) :

dictionnaire =[ 'cab', 'ba', 'ccab' ]

def possible( mots, mes_lettres, longueur ):
    '''Le mot a-t-il la longueur indiquée et les lettres de
    "mes_lettres" sont-elles suffisantes pour former le mot ?'''
    if len( mots )!= longueur: return False
    for lettre in mots:
        if mots.count( lettre )> mes_lettres.count( lettre ):
            return False
    return True

def mots_possibles( dictionnaire, mes_lettres, longueur ):
    '''Tous les mots du dictionnaire qui ont la longueur indiquée et qui
    peuvent être formés avec les lettres du « mes_lettres ».'''
    résultat = []
    for mots in dictionnaire:
        if possible( mots, mes_lettres, longueur ):
            résultat.append( mots )
    return résultat

def mots_de_longueur_maximale( dictionnaire, mes_lettres ):
    '''Trouve dans le dictionnaire des mots de longueur maximale qui
    peuvent être formés avec les lettres indiquées.'''
    for longueur in range( len( mes_lettres ), 1, -1 ):
        résultat = mots_possibles( dictionnaire, mes_lettres, longueur )
        if résultat: return résultat
    return []

for mes_lettres in[ 'abc', 'ab', 'abx', 'axy' ]:
    print( mots_de_longueur_maximale( dictionnaire, mes_lettres ))



Date Sujet#  Auteur
28 Nov 23 * Tricher au scrabble...23Dominique
28 Nov 23 +* Re: Tricher au scrabble...2Stefan Ram
28 Nov 23 i`- Re: Tricher au scrabble...1Dominique
28 Nov 23 +* Re: Tricher au scrabble...13Stefan Ram
28 Nov 23 i+* Re: Tricher au scrabble...11Dominique
1 Dec 23 ii`* Re: Tricher au scrabble...10yves
1 Dec 23 ii `* Re: Tricher au scrabble...9yves
2 Dec 23 ii  `* Re: Tricher au scrabble...8Michel
7 Dec 23 ii   `* Re: Tricher au scrabble...7yves
7 Dec 23 ii    +- Re: Tricher au scrabble...1Michel
7 Dec 23 ii    +- Re: Tricher au scrabble...1Thierry Pinelli
7 Dec 23 ii    `* Re: Tricher au scrabble...4Stefan Ram
7 Dec 23 ii     +- Re: Tricher au scrabble...1Thierry Pinelli
7 Dec 23 ii     +- Re: Tricher au scrabble...1yves
7 Dec 23 ii     `- Re: Tricher au scrabble...1yves
28 Nov 23 i`- Re: Tricher au scrabble...1Michel
28 Nov 23 +* Re: Tricher au scrabble...5yves
28 Nov 23 i+* Re: Tricher au scrabble...2yves
29 Nov 23 ii`- Re: Tricher au scrabble...1Dominique
28 Nov 23 i`* Re: Tricher au scrabble...2Stefan Ram
28 Nov 23 i `- Re: Tricher au scrabble...1yves
28 Nov 23 `* Re: Tricher au scrabble...2Michel
29 Nov 23  `- Re: Tricher au scrabble...1Dominique

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal