Recopie d'un nombre de lignes espacées

Curulis57,

Whaaat ? C'est quoi ces "< >" ?

Attends je te réponds, l'idée c'est que le programme, à la fin, n'ait généré que des combinaisons différentes (sinon leur probabilité va compter double ou pire !)

Ne me dis pas que je vais trop vite pour toi ??
Tu me sors des p1xg1 + p2xg2 + p3xg3 + ... p1048576xg1048576 et tu cales sur un doublon ??


A+

les données flottantes à droite sont la copie de la combinaison 3 sur les lignes riches de l'ordre 2 (tout le monde a compris, sauf gthe ? Ok, on continue)

Maiiiiiis...

Par contre K4/N3 c'est 40 combinaisons : pourquoi il y en a que 23 dans ton exemple si c'est "la copie de la combinaison 3 sur les lignes riches de l'ordre 2" ?

Toutes les lignes riches de l'ordre 2 et faisant l'objet du chiffre final le plus élevé bénéficient de ces 40 combinaisons (d'où les 39 copies pour chaque).

Sinon pour tes collègues j'aurais fait un Windows+D à leur approche et j'aurai ensuite envoyé pendant la pause ;)

Il y a doublons entre la portion pauvre de l'ordre 1 et la copie de la combinaison 3 sur les lignes riches de l'ordre 2 ! Tu es toujours là ? Je dois les supprimer aussi ?

==> Procédons ainsi : h2so4 ordre 1 te génère les combinaisons de l'ordre 1. Ok. Ensuite, h2so4 te génère les combinaisons de l'ordre 2 et tu dois les copier sur les combi riches de l'ordre 1 et ayant le plus grand nombre final (en fait il y a pas de combi riches car n'ont fait qu'un ordre). Ensuite une fois cette copie faite, tu as donc des combis riches et pauvres (2 ordres ou 1). Parmi les plus riches d'entre elles et celles qui ont le chiffre final le plus élevé, tu copies celles du h2so4 de l'ordre 3 et ainsi de suite...
En procédant ainsi il n'y a jamais de doublon possible !!

Et j'appelle "doublon" toute combinaison finale (c.a.d à la fin du traitement de ton programme), qui est identique à au moins une autre ;)

Ne me dis pas que je vais trop vite pour toi ??

Tu me sors des p1xg1 + p2xg2 + p3xg3 + ... p1048576xg1048576 et tu cales sur un doublon ??

Somme des probabilités x gains de la ligne 1 à la dernière ligne du tableau Excel (c'est tout ;) )

Message original supprimé : j'ai enfin vu l'histoire des doublons !!
Déso pour cette perte de temps!


A+

Ce serait plus facile en face à face avec le même écran devant les yeux !

tellement plus facile je serais d'accord...

Attention, on élimine certainement pas de combinaisons sous prétexte qu'on réutilise un couple de K/n déjà vu avant ! Il faut penser qu'après chaque ordre, on rejoue.

J'ai toujours pas compris le sens de ces <- pour tes tableaux

Par "combinaison finale", tu entends les 3 derniers chiffres des lignes riches, identiques à ceux de la portion pauvre ?

Non ! J'entends l'ensemble de tous les chiffres générés depuis l'ordre 1. Par exemple 15158|1515156|619879|6158|16518|1515197XX|5165546 peut être ce que j'appelle une combinaison finale (à l'ordre 7 ici du coup, et ça sous entend que ton programme s'est arrêté à l'ordre 7 ou, en d'autres termes, que je n'ai rempli le tableau des k(x) et n(x) que jusqu'à l'ordre 7).

Message original supprimé : j'ai enfin vu l'histoire des doublons !!
Déso pour cette perte de temps!


A+

Les <- -> <> sont juste des flèches pour désigner les séries de chiffres identiques ! Rien de magique !

Bon, où est-il passé, le camarade ?
Dodo ?


Bonne nuit !

Désolé je répondais un long mail :D

Je te montre la logique de la construction des combinaisons (et tu vas comprendre que celle-ci ne peut pas permettre de doublon).

Tout n'est qu'exemple ici.

1) ordre 1 K3/N2 avec H2SO4 = les combinaisons de départ de ton programme.

1 1

1 2

1 3

2 1

2 2

2 3

3 X

2) ordre 2 K3/N3 en préparation (ces combinaisons sont destinées à être copiées à la suite des combinaisons riches de l'ordre précédent et possédant le chiffre final le plus élevé)

1 1 1

1 1 2

1 1 3

1 2 1

1 2 2

1 2 3

1 3 X

2 1 1

2 1 2

2 1 3

2 2 1

2 2 2

2 2 3

2 3 X

3 X X

3) On colle
aux combinaisons riches et dont le chiffre final est le plus élevé (de l'ordre 1), TOUTES les combinaisons de l'ordre 2 généré par le programme de h2so4 (et on effectue autant de duplications que nécessaires).

1 1

1 2

1 3 / 1 1 1

1 3 / 1 1 2

1 3 / 1 1 3

1 3 / 1 2 1

1 3 / 1 2 2

1 3 / 1 2 3

1 3 / 1 3 X

1 3 / 2 1 1

1 3 / 2 1 2

1 3 / 2 1 3

1 3 / 2 2 1

1 3 / 2 2 2

1 3 / 2 2 3

1 3 / 2 3 X

1 3 / 3 X X

2 1

2 2

2 3 / 1 1 1

2 3 / 1 1 2

2 3 / 1 1 3

2 3 / 1 2 1

2 3 / 1 2 2

2 3 / 1 2 3

2 3 / 1 3 X

2 3 / 2 1 1

2 3 / 2 1 2

2 3 / 2 1 3

2 3 / 2 2 1

2 3 / 2 2 2

2 3 / 2 2 3

2 3 / 2 3 X

2 3 / 3 X X

3 X / 1 1 1

3 X / 1 1 2

3 X / 1 1 3

3 X / 1 2 1

3 X / 1 2 2

3 X / 1 2 3

3 X / 1 3 X

3 X / 2 1 1

3 X / 2 1 2

3 X / 2 1 3

3 X / 2 2 1

3 X / 2 2 2

3 X / 2 2 3

3 X / 2 3 X

3 X / 3 X X

4) A l'issue de cette étape (parce que le problème ne se posait pas lorsqu'on écrivait les combinaisons h2so4 avec ton programme à la fin de l'ordre 1 car elles étaient déjà toutes classées), on reclasse les combinaisons de manière à ce que les combinaisons riches avec le chiffre final le plus élevé figurent en dernier.

1 1

1 2

1 3 / 1 1 1

1 3 / 1 1 2

1 3 / 1 2 1

1 3 / 1 2 2

1 3 / 2 1 1

1 3 / 2 1 2

1 3 / 2 2 1

1 3 / 2 2 2

2 1

2 2

2 3 / 1 1 1

2 3 / 1 1 2

2 3 / 1 2 1

2 3 / 1 2 2

2 3 / 2 1 1

2 3 / 2 1 2

2 3 / 2 2 1

2 3 / 2 2 2

3 X / 1 1 1

3 X / 1 1 2

3 X / 1 2 1

3 X / 1 2 2

3 X / 2 1 1

3 X / 2 1 2

3 X / 2 2 1

3 X / 2 2 2

1 3 / 1 1 3

1 3 / 1 2 3

1 3 / 1 3 X

1 3 / 2 1 3

1 3 / 2 2 3

1 3 / 2 3 X

1 3 / 3 X X

2 3 / 1 1 3

2 3 / 1 2 3

2 3 / 1 3 X

2 3 / 2 1 3

2 3 / 2 2 3

2 3 / 2 3 X

2 3 / 3 X X

3 X / 1 1 3

3 X / 1 2 3

3 X / 1 3 X

3 X / 2 1 3

3 X / 2 2 3

3 X / 2 3 X

3 X / 3 X X

5) Ordre 3 K2/N2 en préparation :

1 1

1 2

2 X

6) On colle aux combinaisons riches et dont le chiffre final est le plus élevé (de l'ordre 2), TOUTES les combinaisons de l'ordre 3 généré par le programme de h2so4 (et on effectue autant de duplications que nécessaires).

1 1

1 2

1 3 / 1 1 1

1 3 / 1 1 2

1 3 / 1 2 1

1 3 / 1 2 2

1 3 / 2 1 1

1 3 / 2 1 2

1 3 / 2 2 1

1 3 / 2 2 2

2 1

2 2

2 3 / 1 1 1

2 3 / 1 1 2

2 3 / 1 2 1

2 3 / 1 2 2

2 3 / 2 1 1

2 3 / 2 1 2

2 3 / 2 2 1

2 3 / 2 2 2

3 X / 1 1 1

3 X / 1 1 2

3 X / 1 2 1

3 X / 1 2 2

3 X / 2 1 1

3 X / 2 1 2

3 X / 2 2 1

3 X / 2 2 2

1 3 / 1 1 3 / 1 1

1 3 / 1 1 3 / 1 2

1 3 / 1 1 3 / 2 X

1 3 / 1 2 3 / 1 1

1 3 / 1 2 3 / 1 2

1 3 / 1 2 3 / 2 X

1 3 / 1 3 X / 1 1

1 3 / 1 3 X / 1 2

1 3 / 1 3 X / 2 X

1 3 / 2 1 3 / 1 1

1 3 / 2 1 3 / 1 2

1 3 / 2 1 3 / 2 X

1 3 / 2 2 3 / 1 1

1 3 / 2 2 3 / 1 2

1 3 / 2 2 3 / 2 X

1 3 / 2 3 X / 1 1

1 3 / 2 3 X / 1 2

1 3 / 2 3 X / 2 X

1 3 / 3 X X / 1 1

1 3 / 3 X X / 1 2

1 3 / 3 X X / 2 X

2 3 / 1 1 3 / 1 1

2 3 / 1 1 3 / 1 2

2 3 / 1 1 3 / 2 X

2 3 / 1 2 3 / 1 1

2 3 / 1 2 3 / 1 2

2 3 / 1 2 3 / 2 X

2 3 / 1 3 X / 1 1

2 3 / 1 3 X / 1 2

2 3 / 1 3 X / 2 X

2 3 / 2 1 3 / 1 1

2 3 / 2 1 3 / 1 2

2 3 / 2 1 3 / 2 X

2 3 / 2 2 3 / 1 1

2 3 / 2 2 3 / 1 2

2 3 / 2 2 3 / 2 X

2 3 / 2 3 X / 1 1

2 3 / 2 3 X / 1 2

2 3 / 2 3 X / 2 X

2 3 / 3 X X / 1 1

2 3 / 3 X X / 1 2

2 3 / 3 X X / 2 X

3 X / 1 1 3 / 1 1

3 X / 1 1 3 / 1 2

3 X / 1 1 3 / 2 X

3 X / 1 2 3 / 1 1

3 X / 1 2 3 / 1 2

3 X / 1 2 3 / 2 X

3 X / 1 3 X / 1 1

3 X / 1 3 X / 1 2

3 X / 1 3 X / 2 X

3 X / 2 1 3 / 1 1

3 X / 2 1 3 / 1 2

3 X / 2 1 3 / 2 X

3 X / 2 2 3 / 1 1

3 X / 2 2 3 / 1 2

3 X / 2 2 3 / 2 X

3 X / 2 3 X / 1 1

3 X / 2 3 X / 1 2

3 X / 2 3 X / 2 X

3 X / 3 X X / 1 1

3 X / 3 X X / 1 2

3 X / 3 X X / 2 X

6) A l'issue de cette étape, on reclasse les combinaisons de manière à ce que les combinaisons riches avec le chiffre final le plus élevé figurent en dernier.

[la flemme...]

7) Ordre 4 Ki/ni en préparation... (je n'écris plus, j'ai plus la foi ;) ) :

...

...

...

8) On colle aux combinaisons riches et dont le chiffre final est le plus élevé (de l'ordre 3), TOUTES les combinaisons de l'ordre 4 généré par le programme de h2so4 (et on effectue autant de duplications que nécessaires).

etc... jusqu'à l'ordre 10.

De cette façon là, il est strictement impossible qu'il y ait des doublons parmi toutes les combinaisons finales ;)

Je te souhaite une bonne nuit aussi ;)

J'ai supprimé les deux derniers messages relatifs à cette histoire de doublons : j'avais mal regardé ton fichier.
Je suis vraiment navré de cette perte de temps !

Ce sera réglé cette nuit!


A+

Salut Curulis57,

Aucun problème ! :)

En même temps c'est très difficile d'expliquer un programme par mail, même avec des copies d'écran ;)

Mais je suis sûr qu'on va converger :D

Bon courage à toi ;)

A+ :)

Salut GT,

convergeons, convergeons, il en restera bien quelque chose !
Comme annoncé, j'ai finalement, honte sur moi, compris tes doublons : je n'avais pas scrollé ton fichier et je n'avais donc pas vu plus bas le bloc de lignes surlignées rouge qui correspondait aux mêmes lignes en début de fichier !

Voici le fichier : regarde et dis-moi si j'ai bien fait ça...

7gthe.zip (364.45 Ko)


A+

Salut Curulis57,

Merci pour le programme !

Je sèche, j'ai tenté un exemple O1 : 3,3 ; O2 : 3,3 , O3 : 3,3 et je trouve 848 combinaisons au lieu des 799 calculées...

Pourtant je ne trouve pas de doublon cette fois-ci... J'ai refait 6 fois le calcul, je trouve 799 combinaisons quoi qu'il arrive. Il faut que je comprenne ce qui ne va pas. Je t'enverrai le fichier comparatif bientôt ;)

Edit + 25 minutes : ...je crois à l'instant avoir trouvé pourquoi ! Je t'envoie l'Excel dès que j'ai fini ! Eureka !

Salut Curulis 57,

En tout cas, pas un seul doublon, c'est remarquable ! Et j'ai galéré un peu plus pour trouver ce qui n'allait pas :(

J'ai trouvé ce qui ne fonctionne pas dans ton programme : par exemple, dans la configuration 3,3 / 3,3 / 3,3 (cf. programme), je dénombre 49 combinaisons en trop... Pendant un instant je pensais que c'était juste et que tous mes calculs étaient à remettre en cause, mais que nenni !

Ton programme calcule toutes les combinaisons effectuées à la fin d'un ordre.

Je t'ai mis en rouge, dans "Feuil1" les combinaisons surnuméraires que tu as rajoutées : n'oublie pas, toutes les combinaisons terminant par le chiffre final le plus élevé à un ordre considéré doivent se poursuivre à l'ordre suivant ! Et justement, les combinaisons que je t'ai mis en rouge ne peuvent pas s'arrêter sur une victoire, elles continuent jusqu'à la fin du programme (ici l'ordre 3 car j'ai rempli que 3 ordres dans le tout premier onglet) : elles ne peuvent pas s'arrêter à l'ordre 2 :)

Les combinaisons que je t'ai mis en rouge, c'est comme si je gagnais (chiffre final le plus élevé) mais que je refusais de jouer à l'ordre suivant... N'oublie pas : je joue jusqu'à perdre (non atteinte du chiffre final le plus élevé en n essais) OU jusqu'à atteindre l'ordre le plus élevé que j'ai programmé. Et dans l'exemple en PJ c'est l'ordre 3 et pas 2 ;)

Il y a bien 799 combinaisons à générer et pas 848 :D (pour la configuration 3,3 / 3,3 / 3,3 (respectivement ordre 1,2 et 3)

;)

Sinon j'ai l'impression que toutes les combinaisons définies dans la BDD ne sont pas définies (par exemple, k=2 n=5 j'ai pas réussi à le faire fonctionner :()

Salut gthe,

on avance, donc...
Par contre, les lignes surnuméraires... pige pas encore...
Tu peux me le refaire en mode logique, pas mathématique ni parieur : ces lignes sont surnuméraires parce que 1. 2. 3.

Parle-moi Logique !


A+

que toutes les combinaisons définies dans la BDD ne sont pas définies

pour ça, il suffisait d'aller regarder dans 'BDD', malin...
Steelson a déjà concocté une boucle qui permettra d'utiliser la macro de H2SO4 en 'live' lors du calcul des ordres Kn.

T'inquiète, tu auras toutes les combinaisons désirées mais, d'abord, extirper les erreurs du programme de base de ton calcul!


A+

Salut Curulis57,

Toute combinaison possédant le chiffre final le plus élevé est éligible pour "refaire un tour de moulinette", c'est-à-dire poursuivre à l'ordre suivant (si l'ordre suivant a été programmé).

Pour détailler,

J'avais imputé :

RANGS12345678910
k(x)333
n(x)333

dans le programme que tu m'avais envoyé juste avant. Ce qui veut donc dire que j'ai commandé 3 ordres.

Or, certaines combinaisons comme (et je ne les ai pas toutes citées) :

113|213
113|223
13X|223
13X|23X
213|13X
213|213
213|223
213|23X
3XX|223
3XX|23X
3XX|3XX

finissent toutes par 3 à l'ordre 2 (et on sait que k=3 à l'ordre 2... donc "3" est le chiffre final maximal )

donc : toutes les combinaisons que tu vois en exemple ci-dessus (et elles sont toutes en rouge dans mon fichier "erreurs") sont à poursuivre à l'ordre suivant ! Et donc c'est pour ça que ce sont des erreurs !

Elles ne peuvent naturellement pas être écrites comme ça et doivent être complétées et dupliquées et immédiatement accolées à ce que le programme h2so4 aura généré à l'ordre 3.

Sinon pour la BDD, même si je lisais "5 et 2" (ce qui voulait dire k=5 et n=2), il ne se passait rien quand je double cliquais sur "rang" pour exécuter la macro ;) Et c'est une exemple (qu'avec des couples n,k pris dans ta BDD)

Merci pour tout :D

Salut gthe,

K3n3 - K3n3 - K3n3 = 799 lignes pour monsieur !
J'attaque maintenant quelques améliorations de confort avant une refonte générale de la mécanique, histoire, j'espère, d'accélérer le calcul...


A+

5gthe.xlsm (166.52 Ko)

Bon, on va attendre la mécanique F1 ...

meca

Salut !

Un retour sur le dernier fichier posté ;)

Déjà, je vous remercie infiniment pour tous les efforts que vous déployez... et si à un moment donné vous souhaitez me dire "stop on en a marre", je comprendrais tout à fait.

D'un autre côté, je comprends aussi que vous souhaitiez relever ce challenge ! Je sais que c'est difficile, et c'est pour ça que j'ai posté sur ce forum ;)

Je vous fais donc un retour d'expérience sur quelques tests que j'ai pu mener sur la dernière version (aujourd'hui 01:18) :

- Il semblerait que le formalisme p&q donné dans l'onglet "BDD" correspond respectivement à "n&k" (car à chaque fois le premier chiffre (p) correspond au nombre de colonnes générées, ce qui est bien "n" par définition".

- J'ai testé la combinaison que je noterais (Ordre,k,n) suivante : (1,3,3) ; (2,3,3) ; (3,3,3) et ça marche nickel j'obtiens effectivement les 799 combinaisons requises !

- J'ai remarqué qu'il faut inverser les cellules A2 et A3 car ce qui est écrit k(x) dans l'onglet H2SO4 correspond à n(x) et ce qui est écrit n(x) dans ce même onglet correspond à n(x). Je m'en suis convaincu en voulant lancer un (1,2,4) (2,2,4) (3,2,4) et en effet, ça ne fonctionne pas si on en fait pas cette inversion ! Il suffit simplement de réécrire k(x) à la place de n(x) et vice-versa et rentrer les chiffres correspondants pour que ce cas fonctionne. J'obtiens 85 combinaisons, ce qui est conforme.

- Lorsque j'écris (rappel : formalisme (Ordre ; k ; n)) l'imputation suivante [avec k(x) en A2 et n(x) en A3, c.a.d avec votre configuration de départ : (1,2,7) (2,3,3) (3,3,9) alors j'obtiens "erreur d'exécution 91 - variable objet ou variable de bloc with non définie) ALORS j'ai émis l'hypothèse que les intitulés des cellules A2 et A3 sont inversées (dans l'onglet H2SO4) et en tapant la même combinaison en écrivant les "n" à la place des "k" et vice-versa... j'obtiens "erreur définie par l'application de l'objet 1004"

- Pareil, lorsque je tape (Ordre,k,n) la combinaison suivante : (1,2,3) (2,25) (3,2,6) (4,3,4) (5,3,6) j'obtiens "erreur exécution 1004".

- Lorsqu'on remplit seulement le premier ordre, rien ne se passe

Je pense que le programme doit être en cours de construction d'où ces erreurs qui apparaissent !

Je vous souhaite un bon courage... et encore merci de votre implication.

Et si jamais vous abandonnez, je comprendrais et ne m'en formaliserai pas ;)

Rechercher des sujets similaires à "recopie nombre lignes espacees"