Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Staple1600

XLDnaute Barbatruc
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonsoir


J'ai suivi ton conseil JNP, mais comme dirait un nouveau membre "ca ne fonctionne pas"

=ALEATOU() renvoie un message d'erreur

PS: Pour commencer , on pourrait se borner à 5<=n<=10
 
Dernière édition:

KenDev

XLDnaute Impliqué
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonjour à tous,

Re ,Un algo ???
Je reste très sceptique... A la limite, des combinaisons aléatoures, pourquoi pas ...
Bonne soirée

Je suis d'accord (même avec une orthographe aléatoire ).

Quelques résultats, 'non nettoyés' :


2009 en 6 :
Code:
=-(1-((2*(FACT((3+4))/5))-6))

un autre 2011 en 6 :
Code:
=-1^2*FACT(3)^4-5+FACT(6)

2013 en 6 :
Code:
=-1-2+FACT((FACT(3)+RACINE(4)))/FACT(5)*6

2014 en 6 :
Code:
=-1*2-FACT(FACT(3))+FACT(4)*(FACT(5)-6)

2015 en 5 :
Code:
=-1+FACT((2^3))/4/5

2016 en 5 :
Code:
=1*2*FACT((3+4))/5

2017 en 5 :
Code:
=1+2*FACT((3+4))/5

2018 en 6 :
Code:
1*2-FACT(FACT(3))+FACT(4)*(FACT(5)-6)

Cordialement

KD
 

Staple1600

XLDnaute Barbatruc
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonjour KenDev


Merci de t'arrêter ici.

Comme je l'ai dit plus bas
https://www.excel-downloads.com/thr...ar-ce-petit-probleme-dun-grand-nippon.175031/

On a pu trouver un algo pour The 24 game

Je subodore que cela doit être possible ici aussi, non ?
(surtout si on ajoute les contraintes suivantes 5<n<10)

Mais peut-être que j'ai le nez bouché
(voir tout le reste aussi)
 

KenDev

XLDnaute Impliqué
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonjour Staple, le forum,

Je ne suis pas sur que l'on puisse parler d'algo pour ce qui suit. je transmet quand-même. Les résultats d'hier on été généré en laisant tourner 1 heure (mais mon ordi à un indice de performance de 2 ou 3 selon un autre fil) la sub LaunchSerie avec les paramètres 6, 2010, 10 puis encore un bon moment avec 5, 2010, 10.

Les résultats s'affichent en colonne 1 de la feuille active les uns sous les autres. Echap pour stopper. Sinon LaunchSingle stoppe au premier résultat trouvé.

Une curiosité : alors qu'hier la sub semblait tourner en rond sur des solutions 2015, 2016, 2017 sorties massivement, aujourd'hui j'ai eu la solution 2011 en 5 cité sur ce fil ou en lien ainsi qu'une 2012 en 6 (dans le classeur joint) qui refusait obstinément de sortir hier.

Je vais regarder tes liens du post 8.

Cordialement

KD

Edit : En théorie n est accepté de 1 à 20. En pratique j'ai des énormes doutes pour n > 10. Je n'ai fait des tests que sur 5, 6, 7.
 

Pièces jointes

  • jxf.xlsm
    23.9 KB · Affichages: 99
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonsoir à tous


Superbe ouvrage, KenDev (chapeau !!)

J'ai testé pour n=5 et ton code trouve la solution proposée par Nicolas Graner (plus bas dans le fil)
VB:
Sub tKIT_5solution()
'Sub LaunchSingle()
Dim n%, v&, Rw&, tim
tim = Timer
    'Do
        n = 5 'Application.InputBox("n ?", Default:=5, Type:=1)
    'Loop Until n > 5 And n < 10
    v = 2011 'Application.InputBox("cible ?", Default:=2011, Type:=1)
    Ecr = 1 'Application.InputBox("Ecrire la solution à combien près ?", Default:=1, Type:=1)
    Rw = Cells(Rows.Count, 1).End(xlUp).Row
    If Rw = 1 Then Rw = 0
    With Application
    .ScreenUpdating = False
    x = False
    Do
        Call ert(n, v)
    Loop Until x = True
    Cells(Rw + 1, 1) = "'" & Frm
    Cells(Rw + 2, 1) = "'" & Txt
    Cells(Rw + 3, 1) = Res
    .ScreenUpdating = True
    MsgBox .Round((Timer - tim), 1) & " secondes."
    End With
End Sub
Mon Timer est patraque car un coup il m'affiche 287 secondes , puis le coup d'après 586
??????

Quels temps avez vous sur vos PCS, les zamis ?
 

KenDev

XLDnaute Impliqué
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonsoir à tous,

Ton Timer va très bien (Enfin je suppose). La Sub génèrant les solutions de manière aléatoire. Tu as de la chance (ou de la puissance de calcul), car la solution dont tu parles il m'a fallut plusieurs heures pour l'avoir...

Cordialement

KD
 

Staple1600

XLDnaute Barbatruc
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonsoir KenDev

Si on borne le problème (ici n=5) et sachant que les nombres sont dans l'ordre croissant de 1 à 5, peut-on estimer le nombre de "combinaisons" d’opérateurs mathématiquement valides entre chaque nombre ?

En bref, peut-on optimiser le temps de traitement ?
Puisque dans ce cas on connait :
le résultat: 2011
les valeurs de n : 1 2 3 4 5
les opérateurs disponibles + - * / ! ^ et SQRT

PS: N'étant pas un matheux d'origine, je ne sais pas si que je dis est mathématiquement correct.

PS: On est obligé de passé par Rnd ?

EDITION: Je viens de réessayer
 
Dernière édition:

KenDev

XLDnaute Impliqué
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonsoir Staple et le forum,

Je ne sais pas si il est obligatoire de passer par rnd mais ça m'a semblé la bonne solution dans la mesure ou le nombre d'opérateurs (au sens large, incluant V et !) n'est pas fixe :
exemples :
_ +1+2+3+4+5 -> 4 opérateurs
_ V1*(2!!*V(V(3^4)*5)!) -> 9 opérateurs
Le nombre de formules possibles est infini à cause de ! et de racine.

La sub pourrait être grandement améliorée en pondérant tous ces choix. Dans la version actuelle, dès qu'il y a un choix à faire, toutes les possibilités ont la même probabilité.
Par exemple j'améliore la rapidité en rajoutant deux lignes pour obliger la sub à n'accepter qu'une fois sur trois l'opérateur "/" quand le sort le désigne. "/" passe donc de 20% à 6,67% et les 4 autres de 20 à 23,33%.
Mais ce faisant je réduis la probabilité d'apparitions de formules 'exotiques'. Ce genre de choix est à étudier à de multiples endroits du code. La sub refuse également les divisions a/b quand, ni (a/b)^-1 ni (b/a)^-1 ne donne un entier.
La sub refuse aussi les racines non entières, pourtant on peut imaginer une solution avec du V2 et V3 au numérateur qui serait compensé par un V6 au dénominateur. Bref tous les choix faits sont discutables, le but étant de trouver un bon rapport solutions/temps.

Cordialement

KD
 

Staple1600

XLDnaute Barbatruc
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Re KenDev

Merci pour tes explications.

J'attends avec impatience (si tu as le temps bien sur) que tu publies ta version améliorée.

Bonnes Fêtes à toi, aux tiens et à tous les lecteurs de ce fil.


PS1: Dommage que nous ayons pas été camarade de classe en cours de mathématique

PS2: Je repasserai dans le fil la semaine prochaine. Bon Noël à tous.
 
Dernière édition:

KenDev

XLDnaute Impliqué
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonjour et bonnes fêtes à tous,

@Staple : Pour améliorer maintenant c'est moins une histoire de codage que de tests en variant les paramètres et d'études sur ces tests. A cet effet, voir le classeur ci-joint. Un petit conseil pour ceux qui n'ont pas de grosses machines ou peu de patiente : ne pas être trop ambitieux au départ. Les DoEvents ne sont pas placé au mieux...

Cordialement

KD
 

Pièces jointes

  • jxf2.xls
    136.5 KB · Affichages: 86

Staple1600

XLDnaute Barbatruc
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Bonjour KenDev

Très impressionné (et enthousiasmé) à la lecture de ton code
Malheureusement quand je lance, j'ai une erreur ici
m = WorksheetFunction.RandBetween(n - vTolerN, n + vTolerN)

(PS: L'utilitaire d'analyse VBA est pourtant coché)

EDITION: J'ai aussi coché dans les références atpvbaefr.xls
 
Dernière édition:

KenDev

XLDnaute Impliqué
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Re,

Ca passe chez moi, peut-être que RandBetween est spécifique à 2007 ?

Code:
m = n - vTolerN - 1 + Int((2 * vTolerN + 1) * Rnd + 1)
à la place devrait passer j'espère.

Cordialement

KD
 

JNP

XLDnaute Barbatruc
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Re ,
Fonctionne chez moi, mais donne toujours le même type de réponse
Code:
=-(1-2)+FACT(3)^4-5+FACT(6)
-(1-2)+3!^4-5+6!
2012
=+1^2+FACT(3)^4-5+FACT(6)
+1^2+3!^4-5+6!
2012
=-(1-2)+(FACT(3)^4)-5+FACT(6)
-(1-2)+(3!^4)-5+6!
2012
Bonne soirée
 

KenDev

XLDnaute Impliqué
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?


Re,

Tu as eu le temps d'étudier toutes les valeurs possibles et leur combinaisons pour les 14 paramètres ? Le fichier joint est un outil de recherche à calibrer à force d'essais. Les stats sont à réaliser par l'utilisateur grâce aux données de la feuille masquée HiddenSearches, affichable par bouton sur l'UF et à alimenter avec 'Enregistrer les paramètres etc' qui apparait après chaque recherche). Le réglage par défaut (également modifiable avec 'Enregistrer..' et en cochant 'Masque par défaut') est surement loin d'être le meilleur. Cordialement

KD

Edit : par ailleurs certaines recherches ont peu de solutions différentes voir aucune.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA et/ou FORMULES]Interessé(e)s par ce petit problème d'un grand nippon ?

Re


Je ne comprends pas pourquo RandBetWeen tousse
(Si je teste sur une feuille =ALEA.ENTRE.BORNES(10,20) , cela fonctionne)

Par contre dans VBA, je n'ai pas accès à Application.WorkSheet.Function.RandBetWeen ???

Ce n'est pas grave, je vais essayer d'utiliser Rnd à la place.

EDITION: Cela semble OK avec Rnd, le classeur est en train de tourner.
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…