| Rechercher une chaine de caractères | |
|
Auteur | Message |
---|
Ver2guerre chasseur en chef
Nombre de messages : 3145 Age : 113 Localisation : Partout en même temps (V2g quantique) Loisirs : #pkill boulet Humeur : Happy :) items : Personalized field : 12 jetons Réputation : 8 Points : 7494 Date d'inscription : 15/09/2007
Profil TI: (TI-89Tita)^2+TI83Plus TO: 50 [2380 - 2%] {54} Spécialité: Autres
| Sujet: Rechercher une chaine de caractères Lun 01 Sep 2008, 18:25 | |
| J'ai un souci en ... TI-Basic. Oui oui, j'ai bien dit TI-Basic. Je souhaite vérifier si une chaîne de caractères A (de longueur 6 au maximum) est un mot existant dans la langue française. Pour cela, plusieurs possibilités. Je peux bien sûr faire au plus simple, et faire une recherche dans un fichier texte contenant tous les mots de la langue française. Mais c'est un peu long... J'ai donc pensé à une autre possibilité : faire un tableau à 6 dimensions, avec dans chaque dimension 27 lignes/colonnes/... Ainsi, ma combinaison A de lettres peut être transformé en coordonnées de tableau. On commence par mettre 6 caractères à A, puis on prend chaque lettre et on lui associe son rang dans l'alphabet. (le caractère * pourrait être le fameux 27 ème caractère qui sert à compléter les chaînes de moins de 6 lettres.) Chaque rang de lettre correspond à une coordonnée du tableau, et on va donc voir si la cellule correspondante contient un 0 ou un 1. Un tel tableau serait donc un dictionnaire reconverti. Comme je pense que vous n'avez pas compris, je vous propose un exemple : On considère que la première combinaison (combi) de lettres est "ADS". On commence donc par mettre au total 6 caractères dans cette combinaison : - Code:
-
:right("******"&combi,6)->combi Ainsi, on a combi qui vaut "***ADS". On transforme chaque lettre en nombre, et on stock ça dans une liste de coordonnées (liste). liste vaudra donc à la fin {27,27,27,1,4,24}. On va voir dans le fameux tableau à 6 dimensions, et on cherche la cellule correspondante. (En TI-Basic, il n'est pas possible de créer des tableaux à 6 dimensions, mais il suffit de combiner les tableaux.) La cellule correspondante contient un booléen qui nous indique si le mot existe ou non. Ici, le booléen vaudra 0. Cette technique a l'avantage d'être extrêmement rapide comparée à la recherche simple, et de prendre bien moins de place en mémoire. Mais je ne vous parle pas du travail quant à la conversion d'un dictionnaire simple en un tel tableau... Je poste donc ce message pour vous demander si vous n'avez pas d'autres idées, peut-être plus fructueuses, ou plus économiques en mémoire en en vitesse. Merci d'avance pour vos réponses que j'espère nombreuses :p Je précise que le code doit être en TI-Basic. |
|
| |
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9405 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: Rechercher une chaine de caractères Lun 01 Sep 2008, 18:42 | |
| sérieusement, j'pense la même chose, c'est une technique un peu compliquée pour finalement revenir au même, non ? =/
si c'est un problème de taille, tu peux essayer de voir les techniques de compression, mais si ta chaine fait au maximum 6 lettres, autant les mettre à la suite dans une chaine "dico" par exemple, puis faire utiliser inString (en vérifiant ensuite si la position est bien multiple de 6) ou une boucle for pour comparer un par un les termes... |
|
| |
Ver2guerre chasseur en chef
Nombre de messages : 3145 Age : 113 Localisation : Partout en même temps (V2g quantique) Loisirs : #pkill boulet Humeur : Happy :) items : Personalized field : 12 jetons Réputation : 8 Points : 7494 Date d'inscription : 15/09/2007
Profil TI: (TI-89Tita)^2+TI83Plus TO: 50 [2380 - 2%] {54} Spécialité: Autres
| Sujet: Re: Rechercher une chaine de caractères Lun 01 Sep 2008, 18:54 | |
| Non justement, ça ne revient pas du tout au même. Le temps d'exécution est très différent. En faisant une recherche on est obligé d'analyser chaque ligne (par la boucle for). On peut éventuellement optimiser la recherche (grâce, effectivement, au inString, ou en analysant uniquement la première lettre de chaque ligne, puis la seconde des lignes qui correspondent, etc) mais la lenteur de la recherche est toujours là.
En revanche, la méthode du tableau à 6 dimensions permet un accès direct à l'(in)existence de la combinaison de lettre, et est ainsi beaucoup plus rapide.
Petite précision quant à ton message : mon souci n'est pas la taille du dico, mais plutôt la rapidité d'accès. |
|
| |
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9405 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: Rechercher une chaine de caractères Lun 01 Sep 2008, 19:03 | |
| bah oué mais à la base, rapidité et TI-Basic ça va plus vraiment ensemble dès qu'il s'agit d'un gros programme ... (au risque de lancer un troll...) et j'ai pas compris ton histoire de tableau à 6 dimensions... |
|
| |
nay0w légende
Nombre de messages : 797 Age : 30 Localisation : Dans l'coin! Humeur : Bonne x) items : o Personalized field : 10 jetons Réputation : 0 Points : 6216 Date d'inscription : 11/02/2008
Profil TI: 82Fr / 89-Titanium TO: 3 825 Spécialité: Autre
| Sujet: Re: Rechercher une chaine de caractères Lun 01 Sep 2008, 19:33 | |
| T'offres un dictionnaire avec ton programme |
|
| |
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9405 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: Rechercher une chaine de caractères Lun 01 Sep 2008, 19:35 | |
| lol, ça peut le faire sous forme d'ebook |
|
| |
Syfo Pokémophile
Nombre de messages : 1978 Age : 33 Localisation : IYA items :
Personalized field : 26 jetons Réputation : 8 Points : 6727 Date d'inscription : 09/08/2007
Profil TI: 80, 82, 83, 83+, 84+ TO: 2 945 [GAIN * 1.1] Spécialité: Basic z80
| Sujet: Re: Rechercher une chaine de caractères Lun 01 Sep 2008, 21:25 | |
| Je ne sais pas si tu as invente cette idee du tableau a 6 dimensions, mais elle est tout simplement geniale... Sauf que tu oublies juste une chose. Tu ne gagnes pas tant que ca en place. Si on considere qu'un element d'une matrice prend un octet en memoire, ton tableau prendra 27^6 pctets (et meme si tu compresses, ce qui serait tres complique pour la recuperation des donnees, tu peux diviser jusqu'a 8 fois la taille de ton tableau, ce qui nous fera toujours 46 Mo de donnees).
N'empeche, si ce n'est ce petit probleme, ton idee est plutot bonne. Faire tenir un dico des mots a 6 lettres sur 46Mo, je suppose que c'est tres peu. Chapeau. |
|
| |
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9405 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: Rechercher une chaine de caractères Lun 01 Sep 2008, 21:51 | |
| hmm, en attendant, j'ai toujours pas compris l'histoire de ce tableau à 6 dimensions, j'vais relire son post...
mais même 46 Mo c'est beaucoup trop pour une TI ... |
|
| |
Syfo Pokémophile
Nombre de messages : 1978 Age : 33 Localisation : IYA items :
Personalized field : 26 jetons Réputation : 8 Points : 6727 Date d'inscription : 09/08/2007
Profil TI: 80, 82, 83, 83+, 84+ TO: 2 945 [GAIN * 1.1] Spécialité: Basic z80
| Sujet: Re: Rechercher une chaine de caractères Lun 01 Sep 2008, 21:53 | |
| Hum, faut pas chercher a visualiser un tableau a 6 dimensions. C'est pas possible pour nos pauvres esprits etriques. Deja du 4 dimensions c'est trop dur.
Tu peux le voir comme six boucles for allant de 1 a 6 imbriquees. Ou pas. Comment tu fais V2g? |
|
| |
Ver2guerre chasseur en chef
Nombre de messages : 3145 Age : 113 Localisation : Partout en même temps (V2g quantique) Loisirs : #pkill boulet Humeur : Happy :) items : Personalized field : 12 jetons Réputation : 8 Points : 7494 Date d'inscription : 15/09/2007
Profil TI: (TI-89Tita)^2+TI83Plus TO: 50 [2380 - 2%] {54} Spécialité: Autres
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 13:14 | |
| J'étais parti du principe d'un tableau à 2D pour des mots de 2 lettres. Jusque là, tu suis ? Dans les cellules correspondantes aux différentes combinaisons de lettres, tu mets un booléen pour savoir si la combin' existe. Après, il suffit d'étendre le principe à 3, puis 4, puis 5, et enfin 6 dimensions. Pour le système d'accès, (prenons l'exemple d'un "méga-tableau" à 3D, donc une vérification des mots à 3 lettres) on crée plusieurs tableaux à 2 dimensions avec comme nom "t&string(le_numero_de_la_premiere_lettre)". Pour accéder à la cellule correspondante, on utilise donc : - Code:
-
t&string(le_numero_de_la_premiere_lettre)[le_numero_de_la_deuxieme_lettre,le_numero_de_la_troisieme_lettre] Sinon, Sipho, l'idée vient bien de moi, je ne l'ai pompée nul part. Donc merci pour le compliment :p Et pis finalement, je me demande si c'était pas un peu utopique de vouloir mettre un dico dans une calto. |
|
| |
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9405 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 13:44 | |
| ok pour l'idée, j'ai compris les grandes lignes ^^
pour le dictionnaire ça dépend aussi du nombre de mots, sur 1 Mo (prenons large), sachant que chaque mot fait 6 octets, tu pourrais rentrer 174762 mots de 6 lettres, c'est largement suffisant, non ? (je ne sais même pas s'il y a autant de mots à 6 lettres, à vérifier...) enfin, étant donné que la mémoire est organisée en blocs de 64ko (65535 (?) octets), ça ferait 10922 mots par bloc. |
|
| |
Ver2guerre chasseur en chef
Nombre de messages : 3145 Age : 113 Localisation : Partout en même temps (V2g quantique) Loisirs : #pkill boulet Humeur : Happy :) items : Personalized field : 12 jetons Réputation : 8 Points : 7494 Date d'inscription : 15/09/2007
Profil TI: (TI-89Tita)^2+TI83Plus TO: 50 [2380 - 2%] {54} Spécialité: Autres
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 14:18 | |
| Mmmh, intéressant. Je vais faire un petit programme en C cet après-midi pour modifier le fichier texte/dico que j'ai. Plus d'accent, tout en majuscule, et des mots de 3 à 6 lettres. On verra le nombre de mots après ça. |
|
| |
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9405 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 14:20 | |
| mais c'est pour quoi que tu veux ça ? |
|
| |
Ver2guerre chasseur en chef
Nombre de messages : 3145 Age : 113 Localisation : Partout en même temps (V2g quantique) Loisirs : #pkill boulet Humeur : Happy :) items : Personalized field : 12 jetons Réputation : 8 Points : 7494 Date d'inscription : 15/09/2007
Profil TI: (TI-89Tita)^2+TI83Plus TO: 50 [2380 - 2%] {54} Spécialité: Autres
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 14:25 | |
| Pour le jeu que je vais programmer pour le concours, (et que je posterais juste après sur la TST ^^) |
|
| |
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9405 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 14:30 | |
| |
|
| |
Ver2guerre chasseur en chef
Nombre de messages : 3145 Age : 113 Localisation : Partout en même temps (V2g quantique) Loisirs : #pkill boulet Humeur : Happy :) items : Personalized field : 12 jetons Réputation : 8 Points : 7494 Date d'inscription : 15/09/2007
Profil TI: (TI-89Tita)^2+TI83Plus TO: 50 [2380 - 2%] {54} Spécialité: Autres
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 14:50 | |
| Non non, WoW est trop long à programmer. Le moteur de jeu est terminé, mais les BDD sont vraiment gigantesques, et donc très longues à créer. |
|
| |
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9405 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 15:00 | |
| donc t'abandonnes WoW pour le moment ? ^^ bah, regardes d'abord ce que ça fait, et ensuite bah...si ça marche pas, tu redemandes :p |
|
| |
Ver2guerre chasseur en chef
Nombre de messages : 3145 Age : 113 Localisation : Partout en même temps (V2g quantique) Loisirs : #pkill boulet Humeur : Happy :) items : Personalized field : 12 jetons Réputation : 8 Points : 7494 Date d'inscription : 15/09/2007
Profil TI: (TI-89Tita)^2+TI83Plus TO: 50 [2380 - 2%] {54} Spécialité: Autres
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 15:07 | |
| Non, je n'abandonne surtout pas WoW voyons !! C'est juste que la BDD avance lentement, et qu'il ne sera donc pas fini pour le 25 octobre.
Et puis pour le dico, je regarde ça cet après-midi si j'ai le temps, sinon c'est pour demain, ou pour plus tard. |
|
| |
Syfo Pokémophile
Nombre de messages : 1978 Age : 33 Localisation : IYA items :
Personalized field : 26 jetons Réputation : 8 Points : 6727 Date d'inscription : 09/08/2007
Profil TI: 80, 82, 83, 83+, 84+ TO: 2 945 [GAIN * 1.1] Spécialité: Basic z80
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 15:37 | |
| En tout cas, avec un tel dico, les applications sont multiples (je pense a n'importe quel jeu de lettres, comme un scrabble par exemple) |
|
| |
Ver2guerre chasseur en chef
Nombre de messages : 3145 Age : 113 Localisation : Partout en même temps (V2g quantique) Loisirs : #pkill boulet Humeur : Happy :) items : Personalized field : 12 jetons Réputation : 8 Points : 7494 Date d'inscription : 15/09/2007
Profil TI: (TI-89Tita)^2+TI83Plus TO: 50 [2380 - 2%] {54} Spécialité: Autres
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 16:29 | |
| Eh bien je vais mettre un brevet sur mon principe :p Non, je dec', si vous voulez l'utiliser, ne vous en privez pas ^^ |
|
| |
Syfo Pokémophile
Nombre de messages : 1978 Age : 33 Localisation : IYA items :
Personalized field : 26 jetons Réputation : 8 Points : 6727 Date d'inscription : 09/08/2007
Profil TI: 80, 82, 83, 83+, 84+ TO: 2 945 [GAIN * 1.1] Spécialité: Basic z80
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 16:37 | |
| Bah moi chui sur z80, et meme le quart d'un mega, bah ca fait beaucoup. Sur 68k, y a combien de rom (suivant les modeles)? |
|
| |
Ver2guerre chasseur en chef
Nombre de messages : 3145 Age : 113 Localisation : Partout en même temps (V2g quantique) Loisirs : #pkill boulet Humeur : Happy :) items : Personalized field : 12 jetons Réputation : 8 Points : 7494 Date d'inscription : 15/09/2007
Profil TI: (TI-89Tita)^2+TI83Plus TO: 50 [2380 - 2%] {54} Spécialité: Autres
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 16:49 | |
| sur 89tita et V200 : 2,7 Mo je crois. |
|
| |
AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6246 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 18:38 | |
| mouarf, 20 Mo sur la nspire cas ^^' |
|
| |
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9405 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: Rechercher une chaine de caractères Sam 06 Sep 2008, 20:55 | |
| par contre, sur la 89 simple y a pas 1 Mo, y a moins (700 000 octets à peu près, j'ai plus le chiffre exact en tête :p) |
|
| |
Contenu sponsorisé
| Sujet: Re: Rechercher une chaine de caractères | |
| |
|
| |
| Rechercher une chaine de caractères | |
|