[VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

job75

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonjour Roger, le forum,

J'avais pensé à une solution de ce genre au tout début, mais je ne l'ai pas appliquée car en effet on n'est jamais sûr d'avoir trouvé toutes les solutions.

Le temps de calcul est du même ordre, c'est bon à savoir.

Merci pour ce travail.

A+
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonjour à tous


Merci à Roger de rejoindre le fil.

Je testerai ton classeur dès mon retour.

Ravi de voir une autre approche du problème.


J'espère toujours que les formulistes finiront pas se manifester.


Bon week-end à tous
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Rapide, spécialement à l'attention de job75 et Staple1600 :

Ne perdez pas de temps avec mon classeur : CE N'EST PAS LE BON.

J'enverrai un classeur correct demain.

Avec mes excuses...
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Rapidement, spécialement pour job75 & Staple1600

Ne perdez pas de temps avec mon classeur : ce n'est pas le bon.

J'enverrai quelque chose de correct demain.

Mille excuses...
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Rapidement, spécialement pour job75 & Staple1600 :

Ne perdez pas de temps avec mon classeur : CE N'EST PAS LE BON.

J'enverrai une version correcte demain.

Mille excuses...
 

job75

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonsoir Staple, le forum,

Un rappel : le problème posé par Staple est quasiment résolu. Toutes les combinaisons et toutes les formules-solutions ont été trouvées.

Restait le problème que pour le jeu, il y a trop de formules-solutions.

J'ai donc construit une fonction Epur qui :
- supprime les parenthèses inutiles
- supprime les permutations les plus évidentes, i.e. pour les cas suivants :

x1+x2+x3+x4
x1*x2*x3*x4
x1+(x2°x3°x4) ou (x1°x2°x3)+x4 ==> Edit : tests supprimés car aucun cas
x1*(x2°x3°x4) ou (x1°x2°x3)*x4


On trouvera ci-dessous la macro et la fonction permettant de déterminer le nombre de formules-solutions : il est maintenant de 6065 (au lieu de 14033 précédemment). Le temps de calcul, du fait de la fonction Epur, passe chez moi de 1m30s à 3m40s...

Pour la partie jeu, j'ai bien entendu modifié le fichier de Staple (ci-joint). L'augmentation du temps de calcul n'est pas trop perceptible. En moyenne il y a 6065/404 = 15 solutions par tirage.

Bonne fin de soirée.

NOTES POUR STAPLE : il faut :
- On Error Resume Next en début de macro
- méthode skoobi pour la collection solution
- fonction mini de pierrejean

Code:
Public x1, x2, x3, x4 As Byte

Sub Opérateurs_Staple()
Dim op() As Variant
Dim f1, f2, f3, f4, f5 As String, cl As Integer
Dim formule As New Collection, combinaison As New Collection
Range("A:A").ClearContents
op = Array("+", "-", "*", "/")
For x1 = 1 To 9
For x2 = 1 To 9
For x3 = 1 To 9
For x4 = 1 To 9
For o1 = 0 To 3
For o2 = 0 To 3
For o3 = 0 To 3

f1 = Epur("(" & x1 & op(o1) & x2 & ")" & op(o2) & x3 & op(o3) & x4)
f2 = Epur(x1 & op(o1) & "(" & x2 & op(o2) & x3 & ")" & op(o3) & x4)
f3 = Epur("(" & x1 & op(o1) & x2 & ")" & op(o2) & "(" & x3 & op(o3) & x4 & ")")
f4 = Epur("(" & x1 & op(o1) & x2 & op(o2) & x3 & ")" & op(o3) & x4)
f5 = Epur(x1 & op(o1) & "(" & x2 & op(o2) & x3 & op(o3) & x4 & ")")

If IsError(Evaluate(f1)) Then GoTo 1
If Abs(Evaluate(f1) - 24) < 10 ^ -13 Then
cl = mini(x1, x2, x3, x4)
On Error Resume Next
combinaison.Add cl, CStr(cl) 'méthode donnée par skoobi le 23/10/08
If Err = 0 Then Range("A" & combinaison.Count) = cl
formule.Add f1, f1
On Error GoTo 0
End If

1 If IsError(Evaluate(f2)) Then GoTo 2
If Abs(Evaluate(f2) - 24) < 10 ^ -13 Then
cl = mini(x1, x2, x3, x4)
On Error Resume Next
combinaison.Add cl, CStr(cl)
If Err = 0 Then Range("A" & combinaison.Count) = cl
formule.Add f2, f2
On Error GoTo 0
End If

2 If IsError(Evaluate(f3)) Then GoTo 3
If Abs(Evaluate(f3) - 24) < 10 ^ -13 Then
cl = mini(x1, x2, x3, x4)
On Error Resume Next
combinaison.Add cl, CStr(cl)
If Err = 0 Then Range("A" & combinaison.Count) = cl
formule.Add f3, f3
On Error GoTo 0
End If

3 If IsError(Evaluate(f4)) Then GoTo 4
If Abs(Evaluate(f4) - 24) < 10 ^ -13 Then
cl = mini(x1, x2, x3, x4)
On Error Resume Next
combinaison.Add cl, CStr(cl)
If Err = 0 Then Range("A" & combinaison.Count) = cl
formule.Add f4, f4
On Error GoTo 0
End If

4 If IsError(Evaluate(f5)) Then GoTo 5
If Abs(Evaluate(f5) - 24) < 10 ^ -13 Then
cl = mini(x1, x2, x3, x4)
On Error Resume Next
combinaison.Add cl, CStr(cl)
If Err = 0 Then Range("A" & combinaison.Count) = cl
formule.Add f5, f5
On Error GoTo 0
End If

5 Next
Next
Next
Next
Next
Next
Next
MsgBox "Formules " & formule.Count
MsgBox "Combinaisons " & combinaison.Count
End Sub

Function mini(x1, x2, x3, x4) 'créée par pierrejean le 23/10/08
tablo = Array(x1, x2, x3, x4)
For n = LBound(tablo) To UBound(tablo)
 For m = LBound(tablo) To UBound(tablo)
  If tablo(m) > tablo(n) Then
   temp = tablo(n)
   tablo(n) = tablo(m)
   tablo(m) = temp
  End If
 Next m
Next n
For n = LBound(tablo) To UBound(tablo)
  mini = mini & tablo(n)
Next n
End Function

Function Epur(f$)
'suppression des parenthèses inutiles
For i = 1 To 7 Step 2
If Mid(f, i, 1) = "(" Then
j = Application.Find(")", f, i)
x = Mid(f, i + 1, j - 1 - i)
If IsError(Application.Find("+", x)) And IsError(Application.Find("-", x)) _
Or Mid(f, IIf(i > 1, i - 1, 1), 1) = "+" _
Or IIf(j = 7, Mid(f, 8, 1), 0) = "+" Or IIf(j = 7, Mid(f, 8, 1), 0) = "-" _
Then f = Replace(f, "(" & x & ")", x)
End If
Next
'classement si + ou *
If f Like "?+?+?+?" Then
f = mini(x1, x2, x3, x4)
f = Mid(f, 1, 1) & "+" & Mid(f, 2, 1) & "+" & Mid(f, 3, 1) & "+" & Mid(f, 4, 1)
End If
If f Like "?[*]?[*]?[*]?" Then
f = mini(x1, x2, x3, x4)
f = Mid(f, 1, 1) & "*" & Mid(f, 2, 1) & "*" & Mid(f, 3, 1) & "*" & Mid(f, 4, 1)
End If
If f Like "(?????)[*]?" And Mid(f, 9, 1) <= Mid(f, 2, 1) Then f = Mid(f, 9, 1) & "*" & Mid(f, 1, 7)
If f Like "?[*](?????)" And Mid(f, 1, 1) > Mid(f, 4, 1) Then f = Mid(f, 3, 7) & "*" & Mid(f, 1, 1)
Epur = f
End Function
 

Fichiers joints

Dernière édition:

job75

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonjour Staple, le forum,

Je viens de découvrir une chose bien extraordinaire, Staple. La 2ème formule (ex f2) :

x1°(x2°x3)°x4

n'est pas nécessaire pour obtenir les 404 combinaisons ! Il n'y en a que 4 à étudier :

(x1°x2)°x3°x4
(x1°x2)°(x3°x4)
(x1°x2°x3)°x4
x1°(x2°x3°x4)


Du coup les macros sont simplifiées et le temps de calcul diminué de 20% (1m15s sans la fonction Epur, 3m avec Epur).

Le nombre de formules-solutions est 11750 sans Epur et 5656 avec Epur (soit 5656/404 = 14 par tirage pour le jeu).

Ci-joint la macro avec Epur pour le comptage, et le fichier du jeu.

A+

EDITION pour le jeu, Staple :

- pour la macro Afficher_solution, Solution.Add f1, f1 est mieux, mettre le signe = quand tu définis sol

- pour Epur, la fonction mini de pierrejean n'est pas nécessaire puisque les valeurs x1 x2 x3 x4 sont déjà dans l'ordre. Pour la différencier de la précédente, je l'ai renommée Epur1.

Code:
Public x1, x2, x3, x4 As Byte

Sub Opérateurs_Staple()
Dim op() As Variant
Dim f1, f2, f3, f4 As String, cl As Integer
Dim formule As New Collection, combinaison As New Collection
Range("A:A").ClearContents
op = Array("+", "-", "*", "/")
For x1 = 1 To 9
For x2 = 1 To 9
For x3 = 1 To 9
For x4 = 1 To 9
For o1 = 0 To 3
For o2 = 0 To 3
For o3 = 0 To 3

f1 = Epur("(" & x1 & op(o1) & x2 & ")" & op(o2) & x3 & op(o3) & x4)
f2 = Epur("(" & x1 & op(o1) & x2 & ")" & op(o2) & "(" & x3 & op(o3) & x4 & ")")
f3 = Epur("(" & x1 & op(o1) & x2 & op(o2) & x3 & ")" & op(o3) & x4)
f4 = Epur(x1 & op(o1) & "(" & x2 & op(o2) & x3 & op(o3) & x4 & ")")

If IsError(Evaluate(f1)) Then GoTo 1
If Abs(Evaluate(f1) - 24) < 10 ^ -13 Then
cl = mini(x1, x2, x3, x4)
On Error Resume Next
combinaison.Add cl, CStr(cl) 'méthode donnée par skoobi le 23/10/08
If Err = 0 Then Range("A" & combinaison.Count) = cl
formule.Add f1, f1
On Error GoTo 0
End If

1 If IsError(Evaluate(f2)) Then GoTo 2
If Abs(Evaluate(f2) - 24) < 10 ^ -13 Then
cl = mini(x1, x2, x3, x4)
On Error Resume Next
combinaison.Add cl, CStr(cl)
If Err = 0 Then Range("A" & combinaison.Count) = cl
formule.Add f2, f2
On Error GoTo 0
End If

2 If IsError(Evaluate(f3)) Then GoTo 3
If Abs(Evaluate(f3) - 24) < 10 ^ -13 Then
cl = mini(x1, x2, x3, x4)
On Error Resume Next
combinaison.Add cl, CStr(cl)
If Err = 0 Then Range("A" & combinaison.Count) = cl
formule.Add f3, f3
On Error GoTo 0
End If

3 If IsError(Evaluate(f4)) Then GoTo 4
If Abs(Evaluate(f4) - 24) < 10 ^ -13 Then
cl = mini(x1, x2, x3, x4)
On Error Resume Next
combinaison.Add cl, CStr(cl)
If Err = 0 Then Range("A" & combinaison.Count) = cl
formule.Add f4, f4
On Error GoTo 0
End If

4 Next
Next
Next
Next
Next
Next
Next
MsgBox "Formules " & formule.Count
MsgBox "Combinaisons " & combinaison.Count
End Sub

Function mini(x1, x2, x3, x4) 'créée par pierrejean le 23/10/08
tablo = Array(x1, x2, x3, x4)
For n = LBound(tablo) To UBound(tablo)
 For m = LBound(tablo) To UBound(tablo)
  If tablo(m) > tablo(n) Then
   temp = tablo(n)
   tablo(n) = tablo(m)
   tablo(m) = temp
  End If
 Next m
Next n
For n = LBound(tablo) To UBound(tablo)
  mini = mini & tablo(n)
Next n
End Function

Function Epur(f$)
'suppression des parenthèses inutiles
For i = 1 To 7 Step 2
If Mid(f, i, 1) = "(" Then
j = Application.Find(")", f, i)
x = Mid(f, i + 1, j - 1 - i)
If IsError(Application.Find("+", x)) And IsError(Application.Find("-", x)) _
Or Mid(f, IIf(i > 1, i - 1, 1), 1) = "+" _
Or IIf(j = 7, Mid(f, 8, 1), 0) = "+" Or IIf(j = 7, Mid(f, 8, 1), 0) = "-" _
Then f = Replace(f, "(" & x & ")", x)
End If
Next
'classement si + ou *
If f Like "?+?+?+?" Then
f = mini(x1, x2, x3, x4)
f = Mid(f, 1, 1) & "+" & Mid(f, 2, 1) & "+" & Mid(f, 3, 1) & "+" & Mid(f, 4, 1)
End If
If f Like "?[*]?[*]?[*]?" Then
f = mini(x1, x2, x3, x4)
f = Mid(f, 1, 1) & "*" & Mid(f, 2, 1) & "*" & Mid(f, 3, 1) & "*" & Mid(f, 4, 1)
End If
If f Like "(?????)[*]?" And Mid(f, 9, 1) <= Mid(f, 2, 1) Then f = Mid(f, 9, 1) & "*" & Mid(f, 1, 7)
If f Like "?[*](?????)" And Mid(f, 1, 1) > Mid(f, 4, 1) Then f = Mid(f, 3, 7) & "*" & Mid(f, 1, 1)
Epur = f
End Function
 

Fichiers joints

Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonjour job75, Roger, le fil, le forum


Job75
Un bref passage matinal d'abord pour te remercier

de ta persévérance, de ton code VBA.

J'ai testé ton fichier (d'avant ton dernier post) --> tip top

Maintenant, dès lundi, j'essaierai de m'atteler à la vérification de la saisie du joueur (avec RegExp ou l' opérateur Like)

Merci encore de ton implication, Job75.

(J'essaierai de tester avant la fin de la journée, de tester ton dernier classeur post de 11h03)


Roger
Une petit demande de confort (pour ma pomme ;) )
Déjà que je dois consommer un grand nombre de neurones pour revenir vers les maths si tu te mets à employer la notation polonaise inverse, tu vas m'achever :D

Pourrais-tu stp noter les solutions de manière classique ?

Merci
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Re


Avant de vous laisser, pour cause de réunion de famille

et pour vous laisser de quoi vous amuser avec VBA et les maths

Voici dans la même veine (pour ceux que cela intéresse)

Le four four's game:
(plus d'infos ici:
http://en.wikipedia.org/wiki/Four_fours )
Trouver les solutions de 1 à 100, en utilisant uniquement 4 fois le chiffre 4
(on peut utiliser !, ^ et , en plus des 4 opérations classiques)

Exemple
1 = 4/4*4/4

Bon amusement et bon week-end à tous

PS: pour les impatients
http://www.drb.insel.de/~heiner/Puzzles/Year/R4444
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Re,

Staple, prends bien la dernière Edition dans mon post précédent...

Bon appétit et A+

Edit 1 : il est bon d'initialiser les nombres aléatoires avec Randomize

Edit 2 : dans l'un de tes posts tu te demandais combien d'éléments peut contenir une matrice définissant un nom. A mon avis, la seule limite est celle de la mémoire.

En VBA je ne sais pas faire, mais avec une macro Excel 4.0 voici :

- les données sont en Feuil1!A1:A10000

- tu crées une feuille macro Excel 4.0 et tu entres la formule suivante sous forme matricielle :

=RETOUR(DEFINIR.NOM("toto";""&Feuil1!$A$1:$A$10000))

- si tu veux masquer le nom, toujours en matricielle :

=RETOUR(DEFINIR.NOM("toto";""&Feuil1!$A$1:$A$10000;;;VRAI))

- tu exécutes la macro

- si tu veux stocker des nombres, tu utilises DEREF(Feuil1!$A$1:$A$10000) mais généralement ça occupe plus de place mémoire.

Dans ton jeu, tu peux utiliser cette méthode pour mémoriser les combinaisons.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonsoir Job75, le fil , le forum


J'ai pu tester ton dernier fichier (tout semble OK pour ce qui est des solutions)

Merci et bravo à toi

Pour ce qui concerne que j'appelle les matrices.

Je pensais stocké dans des "matrices" nommées
(par Insertion/Noms/Définir)

ce qui fait 396/33=12 noms à définir ainsi

cI={1128,...}
cII={....,....}
cIII={....,....}
etc

ensuite pour le tirage

CHOISIR(ENT((ALEA()*n)+1);CI,CII,...)

(Je finaliserai cela demain)

Toujours dans l'idée ne rien stockée dans les cellules.

Bonne fin de week-end à tous
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonsoir à tous

Comme prévu, voici le bon classeur. Le mode d'emploi est celui indiqué le 25/10 :

Bonsoir à tous.

Les macros sont associées à la feuille 'Feuil1'.
  1. La macro 'données' place les opérandes possibles dans les colonnes A à D.
  2. La macro 'vq' teste chaque quartet d'opérandes et propose éventuellement une réponse dans la colonne F.
  3. La macro 'test' répète 12 fois 'vq' et place les résultats dans les colonnes F à Q.(Environ 90 secondes.)
Les résultats sont écrits en notation polonaise inverse, i.e.
9 6 - 3 5 + *
signifie
(9 - 6)*(3 + 5)
Je compléterai le travail en essayant d'obtenir TOUTES LES SOLUTIONS FORMELLES en utilisant la même méthode. Pour l'instant, j'en trouve 14754 en un quart d'heure. C'est un peu long... mais, me semble-t-il, intéressant à cause de la méthode reposant uniquement sur le recensement des cinq formules
x1 x2 ¤ x3 ¤ x4 ¤
x4 x3 x1 x2 ¤ ¤ ¤
x1 x2 ¤ x3 x4 ¤ ¤
x4 x1 x2 ¤ x3 ¤ ¤
x3 x1 x2 ¤ ¤ x4 ¤
et la répétition de tirages aléatoires des nombres et des opérateurs. Il en résulte un code simplissime.

A bientôt.


Note pour STAPLE1600
Désolé pour la notation polonaise inverse (NPI). Cela me permet une écriture plus concise et surtout plus logique. Lorsque j'écris
9 6 - 3 5 + x
je vois clairement l'ordre des opérations : une différence, puis une somme, enfin le produit des résultats précédents. Si l'on veut vraiment revenir aux notations des siècles passés, rien n'empêche d'écrire un traducteur... mais bon courage car la syntaxe est plutôt complexe !
 

Fichiers joints

ROGER2327

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonsoir à tous.

Je joins le résultat de ma recherche des solutions par un algorithme aléatoire en fournissant deux fonctions en VBA. L'une donne une solution (s'il y en a), l'autre donne toutes les solutions pour un ensemble de quatre nombres donnés.

Le temps de calcul (de l'ordre de 2 min 30 s à 3 min) pour toutes les solutions des 495 ensembles possibles vous semble-t-il raisonnable ?

Les commentaires et suggestions sur le code seront les bienvenus.

A bientôt.
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonjour à tous


Désolé ne pas avoir pu revenir sur le forum plutôt.

(Problème de FAI)

Roger: je regarde ton fichier dès que possible.


Et je continue à essayer une version par formule (sans VBA), pour le fun.
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonjour à tous,

Bon retour à STAPLE1600.
Vous trouverez ci-joint une version améliorée de ma recherche. Laissez tomber la précédente.
Après plusieurs centaines d'essais, la certitude de trouver tous les résultats souhaités n'est pas totale, mais nettement améliorée. Ce travail a été très intéressant pour moi, même s'il ne contribue peut-être pas beaucoup à la résolution du problème initial...
À vous de voir...

A bientôt,
ROGER2327

P.S. : J'allais oublier ! Je livre les résultats avec les bonnes vieilles parenthèses. Tant pis pour la logique...
 

Fichiers joints

ROGER2327

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonsoir
Un complément aux communications précédentes :​
J'ai poursuivi le test de la procédure S24 pour voir quelles valeurs des bornes supérieures des paramètres m et k permettraient d'obtenir tous les résultats. Dans l'absolu, il est certain qu'aucune borne ne permet de dire qu'on obtiendra toutes les solutions à chaque essai. Je livre toutefois les valeurs observées sur une série d'environ 4 000 essais.​
Sur le premier graphique, on voit que fixer m à 1 000 n'aurait permis d'obtenir les 404 quadruplets permettant d'obtenir 24 que dans 76% des essais.
Fixer m à 2 000 aurait permis de les obtenir dans 98% des essais.
La valeur qui aurait permis d'obtenir le résultat complet lors de chacun des 4 000 essais est 4 529.
Mais rien ne dit qu'au 4 001ème essai, un valeur encore supérieure n'eût été nécessaire !​
Le deuxième graphique s'interprète de la même façon pour la deuxième partie de la procédure. On voit par exemple que, sous réserve que la première partie ait fourni les 404 quadruplets susceptible de fournir 24, il aurait fallu fixer k à 5 000 pour obtenir tous résultats dans 60% des essais.
La valeur qui aurait permis d'obtenir le résultat complet lors de chacun des 4 000 essais est 8 318.​
Je ne serais pas choqué qu'on trouvât que cette étude est inutile : je l'ai faite par simple curiosité. Je serais par contre heureux que ceux qui partagent ma curiosité me fissent part de leur réflexion. Merci d'avance...​
A bientôt, j'espère,
ROGER2327
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonjour à tous


Roger:

J'ai testé (sous XL2000) ton fichier du 4/11
Bravo pour ta solution par fonctions VBA personnalisées.

Malheureusement je ne pourrais t'apporter d'autres commentaires plus techniques et mathématiques vu mon niveau en maths.


Es-tu intéressé par l'autre jeu (The four four's game) que je citais dans ce message ?
http://www.excel-downloads.com/forum/606894-post89.html
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonjour à tous


Un petit up

Pour inviter de nouveaux les formulistes du forum à m'aider

Petit rappel: les différentes solutions VBA de ce fil fonctionnent toutes
(merci encore à Job75 et Roger2327 et Lii et ceux que j'aurai oublié)


Pour le fun, j'essaie de faire une version par formule.

Le plus dur étant de trouver une formule qui puisse trouver les solutions
pour une combinaison donnée.

Voila au j'en suis pour ce qui est de la génération des combinaisons
par formules.

(voir la pj de ce fil :figerALEA.xls
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Bonjour à tous


Voila une version (100 % formule)

Merci de bien vouloir la tester.

J'attends vos commentaires.

Merci à tous ceux qui m'ont aidés dans cette quête.

IMPORTANT: Pour tester ce classeur, il faut cocher dans :

Options/Calcul

[x] Itération

Ne pas oublier de décocher en fin d'utilisation.
 

job75

XLDnaute Barbatruc
Re : [VBA] Maths -algorithm- "The 24 Game" aide demandée (combinaisons/permutations)

Rebonjour Staple,

Super cette solution par formule.

J'ai testé en utilisant 5 chiffres, par exemple (2*3)*(3+1)+5. Il faudrait qu'apparaisse "Chiffres non valides".

C'est de ma faute, je n'y avait pas pensé. Il devrait suffire de rajouter à la formule définissant tricell :

+10000*ESTNUM(PETITE.VALEUR(p;5))

Edit : il faut aussi définir p par :

=1*STXT(chiffres;LIGNE(Feuil1!$1:$5);1)

A+
 
Dernière édition:

Discussions similaires


Haut Bas