Ma petite combine

Soyez le premier à donner votre avis sur cette source.

Vue 11 160 fois - Téléchargée 689 fois

Description

Bonjour à tous,

Suite à question posée sur le forum par Frank_klein
(http://www.delphifr.com/infomsg_COMMENT-CALCULER-COMBINAISON_1181081.aspx#17)

Florenth dont les neurones nous étaient revenus en forme et gorgés de soleil m'a pris de vitesse
et a déposé une excellente source sur les liste, arrangements et combinaisons sous le regard du mathématicien.

Moi, j'ai pris mon temps..et j'ai fait la même chose mais sous l'oeil du joueur..

Autrement dit, j'ai laissé tomber les deux premières parties et
me suis attaché à créer la dernière de manière ergonomique.

Il n'y a pas grand chose d'autre à dire sinon que bien sûr, il reste de nombreuses optimisations à réaliser
mais l'objectif ici n'était pas de faire du turbo, mais de donner les bonnes combinaisons de manière agréable.

Evidemment, je rejoins florenth pour dire aussi, que ce programme ne sert pas à grand chose

car vous vous rendrez compte facilement que si on veut jouer les champs complets,
on a vite des problèmes de financement !

Cantador

Conclusion :


bon jeu quand même !

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
9
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
18 février 2009

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
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
@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
Messages postés
9
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
18 février 2009

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
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010

ça se comprend ^^
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
non il ne plante pas, il suffoque..
car factorielle 100, il aime pas du tout...
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.