andoh_wilfried Le 12/07/2004 à 14:58Edité par andoh_wilfried le 12/07/2004 à 15:09 Voilà , je débute en C
je refait un jeu de scrabble (il est en basic sur ma TI et donc je veux juste refaire quelque truc en C) qui ne sera peut-être pas complet (le dictionnaire étant énorme , je vais surement me limiter à 8 ou 9 lettres pour les mots les plus long ).
Voici mes problèmes :
1) pour gérer le SAC ,j'ai le choix entre un tableau entier de code de caractères et une chaine.
Je doit melanger le SAC dont les lettres sont déjà triées lors de la création.
Existe-il une fonction random pour générer des nombres aléatoires ?
Est-il plus rapide de d'intervertir les éléments du tableau ou de manipuler une chaine de caractère ?
2) les fichiers d'aides de tigcc *.chm ne sont pas reconnu sur mon PC ; je suppose que je n'est pas l'application équivalente .
Quelqu'un peut me dire ce qu'il faut que je télécharge ?
J'ai chercher hier sur googole j'ai rien trouvé
Pour les nombres aléatoire, cf la doc de rand()
Pour la suite, je ne sais pas trop, après tout une chaîne n'est qu'un tableau de chars ....

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
J'arrive pas à acceder à la doc ; le fichier .chm n'est pas reconnu sur mon PC (un truc pas très récent ).
je suppose que je n'est pas l'application équivalente .
Quelqu'un peut me dire ce qu'il faut que je télécharge ?
Ok je vais utiliser un chaîne de caractères.
Et je vais essayer de voir si la doc n'est pas disponible sous un autre format
Je pense que ce n'est pas la peine que tu intervertisses tes lettres.
Dans ton tableau de caractères, tu as toutes les lettres possibles, et quand tu en tires une au sort, tu accèdes simplement à un indice aléatoire.

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Oui mais le problème doit venir du fait qu'il y a un nombre limité de chaque lettre.

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
C'est exactement ça Ximoon !
La seule solution que j'ai trouver c'est de melanger la chaîne contenant les lettres comme on bat un jeu de carte.
Je prends un des au hasard un nombre de lettres au milieu pour le mettre au dessus.
ça pose problème de faire ça :
char lettres[]={'a','a','b','c','d','e''e','e',...};
Et ensuite tirer une lettre au hasard, l'extraire et la remplacer par la dernière lettre du tableau ?

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
andoh_wilfried Le 12/07/2004 à 17:11Edité par andoh_wilfried le 12/07/2004 à 17:14 comprends pas !
le nombre de lettres est sensé diminuer au fil des tirages parceque dans le sac il doit y avoir 102 lettres je crois.
On parle bien de la même chose :
Je veux pouvoir melanger les lettres avant de les tirer du sac qui doit donc voir se reduire le nombre de lettres
Avec ta méthode il y toujour le même nombre de lettre NON !
Explique un peu
Extraire = Copier dans une autre var
remplacer par la dernière lettre du tableau = ecraser l'Extraction
Donc tu parle du tirage.
Ce qui veut dire que tu redimentionnes le tableau pour baisser sa taille
andoh_wilfried Le 12/07/2004 à 17:33Edité par andoh_wilfried le 13/07/2004 à 08:35 C'est bien ce que je vien de dire.
ça doit être faisable pour le tirage des lettres :
For(i=1,i<=nombre_lettre_à_tirer,i++)
On tire une lettre au hasard, on l'écrase avec la dernière, on redimensionne le sac
Merci Sasume !
Pourquoi une boucle for ?

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Chaque joueur doit avoir 7 lettres au scrabble à chaque jeu tant que le Sac le permet !
Donc il faut tirer le nombre de lettre qu'on a joué ou qu'on veut passer .
andoh_wilfried Le 15/07/2004 à 10:56Edité par andoh_wilfried le 15/07/2004 à 14:50 A part ça , j'essaie de faire tenir un dictionnaire ODS sur la TI pour le SCRABBLE.
Le véritable problème c'est le temps de recherche , il faut que ce soit très très rapide.
Je ne m'y connaît pas très bien en format de stockage de données sur TI, mais pensez qu'un fichier texte fera l'affaire ?
Je fait un ou plusieurs fichiers par nombre de lettres ; je devrait au minimum avoir 15 fichiers ( Mot de 2 à 16 lettres )
Ce que je fait c'est de donner la structure suivante à chaque ligne de mon fichier de données :
:Lettres_triés_alphabétiquement, Mot1, Mot2,............. [liste des mots écrits avec les Lettres_triés_alphabétiquement ]
Il me faudra ensuite rechercher les mots en début de chaque ligne dans le texte et retourner toute la ligne si le mot a été trouvé.
Ou puis-je trouver de la doc sur la recherche dans un fichier texte ?
[google]"boyer-moore"[/google]
[google]"hash tables"[/google]
[google]"B-trees"[/google]

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
andoh_wilfried Le 15/07/2004 à 11:39Edité par andoh_wilfried le 15/07/2004 à 14:53 Merci ; Sasume mais je risque de me noyer dans toute cette lecture moi qui ne suis qu'en Eco .
J'ai décidé de faire simple vu que le dictionnaire est trié ; ce sera une recherche dichotomique. Je pense que ça devrait être plus rapide que d'essayer d'appeler le ROM_CALL qui fati la recherche en parcourant le texte de long en large.
Ce que je veux c'est la doc TIGCC pour ouvrir et pointer en accès direct dans un fichier texte vers le debut d'une ligne de mon choix,
et recupérer soit n caractères ou toute la ligne.
Ensuite je ferai une comparaison.
andoh_wilfried Le 15/07/2004 à 12:11Edité par andoh_wilfried le 15/07/2004 à 14:52 Je suppose que ça doit ce faire avec fopen ; pour pointer vers le texte
ensuite j'incrémente le comteur jusqu'à la fin du fichier s'il le faut.
Et j'utilse memcopy ,strcmp pour recuperer une portion du Fichier texte pour faire la comparaison.
J'espère que ça sera rapide comme méthode.
qu'st que t'en pense Sasume ?
C'est un algo de recherche de chaine, non ?

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
c un algo de recherche de sous-chaîne dans un texte, ce n'est pas vraiment ce qu'on veut : on veut rechercher uniquement des chaînes entières... (et d'ailleurs la complexité serait linéaire asymptotiquement au lieu de logarithmique, ce n'est pas du tout adapté) Ou alors si on veut des sous-ensembles ou des sur-ensembles de l'ensemble des lettres voulu, il faut utiliser encore autre chose... (et alors ce sera probablement bien plus adapté de prendre un champ de bits, surtout qu'on a moins de 32 lettres ^^)
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Euh je vais d'abord relire un peu de C ( les champs byte ...etc) ce soir et on en rediscutera demain parceque là je suis un peu largué !
*******************************************************************
S' il y une proposition claire de structure pour mon dictionnaire je suis preneur
je ne suis pas assez grand ici pour décider tout seul !
*******************************************************************
C'est un algo de rechercher de debut de chaine avec des mots ayant tous la même longueur.
Pour donner un exemple clair un fichier DICO de mots de 4 lettres se présentera ainsi
:aimn,iman,main
:eirt,tire,trie
le "premier mot" est le tri des lettres par ordre alphabétique ; il me sert d'index de recherche . tout mot à rechercher sera systématiquement trié avant d'être recherché en debut de phrase . Une fois l'index trouvé , je recherche véritablement le mot d'origine.
Cette façon d'organiser les données me permettra de recupérer l'ensemble des mots qu'on peut écrire avec un tirage de lettres.
Je vais donc me servir de ça pour faire jouer calc et peut-être intégrer un mode aide .
un graph de recherche serait bien approprié, mais a mon avis un peu trop lourd pour ti ^^

Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
andoh_wilfried Le 21/07/2004 à 14:22Edité par andoh_wilfried le 21/07/2004 à 14:52 C'est quoi cette histoire de graph de recherche ?
Je suppose qu'il s'agit de partitionner le dictionnaire en mettant des points d'entrée à chaque sous partie pour y acceder le plus vite possible. Et pour celà je devrais m'aider d'un graphe sous forme d'arbre.
Le véritable problème que j'ai c'est de faire tenir un dictionnaire comme celui-ci sur la TI :
Nombre Nombre Nombre
de lettres de Mots d'octets
dans le
mot
2 76 152
3 560 1680
4 2319 9276
5 7184 35920
6 16396 98376
7 29611 207277
8 32654 261232
9 32705 294345
10 32689 326890
11 32740 360140
12 32766 393192
13 29273 380549
14 18309 256326
15 10449 156735
TOTAL 277731 2782090
Je pense pas prendre tout le DICO vu que je suppose que personne ne jouera de mots de plus de 12 lettres.