Aller au contenu principal
Devino

Comment est calculée la difficulté d'un mot ?

Chaque mot du jour reçoit un score de difficulté entre 0 et 100, calculé par une formule additive sur 6 composantes linguistiques. Ce score module le bonus XP en fin de partie et équilibre la rotation des mots du jour. Voici le détail.

La formule simplifiée

score = longueur + lettres_rares + penalité_voyelles
        + clusters_consonnes + doublon + fréquence

(résultat clampé entre 0 et 100, arrondi à l'entier)

Chaque composante est additive : elle apporte un nombre de points fixe ou proportionnel. Le score brut est ensuite borné dans [0, 100] et découpé en 4 tiers.

Source de vérité : domain/difficulty.ts - fonction calculateDifficultyScore().

Les 6 composantes

1.Longueur du mot

(longueur - 4) × 8

Un mot de 5 lettres ajoute 8 points, un mot de 8 lettres ajoute 32 points. Plus le mot est long, plus il est dur à identifier.

2.Lettres rares

nb(K, W, X, Y, Z, J, Q, H) × 8

Chaque lettre rare en français ajoute 8 points. Un mot avec un Z et un Y (RYTHME) ajoute 16 points juste sur ce critère.

3.Pénalité voyelles

max(0, (0.5 - ratio_voyelles) × 20)

Si moins de la moitié des lettres sont des voyelles, le mot est plus dur à structurer mentalement. Un mot à 30% de voyelles ajoute 4 points.

4.Clusters consonantiques

nb_clusters(>=3 consonnes) × 8

Trois consonnes ou plus d'affilée (STR-, -CTR-) pénalisent le score : plus dur à lire et à deviner.

5.Lettre répétée

+ 5 si une lettre apparaît 2 fois ou plus

Les doublons réduisent la diversité informationnelle. Forfait fixe : +5 points.

6.Fréquence moyenne des lettres

(10 - fréquence_moyenne_%) × 2

Plus les lettres du mot sont rares dans le français, plus le score monte. Un mot rempli de E, A, I, S, N obtient un score bas ; un mot avec K, X, Z monte vite.

Les 4 tiers

Le score brut 0-100 est découpé en 4 tranches. Le tier détermine le bonus XP et l'icône associée.

Facile0 - 34

Mot court, lettres fréquentes, voyelles bien réparties.

Costaud35 - 54

Une seule contrainte forte : longueur ou lettre rare ou cluster.

Difficile55 - 74

Plusieurs contraintes cumulées : long + cluster, ou rare + cluster.

Expert75 - 100

Lettres très rares, clusters multiples ou mot très long. Rare en pratique.

Exemples sur des mots réels

Scores calculés directement sur le pool de solutions Devino. La distribution actuelle est environ 60% Facile, 37% Costaud, 2% Difficile, <1% Expert.

MotScoreTier
SUITE11Facile
MAISON23Facile
PREMIER34Facile
CHAMP35Costaud
RECEVOIR42Costaud
BUCHETTE54Costaud
SOUFFLET55Difficile
CONSCRIT66Difficile
GYMKHANA85Expert
Voir les explications
  • SUITE : 5 lettres très fréquentes (S, U, I, T, E), pas de lettre rare, équilibre voyelles ok.
  • MAISON : 6 lettres très fréquentes, ratio voyelles 50%, aucun cluster.
  • PREMIER : 7 lettres mais toutes courantes ; juste sous le seuil Costaud.
  • CHAMP : 5 lettres dont H (lettre rare) et un cluster CHM partiel. Tout juste Costaud.
  • RECEVOIR : 8 lettres : la longueur ajoute 32 points, mais lettres fréquentes compensent.
  • BUCHETTE : 8 lettres + H rare + double T : limite haute Costaud.
  • SOUFFLET : Cluster FFL + double F : passe la barre Difficile.
  • CONSCRIT : 8 lettres + cluster NSCR (4 consonnes consécutives) + ratio voyelles bas.
  • GYMKHANA : 8 lettres + 4 lettres rares (Y, M, K, H) + clusters multiples.

Régulation des mots Expert

Pour préserver l'effet rareté, l'algorithme empêche deux Expert d'apparaître à moins de 7 jours d'intervalle. Si un mot Expert tombe alors qu'un autre Expert a déjà été joué la semaine précédente, il est rétrogradé en Difficile (score forcé à 74).

Cette régulation est déterministe : même mot, même position dans le calendrier, même résultat. Aucun aléatoire n'intervient.

Questions fréquentes

Pourquoi les mots du jour ont-ils un score de difficulté ?

Le score module le bonus XP : un mot Difficile rapporte plus qu'un mot Facile. Il sert aussi à équilibrer la rotation des mots du jour pour éviter qu'une semaine soit trop facile ou trop dure.

Le score est-il calculé à chaque partie ?

Non, c'est une fonction pure déterministe. Pour un mot donné, le score est toujours le même (caché en mémoire au build). C'est pour ça qu'il peut être reproduit côté client.

Pourquoi le tier Expert est-il rare en pratique ?

Le seuil 75 demande très peu de mots réellement passants. De plus, une régulation évite deux Experts à moins de 7 jours d'intervalle (downgrade en Difficile pour préserver l'effet rareté). Résultat : 1 Expert pour ~2500 solutions.

Le score change-t-il avec les mises à jour du jeu ?

L'algorithme est versionné dans domain/difficulty.ts. Si on l'ajustait, les anciens mots verraient leurs scores recalculés. Les overrides manuels (forcés vers un tier spécifique) sont rares et tracés dans un fichier dédié.

Y a-t-il un override manuel possible ?

Oui, getDifficultyOverrides() permet de forcer un tier pour un mot spécifique sans toucher à l'algorithme. Utilisé pour rares cas d'erreur de classification (ex: un mot que l'algo classe Costaud mais qui est manifestement plus dur). Documenté dans le code.

Tester l'algorithme en pratique

Jouer au mot du jour