code de 4 couleurs à arranger

  • Auteur de la discussion Robert780
  • Date de début

Robert780

Habitué
Bonsoir,

je tourne en rond ou plutôt en carré !!!

je voudrais faire des arrangements de nombres (un nombre=1 couleur parmi 4 couleurs) de telle façon à avoir un maximum de fois 3 nombres dans 3 couleurs (un par couleur différente) et 2 nombres dans la couleur restante.
la liste est en colonnes A1 E x (fonction du nombre de lignes) et résultat en G1:K x.

le code s'arrêterait quand le maximum de lignes aurait été atteint (dans mon exemple 100% de lignes faites sur les 6 )
ce serait bien que ce % s'affiche en haut de mon écran quand le code tourne pour voir la progression.

voici une image avec 6 lignes.



j'ai essayé avec des formules conditionnelles mais je n'y arrive pas, j'aimerais une macro qui puisse calculer rapidement même si je mets 40 lignes par exemple.
pouvez-vous m'aider?

merci

 

zeb

Modérateur
Salut Robert

Toi, tu aimes te faire des nœuds au cerveau. :ouch:
Et c'est très bien :D

Sauf que je n'ai encore rien compris à la règle de ton jeu !
Et c'est bien dommage, parce que avec un peu de VBA, ça pourrait le faire très bien.

Dans Excel, on a l'habitude de mettre la progression dans la barre de statut, comme ça :
Code:
Boucle (For, Loop, etc.)
    truc à faire
    Application.StatusBar = "Progression : " & CStr(i) & "%"
    DoEvents
End Boucle
Application.StatusBar = False

Essaie de réexpliquer ton jeu.
 

Robert780

Habitué
Bonjour Zeb,

Je savais que tu aimerais...j'espère que tu vas m'aider ?

Cette fois c'est simple: il faut affecter 50 nombres avec 3 couleurs, (un nombre = une couleur) de telle façon que ma base contienne un maximum de lignes conformes, c'est à dire avec des nombres des 3 couleurs sur une même ligne.

Ca fait beaucoup de tentatives d'arrangements de couleur..
Dans mon exemple, j'ai réussi à 100% au crayon...


Voilà....
qu'en penses-tu?

merci
 

zeb

Modérateur
Je veux bien t'aider. Mais je ne comprends pas. Comment associes-tu un nombre et une couleur ? Comment réparties-tu les nombres et les couleurs dans la table ? Par quoi commence-ton ? Comment s'arrête-ton ? Bref, quelles sont les règles ?

:heink:
 

Robert780

Habitué
Comment associes-tu un nombre et une couleur ?

c'est justement le role de la macro:

(dans mon exemple au dessus, j'ai mis 4 couleurs vert rouge bleu noir, mais ici je simplifie à 3)
affecter à chaque nombre de 1 à 50 les 3 couleurs successivement soit 50x50x50=750000 permutations nombre/couleur et à tester successivement dans la grille jusqu'à obtenir un 100%= fin macro.
exemple: 1 vert 2 rouge 3 bleu 4 vert 5 rouge 6 bleu etc....750000 possibilités !

Si 100% est impossible, après avoir testé toutes les combinaisons nombres /couleurs, on garde la combinaison ayant obtenu le maximum de lignes contenant les 3 couleurs ensemble.

Tu me diras si tu as une piste de macro?
merci

 

zeb

Modérateur
On peut utiliser la force brute !
On déclare que la première combinaison est la meilleure et on la retient.
A chaque itération, tu donnes une note à la combinaison. Si la note est supérieure à celle retenue, celle-ci remplace celle-là.

Sauf que tes arrangements, ce n'est pas 50x50x50, mais plutôt 50x49x48x...21 x 3. (50 nombres, trente cases, trois couleurs.)

Soit 3,75035E+46 itérations :pt1cable:
 

Robert780

Habitué
merci de ta réponse.

Et tu penses que c'est possible, au moins d'approcher le meilleur taux, même si toutes les itérations ne sont pas testées (j'ai un bon processeur !)

As-tu une idée du code pour l'obtenir?

merci
a+



 

zeb

Modérateur
Tu as un processeur à 4GHz.
Un temps processeur dure donc 2,5E-10 s.
Admettons - ce qui est totalement faux, qu'une itération de ton programme dure un temps processeur.
Il te faudra donc 3,75035E+46 x 2,5E-10 = 9,38E+36 s.
Compte combien ça fait en années...

Pour te donner une idée, l'univers existe depuis 4E+17 s.
Tu as combien de temps devant toi ?
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 718 000
Membres
1 586 387
Dernier membre
ouistititouille
Partager cette page
Haut