Implémentation dawg

Soyez le premier à donner votre avis sur cette source.

Vue 4 382 fois - Téléchargée 234 fois

Description

Voici une proposition d'une implémentation d'un dictionnaire en C avec recherche de mot et d'anagramme avec en bonus une implémentation d'une liste "générique" en C.
N'hésitez pas à critiquer/proposer des amélioration ou des autres fonctionnalités !

Pour que le dico marche, il faut ce fichier : http://www.madfix.com/ods/ods5.txt (un peu lourd donc je n'ai pas pu le mettre directement)

Pour compiler avec gcc (sous linux, étant placé dans le dossier ou a été décompressée l'archive):

$gcc -c -std=gnu99 -pedantic -Wall *.c
$gcc -o dawg *.o

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Certes si on demande les mots "formables" (pas vu dans le Larousse) partant de 'ABCD' on va parcourir au complet de la table 4 jusque 15.
Messages postés
2
Date d'inscription
dimanche 25 juillet 2010
Statut
Membre
Dernière intervention
26 juillet 2010

Donc quand tu veux par exemple les mots de 10 lettres finissant par 'S' je suppose que tu comptes d'abord le nombres de caractères à sauter, puis le nombre de caractères à lire. Tu lis les mots situés entre tes deux bornes un à un et tu regardes si y'a un 'S' final.
Économique en mémoire certes, et certainement aussi voir plus rapide pour la recherche d'anagramme avec inconnu( et encore je vais essayer d'implémenter la même fonctionnalité pour tester), mais l'est ce vraiment quand il s'agit de trouver tous les mots "formables" (pas de fautes me dit mon correcteur, ce mot existe ? Oo) avec les lettres d'un autres : avec cette méthode, pas d'autres choix que de lire tous les mots de l'ods :s
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Les mots de 2 lettres tous à la suite, ensuite ceux de 3 etc jusque 15.
Plus aucun espace ni saut de ligne, tous les octets à la suite.
En début de fichier, 15 DWORDs (direct en binaire) indiquant combien de mots dans chaque table de 2 à 15.
Messages postés
2
Date d'inscription
dimanche 25 juillet 2010
Statut
Membre
Dernière intervention
26 juillet 2010

Le but principale était de faire créer puis de faire mumuse avec un dawg en fait. Je n'ai pas encore testé scrbbl mais dès qu'un windows me tombe sous la main je le fais ! (wine il aime pas quand c'est du 64bits U__U)

Par contre : "En structurant les mots du ods5.txt sous forme de tables dans un fichier binaire" peux tu m'expliquer un peu plus ta méthode ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Si c'est pour une démo des listes, ok.

Sinon il est totalement inutile de charger tous les mots sous forme de liste.
En structurant les mots du ods5.txt sous forme de tables dans un fichier binaire, on a un accès ultra rapide et on encombre nettement moins la mémoire.

Si tu as un PC sous Win64 pour tester, essaie ceci:
http://www.brunews.com/upload_code/scrbbl.zip
ods.dat dans le zip a été fait par un prog sur la base du ods5, il n'est que de 3.61 Mo au lieu des 4.33 originaux du txt.
Ainsi fait, ods.dat se charge en 1 seul READ(), il n'y a )plus de lignes ni autres lenteurs.
Exe (9 Ko) du zip fait les anagrammes et liste les mots de longueur voulue avec les lettres qu'on précise, résultat instantané: exemple 10 lettres an spécifiant 'S' final seulement result 25700 mots illico affichés.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.