Le compte est bon

Katido

XLDnaute Occasionnel
Katido a soumis une nouvelle ressource:

Le compte est bon - Jouer et voir la meilleure solution - 100% VBA Excel, fonctionne hors ligne

Application "Le compte est bon" qui permet :
- de saisir les 6 entrées (1 à 10, 25, 50, 75 ou 100) et le nombre cible (100 à 999), manuellement ou automatiquement de façon aléatoire,
- de jouer pour tenter de s'approcher le plus possible du nombre cible,
- d'afficher le meilleur résultat possible 40 secondes après la fin de la saisie (tempo paramétrable).
Ce meilleur résultat est calculé par l'application en VBA.

La feuille "Lisez-moi" décrit l'application de façon détaillée.
La...

En savoir plus sur cette ressource...
 

Arnaud&04

XLDnaute Nouveau
Bonjour,

je vous félicite pour la qualité de ce jeu sous Excel, et je voudrais vous apporter une petite remarque.

Il me semble que votre tirage aléatoire des 6 chiffres ne respecte pas la procédure officielle du jeu de télévision.

Votre procédure de tirage aléatoire permet de retirer plusieurs fois le même nombre, et attribue un poids équivalent à chacun des nombres 1, 2, 3,… 50, 75 et 100.

La procédure officielle (voir pièce jointe et plusieurs informations à voir sur Internet) est basée sur le tirage aléatoire des 24 nombres suivants :

1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 25, 50, 75 et 100.

Un nombre tiré ne peut pas être retiré.

En conséquence les nombres 1 à 10 ne peuvent apparaître au maximum que 2 fois dans un tirage, et les nombres 25 50 75 100 ne peuvent apparaître au maximum qu'une seule fois.

Je suis très intéressé par votre méthode de calcul permettant de trouver ou de se rapprocher plus possible de la valeur cible, je la regarderai prochainement avec un très grand intérêt.

Bonnes fêtes de fin d'année

Cordialement

Arnaud
 

Pièces jointes

  • des-chiffres-et-des-lettres-regles-du-jeu.pdf
    91.4 KB · Affichages: 7

Katido

XLDnaute Occasionnel
Bonjour et bon Noël,

Merci beaucoup pour votre réponse, et pour l'intérêt que vous avez porté à ma petite contribution.

Le tirage aléatoire que j'ai implémenté attribue effectivement le même poids à chacun des nombres 1, 2, 3,… 50, 75 et 100... tout simplement parce que je ne connaissais pas la procédure officielle !
Merci pour votre remarque, je vais fournir une nouvelle version en conséquence.

Toutefois un détail me surprend en lisant cette procédure : il est écrit que le nombre cible est de 1 à 999, alors que pour moi il est de 100 à 999.
D'ailleurs je me souviens très bien de Bertrand Renard qui, il y a une cinquantaine d'années, lançait à la main les 3 roues pour afficher ce nombre et qui relançait celle des centaines quand par malchance elle tombait sur le 0.
Ce point reste à éclaircir.

Cordialement,
 

Arnaud&04

XLDnaute Nouveau
Bonjour et bon Noël,

Merci beaucoup pour votre réponse, et pour l'intérêt que vous avez porté à ma petite contribution.

Le tirage aléatoire que j'ai implémenté attribue effectivement le même poids à chacun des nombres 1, 2, 3,… 50, 75 et 100... tout simplement parce que je ne connaissais pas la procédure officielle !
Merci pour votre remarque, je vais fournir une nouvelle version en conséquence.

Toutefois un détail me surprend en lisant cette procédure : il est écrit que le nombre cible est de 1 à 999, alors que pour moi il est de 100 à 999.
D'ailleurs je me souviens très bien de Bertrand Renard qui, il y a une cinquantaine d'années, lançait à la main les 3 roues pour afficher ce nombre et qui relançait celle des centaines quand par malchance elle tombait sur le 0.
Ce point reste à éclaircir.

Cordialement,
Bonjour,
vous avez tout à fait raison, le document que je vous ai envoyé comporte une erreur que je n'avais pas vue.
Le nombre cible ne peut prendre que des valeurs de 100 à 999.
Encore un grand merci de partager ce jeu, et félicitations tout particulièrement pour la méthode de recherche de la valeur cible.
Cordialement
 

Katido

XLDnaute Occasionnel
Bonjour,

Voici donc la version V2 qui assure le tirage aléatoire conformément au document officiel.

Quant à la méthode de calcul, j'ai été un peu avare de commentaires. Tout est dans la Sub Calcul et en particulier dans le bloc ' Cas général :
' Cas général
ee = 9999: vv = 9999: v = 1: i(v) = 1: j(v) = 2: o(v) = 0
Do
If o(v) < 4 Then
Opsuiv: ' Opération suivante
o(v) = o(v) + 1
Select Case o(v)
Case 1 ' -
a(v + 1, i(v)) = Abs(a(v, i(v)) - a(v, j(v)))
If a(v + 1, i(v)) = 0 Then GoTo Opsuiv
Case 2 ' *
a(v + 1, i(v)) = a(v, i(v)) * a(v, j(v))
If a(v + 1, i(v)) >= 10000000 Then GoTo Opsuiv
Case 3 ' /
If a(v, i(v)) >= a(v, j(v)) Then u = a(v, i(v)) / a(v, j(v)) Else u = a(v, j(v)) / a(v, i(v))
If Int(u) = u Then a(v + 1, i(v)) = u Else GoTo Opsuiv
Case 4 ' +
a(v + 1, i(v)) = a(v, i(v)) + a(v, j(v))
End Select
' Ecart avec le résultat
e = Abs(a(v + 1, i(v)) - zz)
' Mémorisation
If (e < ee) Or (e = ee And v < vv) Then
ee = e: vv = v
For k = 1 To NN
If k < NN Then ii(k) = i(k): jj(k) = j(k): oo(k) = o(k)
For l = 1 To NN: aa(k, l) = a(k, l): Next l
Next k
End If
If v < NNM1 Then
For l = j(v) To NN - v: a(v + 1, l) = a(v, l + 1): Next l
v = v + 1: i(v) = 1: j(v) = 2: o(v) = 0
End If
ElseIf j(v) <= NN - v Then
a(v + 1, j(v)) = a(v, j(v))
j(v) = j(v) + 1: o(v) = 0
ElseIf i(v) < NN - v Then
a(v + 1, i(v)) = a(v, i(v))
i(v) = i(v) + 1: j(v) = i(v) + 1: o(v) = 0
For l = j(v) To NN - v: a(v + 1, l) = a(v, l + 1): Next l
Else
v = v - 1: If v = 0 Then Exit Do
End If
Loop
En gros, on réalise les opérations sur les nombres du tableau a(v, x).
v est la profondeur du calcul.
i(v) et j(v) sont les pointeurs des opérandes 1 <= i(v) < j(v) <= NN.
o(v) est l'opération courante.
e est l'écart avec la cible.
Les calculs ne sont réalisés que sur des entiers strictement positifs.
Le meilleur résultat est mémorisé dans aa(), ii(), jj(), oo(), ee et vv.
 

Pièces jointes

  • LeCompteEstBon_V2.0.xlsm
    72.1 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG