TROUVEZ LES MOTS DE 9 LETTRES AU JEU DES «CHIFFRES ET DES LETTRES»

cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 - 19 déc. 2004 à 11:45
cs_leonard14 Messages postés 1 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 11 janvier 2009 - 11 janv. 2009 à 09:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/28256-trouvez-les-mots-de-9-lettres-au-jeu-des-chiffres-et-des-lettres

cs_leonard14 Messages postés 1 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 11 janvier 2009
11 janv. 2009 à 09:48
Peut-on m'expliquer comment lancer la recherche avec le programme?
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
28 déc. 2004 à 21:34
C'est gadget, car entre temps tu as 40 secondes pour réfléchir. Et comme le prog prend moins de 40 secondes, tu vois ce que je veux dire... Mais ce peut tout à fait être une idée.
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
28 déc. 2004 à 15:58
Le prog est très bien, mais un petit Application.ProcessMessages pendant la recherche serait bien ;-)
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
22 déc. 2004 à 13:08
Evidemment... Le jour où la liste des mots sera complètement terminée, ce prog rivalisera avec tout ce qui existe. Bien sûr que le programme ne trouve pas les vrais bon mots, mais ça, je n'y suis pour rien. Faudrait être 500 000 pour lister tous les mots en moins d'une journée. Pour l'instant, faut faire avec... et ce programme est tout à fait fonctionnel ! De ce fait, il peut très bien servir comme entraînement, sans nécessairement rechercher les performances dignes d'un grand cérébral des mots.
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
19 déc. 2004 à 17:11
Je ne connaissais pas du tout cette fonction. En fait, pour justifier mon choix, c'est que la classe TStringList cache une procédure QuickSort (non publiée) qui utilise mes mémorisations avec chaînes. N'ayant jamais croisé Exchange jusqu'à ton commentaire... points de suspension. La technique m'avait inspiré le code source N°22063.

Et comme on est prudent, on rajoutera:
BeginUpdate;
try
...
finally
EndUpdate;
end;

On ne sait jamais.
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
19 déc. 2004 à 13:37
Stg est bien une référence sur un objet, n'est-ce pas ?
Alors pourquoi ajouter le mot clé Var ?

La classe TStrings dispose d'une méthode Exchange hautement performante pour réaliser des permutations.
Et comme ici, tu n'es pas dans la cadre d'un "banal" tableau de données, il vaut mieux utiliser cette méthode exchange.
Résultat, sur ma machine et une liste de 10000 éléments :
1- ta méthode de permutation : 3140 Msec
2- Avec la méthode Exchange : 1375 Msec

Le code utilisé :
procedure TForm1.ReverseSort(List: TStrings);
var
i: integer;
begin
with List do
begin
BeginUpdate;
for i := 0 to Count div 2 do
Exchange(i, Count - 1 - i);
EndUpdate;
end;
end;

Même sans utiliser BeginUpdate et EndUpdate, la méthode Exchange est plus performante de 30% par rapport à une routine de permutation classique.
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
19 déc. 2004 à 11:45
Il manque une petite ligne de code. Cruel oubli qui ne mérite pas de MAJ.

procedure ReverseSort(var Stg:TStringList);
var
x, Cnt : integer;
s : string;
begin
Cnt:=Stg.Count;
{Celle là ==>} if Stg.Count>0 then
for x:=0 to (Cnt div 2) do
begin
s:=Stg[Cnt-x-1];
Stg[Cnt-x-1]:=Stg[x];
Stg[x]:=s;
end;
end;
Rejoignez-nous