MA PETITE COMBINE

florenth - 4 août 2008 à 12:41
ludodelphi Messages postés 9 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 18 février 2009 - 31 oct. 2008 à 14:03
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/47493-ma-petite-combine

ludodelphi Messages postés 9 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 18 février 2009
31 oct. 2008 à 14:03
On me défie !
J'ai ajouté une version simple à moi "CombinSimple"
On réalise les 14 M(millions) de combine du loto en... Mégarapide !
(essaye, tu me dira)

Elle est récursive, donc encore optimisable, mais me suffit pour mes besoins
... et je suis content de sa rédaction ;-)

++ Ludodelphi
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
30 oct. 2008 à 14:57
@ludodelphi :

pour les combins du LOTO : 1 minute !

procedure TForm1.Button1Click(Sender: TObject);
var
i, j, k, l, m, n, nob, cpt: integer;
sl: TStringList;
begin
try
Screen.Cursor := CrHourGlass;
cpt := 0;
nob := 49;
sl := TStringList.Create;
for i := 1 to nob do
for j := i to nob do
for k := j to nob do
for l := k to nob do
for m := l to nob do
for n := m to nob do
if ((i <> j) and (i <> k) and (i <> l) and (i <> m) and (i <> n))
and ((j <> i) and (j <> k) and (j <> l) and (j <> m) and (j <> n))
and ((k <> i) and (k <> j) and (k <> l) and (k <> m) and (k <> n))
and ((l <> i) and (l <> j) and (l <> k) and (l <> m) and (l <> n))
and ((m <> i) and (m <> j) and (m <> k) and (m <> l) and (m <> n)) then
begin
inc(cpt);
sl.Add(IntToStr(i) + ';' + IntToStr(j) + ';' + IntToStr(k) + ';' +
IntToStr(l) + ';' + IntToStr(m) + ';' + IntToStr(n));
end
else
continue;
finally
Screen.Cursor := CrDefault;
sl.Free;
showMessage(IntToStr(cpt));
end;
end;
tu peux les récupérer avant le sl.free par sl.SaveToFile

mais il me semble avoir fait mieux mais je ne trouve plus mon code..

cantador
ludodelphi Messages postés 9 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 18 février 2009
30 oct. 2008 à 12:23
bonjour,
J'avais en tete un calcul quasi instantanné des combinaisons sur mon vieux PC 1Ghz pour les 14 Millions de combin du fameux 6 parmi 49 (loto)
En regardant la source, j'ai compris pourquoi le programme rame à mourir :
Comme en Matlab, Florenth passe son temps à allouer de la mémoire
Une modif de 2-3 lignes (déplacement allocation mémoire hors de la boucle principale) rend le calcul de combinaisons instantanné. (c'est encore largement optimisable en sortant la deuxieme allocxation mémoire : mais c'est plus compliqué)
Il reste le temps d'affichage qui devient prépondérant...
J'ai mis la nouvelle source à peine modifiée à disposition sous mon nom ;-)

LudoDelphi
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
29 oct. 2008 à 19:15
ça se comprend ^^
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 oct. 2008 à 19:04
non il ne plante pas, il suffoque..
car factorielle 100, il aime pas du tout...
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
29 oct. 2008 à 17:30
Juste un truc:
Si on sélectionne toutes les cases le log plante :)
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
4 août 2008 à 13:36
Merci florenth poour ce sympathique commentaire.
Les performances doivent être sensiblement les mêmes et deviennent franchement dures aux approches de 20..
ce qui est normal..
Dans ce cas, et on veut vraiment obtenir les combins par exemple
de 6 parmi 25, il est préférable d'écrire un programme spécifique
en dur de boucles imbriquées et là le temps est très correct.

Quant aux champs réduits (ah ah !)
ça c'est une autre histoire..
... et c'est pourquoi si vous avez un algorithme qui permet de générer des champs réduits, vous pouvez nous en faire part !! [comment ça j'ai l'air intéressé ? ^^]

Sinon, j'aime beaucoup la grille de sélection et j'avoue que j'ai toujours eu la flemme avec les interfaces graphiques !

J'aime bien l'idée "regard du joueur" et ton approche du code me semble plus correcte que la mienne.
Rejoignez-nous