Algorythme de rcherche predictive [C++ ] - Programmation
Marsh Posté le 27-07-2001 à 12:32:05
gicle ta hashtable et remplace-là par un arbre binaire. une hashtable est faite pour accéder rapidement à une valeur en fonction de sa clé, pas pour faire des recherches.
et pourquoi utilises-tu une hashtable 'assez complexe' pour répertorier des fichiers ?
Marsh Posté le 27-07-2001 à 12:40:26
>Moi j'utilise une fonction recursive ki remplace a chaque iteration un * par a-z0-9 puis se rapelle juska qu'un appel soit victorieux
Si tu fais un match pour chaque nom de fichier de l'archive, ta recherche est en temps constant (proportionel au nb de fichiers de l'archive).
A+,
[edtdd]--Message édité par gilou--[/edtdd]
Marsh Posté le 27-07-2001 à 13:25:44
si je puvais je le ferais mais je bosse sur un concept d'archive ki n'est pas de moi
la boite l'a dvp y a longtemps et je dois juste refaire un prog d'exploratiion (style Explorer) ds ce style d'archive
croit perso, la hash ca fait un mmnt kell aurait gicle !
j'avais pense a diviser le truc en plusieurs thread qui ferait chaucun une possiblite (style un arbre tu vois) mais ca chie si on a aps des vrais multipross
[quote]
Marsh Posté le 27-07-2001 à 13:33:16
un "concept d'archive" ... hmmhmmm. tu peux toujours créer ton arbre à la main quand tu ouvres l'archive, non ? tu vas chopper tous les fichiers, y'a plus qu'à les insérer dans un arbre.
ceci dit je vois vraiment pas du tout à quoi elle sert la hashtable ... y'a pas un bout de doc dans le code qui justifie son existence ?
threader l'algo me semble être une solution plus coûteuse qu'un bête arbre.
Marsh Posté le 27-07-2001 à 14:57:32
ah ca, le truc :
[quote]
Le format GCp est constitue de 3 parties
1 hashtable permettant a partir de noms des fichiers de retourner un pointeru DANS LE FICHIER .GCP sur ce ficheir (son offset ds l'archive koi)
1 table dite table de bloc ki comprend le header du GCP et la table de codage de la hashtable (ki ets encrypter)
les ficheirs snt donc pas visibles directement, on doit normalement y inclure un fichier du style liste.txt inclus ds l'archive ki les recenses mais ces cretins ont douzmilles archive sd e e tpye SAAN le liste.txt
Donc -> recherche systematique et aleatoire des fichiers presents
Marsh Posté le 27-07-2001 à 15:05:36
je devrais pas mais ...
c'est qui ces gens ? si j'ai bien compris tu n'as aucun moyen de connaître les noms des fichiers archivés ? roooh ...
Marsh Posté le 27-07-2001 à 15:43:52
Plutot de tenter de "realiser" ton expression reguliere de toutes les manieres possibles sur ta chaine a chercher, pourquoi ne pas simplement tenter de le matcher tel quel sur tous les noms de fichier dans ta hashtable
Marsh Posté le 27-07-2001 à 19:58:03
aha ah tu peux preciser ton idee
A savoir , les "gens" sont des gars ki bossent avec un ersatz de format MPQ (utilisé par Blizzard ds ces jeux style Diablo II)
En clair le MPQ c'est une Hash qui donnent les fichiers, une hash quiverifient ke la premiere chie pas une table de codage PKZIP pr compresser le tout alors forcement ss la doc on enchie ...
g reussie a trouver qqs trucs style evitez de chercher les enchainement comme wxwxkz en fait des trucs pas "intelligibles"
Marsh Posté le 27-07-2001 à 20:34:52
en deux secondes de google :
http://www.google.com/search?q=cac [...] +mpq&hl=en
http://www.campaigncreations.com/starcraft/mpq2k/
Marsh Posté le 27-07-2001 à 10:20:35
Voila g une seire de fichier dans une archive.
Ces fichiers sont repertories grace a une table de hachage assez complexe et certains ne sont pas repertories dans la liste de ficheirs fournis avec l'archive
G donc pondu un algo ki cherche ttt les fichiers commencant par un motif
ex SerachFor("essai***.txt" );
va chercher ds la dite archive tt les fichiers non-repertories donc le nom commence par essai.
Moi j'utilise une fonction recursive ki remplace a chaque iteration un * par a-z0-9 puis se rapelle juska qu'un appel soit victorieux
Mais ca prend un tps infifni !!!
Alors si qqn a une idee pr ameliorer ca
(et pas de truc style ben remonte la HashTable merci ...)
A +
[edtdd]--Message édité par JoeHell--[/edtdd]