• [^] # Re: Autre approche : grep

    Posté par (site web personnel, Mastodon) . En réponse au journal sur le fonctionnement du jeu Wordle. Évalué à 6.

    Je remplacerais bien :

    grep -i "a" american-english | wc -l

    par (pas juste plus court mais un processus en moins aussi) :

    grep -ic a american-english

    On peut appliquer la même à

    grep -o . <<< "abcdefghijklmnopqrstuvwxyz" |
    while read letter
    do 
     echo $letter $(grep -i $letter american-english | wc -l)
    done

    et aussi minimiser l'appel à une commande externe

    for letter in a b c d e f g h i j k l m n o p q r s t u v w x y z
    do
     echo "$letter$(grep -ic $letter american-english)"
    done

    Mais en fait, on connait déjà la fréquence des lettres discriminantes grâce à l'analyse fréquentielle : ETAOIN SHRDLU pour les douze premières...

    Dans le cas présent, on pourrait appliquer ton algo à un dictionnaire fixe, words5letters obtenu par

    grep '^.....$' american-english

    que j'aurais tendance à juste écrire :

    grep -w '.....' american-english
    # ou encore
    grep -Ew '.{5}' american-english

    Mieux, le dictionnaire fixe pourrait ne contenir que la liste mise à nue par la rétro-ingénierie de ce journal.

    Dans cette liste, on pourra donc retrouver melds et ses anagrammes avec :

    grep -Eiw '[sledm]{5}' words5letters

    Et cheap et peach à partir de trois lettres seront donnés par (sauf erreur de ma part) :

    grep -Ei '(?[chp]?){3}' words5letters

    "It is seldom that liberty of any kind is lost all at once." ― David Hume