Algo sur nombre de lettres et mots...

Fermé
phoenix - 16 oct. 2003 à 16:20
 mohammed - 13 janv. 2005 à 20:41
Bonjour, je recherche un algorithme (programme en Pascal ou C) qui en fonction du nombre de lettres passées en parametre (ex 2) me trouve tous les mots correspondant. SI je mets 2 en parametres, il ya 26² mots possibles ( comme ab par ex).

Merci d'avance,

5 réponses

Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 208
16 oct. 2003 à 17:33
Bonjour,

Il me semble qu'un "compteur" en base "26" peut répondre à ta question. La valeur initiale est {0}{0}...{0} (=0), la valeur finale serait {25}{25}...{25} (= 26^n - 1), selon le nombre "n" de digits passé en argument.
Dans la boucle d'incrément 1 entre ces valeurs, il faut effectuer des divisions entières successives par 26, et composer la solution (de la droite vers la gauche) en utilisant le reste de chaque division pour adresser le caractère à prendre à chaque fois dans l'alphabet.
1
Salut, merci de m'avoir donner un tuyau mais je ne comprend pas trop ce que tu veux dire par division base 26. En fait je vais completer et eclaicir un peu mon pb :

j'aimerai trouver un algo qui en fonction du nombre de lettres entré en parametre me sorte la proba du plus petit nombre de mots en longueur fixe avec ce nb de lettres et ayant le meme score. (chaque mot a un score car chaque lettre a un score defini auparavant).
EX : ce que que me donne l'ordi à l'ecran si je tape en parametre "2" :
nblettre : 2 ; nb Mot : 21 ; score : 8 ; proba : 0.0311 ; exemple : BY

Tu vois un algo possible ? Merci d'avance, (si tu ne vois pas, je comprendrais car c'est balaise)
0
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 208
16 oct. 2003 à 20:09
Il y a effectivement erreur sur ma compréhension du problème (mon algo ne permet de générer simplement des combinaisons, selon un nombre passé en argument : ex : n=3 permet de générer les combinaisons de "AAA" à "ZZZ".
Dans ton cas, je pense que tu veux plutôt un algorithme de type "scrabble", où l'un des arguments de la fonction est le tirage des lettres (dans le "scrabble", il y a en plus les emplacements disponibles, et les lettres déjà placées, et les règles de multiplication). Cet algorithme passe obligatoirement par un "dictionnaire" exhaustif.
J'ai croisé un jour l'auteur d'un site avec jeu en ligne, qui m'a dit que son dictionnaire, sans doute en Java, occupait moins de 500ko. Je suppose qu'il s'agit d'une sorte d'arbre dont les clés sont d'abord à une lettre (sous-arbre dont les mots commencent par ...), etc. Les feuilles sont les mots du dictionnaire, mais on peut supposer que les féminins, les pluriels, les conjugaisons sont gérés par des pointeurs vers quelques rèles de génération des terminaisons. Je sais que le jeu proposé n'applique aucune stratégie, se contentant de proposer la solution rapportant le maximum de points. Mon meilleur score (je ne suis pas un spécialiste) est de -40 par rapport à celui de la "machine" !!!
0
Salut phoenix,
désoler je vien juste de lire votre PB,
besoin daide?
il vous faut un tableau A qui va contenir l'ensemble des mots(comme dictionnaire)
nblettre : entier ; nb Mot : entier ; score : entier ; proba : real ; exemple :chaîne de caractères.
et une fonction factoriel pour calculer proba car je crois que vous aurez besoin du factoriel .
fonction fact( x:integer):integer;
.....
end; "fonction"
begin
"après leremplissage du tableau de dim nbMot "
read(nblettre);
score:=0;
For i:=1 to nbMot do
begin
if length(A[i])=nblettre then
score:=score+1;
end;
proba :="je ne me rappel pas bien comment la calc"
end.
bonne chance.
merci


bonne chance.
Merci.
0
bonjour,je voudrai s'il vous plait recevoir l'algo sur le jeu scrabble
en langage c ou pascal si possible
merci de votre bonne comprehension
0
bonjour
compte tenu des resultats satisfaisants qu'offre votre forum je me suis tenu de vous faire cette requete ;en effet je suis en deuxueme annee ,cycle analyste programmeur au Niger je voudrai que vous me fournissiez le programme en C ou en Pascal du scrabble
merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 155
13 janv. 2005 à 14:44
marden a raison il faut un dictionnaire
ensuite il faut ajouter à ce dictionnaire une clef
par exemple chien aura pour clef
1c1e1h1i1n ou un systéme de notation identique

ensuite on calcule la clef du tirage selon le même système
si le tirage donnre en clef 4l3z
on textera 4l3z
puis 3l3z
jusqu'a 1l1z

pour le premier mot il suffit de valoriser toutes les clefs si le premier emplacement est fixé pour les mots trouvés

ainsi si le tirage est niche on va trouver dans le dictionnaire niche chien et tous les autres combinaisons et on va valoriser le mot placé en fonction de l'emplacement en gardant le plus gros tirage

pour les mots suivants il faut tester tous les emplacements disponibles et ajouter les lettres qui serviront de connexion à la clef

on recherche ensuite les valorisations et on garde le maximum

c'est un très joli problème
0