
Envoyé par
Flodelarab
@kolodz: il ne cherche pas à résoudre un mot-croisés mais à fabriquer un mot-croisés.
La fabrication doit nécessairement prendre en compte le croisement des mots. Une fois un mot placé, il est nécessaire de le prendre en compte pour ajouter un nouveau mot(avec sa définition).
Or une fois que on a placé plusieurs mots en horizontale, si on veut placer un mot en vertical par-dessus :
Il est nécessaire que celui-ci match au niveau des deux intersections.
C'est là que l'algorithme va faire le plus de calcul. En l'endroit où il va décidé du mot qu'il va utiliser par rapport au mot qu'il peut utiliser. Il faut donc faire un parcours sur l'ensemble des mots pour savoir ceux qui sont valide. Ce qui prendre beaucoup de temps. Sauf, si tu as un index pré-existant qui te donne la réponse directement.
D'ailleurs plus, le mots-croisés est dense au niveau des croisements, plus les contraintes sont fortes. Après, par rapport à l'algorithme en lui-même, il me semble qu'il faut placer les mot long en premier, car ceux-ci crée plus de contraintes et sont plus rare. Mais, cela ne change pas qu'il te sera nécessaire d'avoir une indexation/optimisation quelconque.
Après, il est possible de donnée des contraintes de constructions à l'algorithme pour que celui-ci n'autorise pas l'ajout d'un mot contenant certaines lettres (ou suite de lettre) là où il est sensé avoir une intersection. Va trouver un mot en "kr" par exemple. (Pas besoin de parcourir le dictionnaire pour savoir que c'est (trop) rare.)
Cordialement,
Patrick Kolodziejczyk.
Partager