Forum tama's team

cp: ne peut évaluer `brain': Aucun fichier ou dossier de ce type
AccueilPortailGalerieCalendrierFAQRechercherS'enregistrerMembresGroupesConnexion
Connexion
Nom d'utilisateur:
Mot de passe:
Connexion automatique: 
:: Récupérer mon mot de passe
Derniers sujets
» Network, essai 1
par godbod Dim 09 Juil 2017, 02:18

» GODBOD
par godbod Sam 08 Juil 2017, 14:05

» Numbers
par godbod Sam 08 Juil 2017, 13:54

» Mort ?
par godbod Sam 08 Juil 2017, 13:47

» mon humeur
par Ver2guerre Sam 30 Juil 2016, 19:44

» [A voir] Programme de traduction original : WikiTranslate
par AdRiWeB Lun 01 Fév 2016, 04:50

» Reprise ?
par Emyl Jeu 14 Juin 2012, 21:17

» Euh, ah ?
par Ver2guerre Dim 27 Mai 2012, 12:11

» Problème TI 89 Titanium non visible après mise à jour
par abdoukid Mer 23 Mai 2012, 13:37

» Y'a quelqu'un ?
par Ver2guerre Sam 21 Avr 2012, 23:10

Quick message
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Le record du nombre d'utilisateurs en ligne est de 367 le Dim 18 Oct 2009, 00:16

Partagez | 
 

 Rechercher une chaine de caractères

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Ver2guerre
chasseur en chef
chasseur en chef
avatar

Nombre de messages : 3139
Age : 106
Localisation : Partout en même temps (V2g quantique)
Loisirs : #pkill boulet
Humeur : Happy :)
items :
Personalized field : 12 jetons
Réputation : 8
Points : 5108
Date d'inscription : 15/09/2007

Profil
TI: (TI-89Tita)^2+TI83Plus
TO: 50 [2380 - 2%] {54}
Spécialité: Autres

MessageSujet: 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.

_________________
Help, j'ai rien compris

C'est moche :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7024
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: 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...

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ver2guerre
chasseur en chef
chasseur en chef
avatar

Nombre de messages : 3139
Age : 106
Localisation : Partout en même temps (V2g quantique)
Loisirs : #pkill boulet
Humeur : Happy :)
items :
Personalized field : 12 jetons
Réputation : 8
Points : 5108
Date d'inscription : 15/09/2007

Profil
TI: (TI-89Tita)^2+TI83Plus
TO: 50 [2380 - 2%] {54}
Spécialité: Autres

MessageSujet: 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.

_________________
Help, j'ai rien compris

C'est moche :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7024
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: 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...

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
nay0w
légende
légende


Nombre de messages : 797
Age : 24
Localisation : Dans l'coin!
Humeur : Bonne x)
items : o
Personalized field : 10 jetons
Réputation : 0
Points : 3836
Date d'inscription : 11/02/2008

Profil
TI: 82Fr / 89-Titanium
TO: 3 825
Spécialité: Autre

MessageSujet: Re: Rechercher une chaine de caractères   Lun 01 Sep 2008, 19:33

T'offres un dictionnaire avec ton programme %]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7024
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: Rechercher une chaine de caractères   Lun 01 Sep 2008, 19:35

lol, ça peut le faire sous forme d'ebook triso

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Syfo
Pokémophile
Pokémophile
avatar

Nombre de messages : 1978
Age : 26
Localisation : IYA
items :

Personalized field : 26 jetons
Réputation : 8
Points : 4347
Date d'inscription : 09/08/2007

Profil
TI: 80, 82, 83, 83+, 84+
TO: 2 945 [GAIN * 1.1]
Spécialité: Basic z80

MessageSujet: 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.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7024
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: 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 ...

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Syfo
Pokémophile
Pokémophile
avatar

Nombre de messages : 1978
Age : 26
Localisation : IYA
items :

Personalized field : 26 jetons
Réputation : 8
Points : 4347
Date d'inscription : 09/08/2007

Profil
TI: 80, 82, 83, 83+, 84+
TO: 2 945 [GAIN * 1.1]
Spécialité: Basic z80

MessageSujet: 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?

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ver2guerre
chasseur en chef
chasseur en chef
avatar

Nombre de messages : 3139
Age : 106
Localisation : Partout en même temps (V2g quantique)
Loisirs : #pkill boulet
Humeur : Happy :)
items :
Personalized field : 12 jetons
Réputation : 8
Points : 5108
Date d'inscription : 15/09/2007

Profil
TI: (TI-89Tita)^2+TI83Plus
TO: 50 [2380 - 2%] {54}
Spécialité: Autres

MessageSujet: 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.

_________________
Help, j'ai rien compris

C'est moche :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7024
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: 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.

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ver2guerre
chasseur en chef
chasseur en chef
avatar

Nombre de messages : 3139
Age : 106
Localisation : Partout en même temps (V2g quantique)
Loisirs : #pkill boulet
Humeur : Happy :)
items :
Personalized field : 12 jetons
Réputation : 8
Points : 5108
Date d'inscription : 15/09/2007

Profil
TI: (TI-89Tita)^2+TI83Plus
TO: 50 [2380 - 2%] {54}
Spécialité: Autres

MessageSujet: 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.

_________________
Help, j'ai rien compris

C'est moche :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7024
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: Rechercher une chaine de caractères   Sam 06 Sep 2008, 14:20

mais c'est pour quoi que tu veux ça ?

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ver2guerre
chasseur en chef
chasseur en chef
avatar

Nombre de messages : 3139
Age : 106
Localisation : Partout en même temps (V2g quantique)
Loisirs : #pkill boulet
Humeur : Happy :)
items :
Personalized field : 12 jetons
Réputation : 8
Points : 5108
Date d'inscription : 15/09/2007

Profil
TI: (TI-89Tita)^2+TI83Plus
TO: 50 [2380 - 2%] {54}
Spécialité: Autres

MessageSujet: 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 ^^)

_________________
Help, j'ai rien compris

C'est moche :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7024
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: Rechercher une chaine de caractères   Sam 06 Sep 2008, 14:30

WoW ?

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ver2guerre
chasseur en chef
chasseur en chef
avatar

Nombre de messages : 3139
Age : 106
Localisation : Partout en même temps (V2g quantique)
Loisirs : #pkill boulet
Humeur : Happy :)
items :
Personalized field : 12 jetons
Réputation : 8
Points : 5108
Date d'inscription : 15/09/2007

Profil
TI: (TI-89Tita)^2+TI83Plus
TO: 50 [2380 - 2%] {54}
Spécialité: Autres

MessageSujet: 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.

_________________
Help, j'ai rien compris

C'est moche :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7024
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: 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

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ver2guerre
chasseur en chef
chasseur en chef
avatar

Nombre de messages : 3139
Age : 106
Localisation : Partout en même temps (V2g quantique)
Loisirs : #pkill boulet
Humeur : Happy :)
items :
Personalized field : 12 jetons
Réputation : 8
Points : 5108
Date d'inscription : 15/09/2007

Profil
TI: (TI-89Tita)^2+TI83Plus
TO: 50 [2380 - 2%] {54}
Spécialité: Autres

MessageSujet: 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.

_________________
Help, j'ai rien compris

C'est moche :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Syfo
Pokémophile
Pokémophile
avatar

Nombre de messages : 1978
Age : 26
Localisation : IYA
items :

Personalized field : 26 jetons
Réputation : 8
Points : 4347
Date d'inscription : 09/08/2007

Profil
TI: 80, 82, 83, 83+, 84+
TO: 2 945 [GAIN * 1.1]
Spécialité: Basic z80

MessageSujet: 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)

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ver2guerre
chasseur en chef
chasseur en chef
avatar

Nombre de messages : 3139
Age : 106
Localisation : Partout en même temps (V2g quantique)
Loisirs : #pkill boulet
Humeur : Happy :)
items :
Personalized field : 12 jetons
Réputation : 8
Points : 5108
Date d'inscription : 15/09/2007

Profil
TI: (TI-89Tita)^2+TI83Plus
TO: 50 [2380 - 2%] {54}
Spécialité: Autres

MessageSujet: 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 ^^

_________________
Help, j'ai rien compris

C'est moche :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Syfo
Pokémophile
Pokémophile
avatar

Nombre de messages : 1978
Age : 26
Localisation : IYA
items :

Personalized field : 26 jetons
Réputation : 8
Points : 4347
Date d'inscription : 09/08/2007

Profil
TI: 80, 82, 83, 83+, 84+
TO: 2 945 [GAIN * 1.1]
Spécialité: Basic z80

MessageSujet: 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)?

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ver2guerre
chasseur en chef
chasseur en chef
avatar

Nombre de messages : 3139
Age : 106
Localisation : Partout en même temps (V2g quantique)
Loisirs : #pkill boulet
Humeur : Happy :)
items :
Personalized field : 12 jetons
Réputation : 8
Points : 5108
Date d'inscription : 15/09/2007

Profil
TI: (TI-89Tita)^2+TI83Plus
TO: 50 [2380 - 2%] {54}
Spécialité: Autres

MessageSujet: Re: Rechercher une chaine de caractères   Sam 06 Sep 2008, 16:49

sur 89tita et V200 : 2,7 Mo je crois.

_________________
Help, j'ai rien compris

C'est moche :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
AdRiWeB
amis
amis
avatar

Nombre de messages : 3655
Age : 25
Localisation : Juste sous mes cheveux
Loisirs : Internet, programmation, TI, musique, tennis-de-table ...
Humeur : ^^
items : o
Personalized field :
Réputation : 0
Points : 3866
Date d'inscription : 12/08/2007

Profil
TI: TI-84 Plus, nspire CAS
TO: 2429 {2}
Spécialité: Basic z80

MessageSujet: Re: Rechercher une chaine de caractères   Sam 06 Sep 2008, 18:38

mouarf, 20 Mo sur la nspire cas ^^'

_________________

LE blog des 83+ et 84+ : programmes scolaires, aides, deblocages, jeux...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.adriweb.net
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7024
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: 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)

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Rechercher une chaine de caractères   

Revenir en haut Aller en bas
 

Rechercher une chaine de caractères

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum tama's team :: Dead corner :: Archives :: Archives 2008-
Créer un forum | © phpBB | Forum gratuit d'entraide | Contact | Signaler un abus | Forum gratuit