Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Programmer le jeu "le compte est bon"

490 views
Skip to first unread message

ShahinaMohamed

unread,
Feb 12, 2022, 5:50:47 PM2/12/22
to
Bonjour tout le monde,
Dans le cadre d’un mini-projet à l’université je dois coder le jeu « Le compte
est bon ». Le jeu est issu de l’émission des chiffres et des lettres :
6 nombres parmi {1,2,3,4,5,6,7,8,9,10,25,50,75,100} sont tirés au sort (tirage
avec remise). Ensuite, avec ces chiffres, nous devons réaliser des opérations
mathématiques (+,-,/,x) pour trouver un autre nombre tiré au hasard entre 101 et
999.
Cependant, après plusieurs heures de réflexion, et plusieurs essais je suis
désespérée. Quelqu’un pourrait-il me venir en aide ? Merci d’avance.

Alain Ketterlin

unread,
Feb 13, 2022, 5:51:37 AM2/13/22
to
ShahinaMohamed <nospam_s...@hotmail.fr.invalid> writes:

> Dans le cadre d’un mini-projet à l’université je dois coder le jeu «
> Le compte est bon ». Le jeu est issu de l’émission des chiffres et des
> lettres : 6 nombres parmi {1,2,3,4,5,6,7,8,9,10,25,50,75,100} sont
> tirés au sort (tirage avec remise). Ensuite, avec ces chiffres, nous
> devons réaliser des opérations mathématiques (+,-,/,x) pour trouver un
> autre nombre tiré au hasard entre 101 et 999.

Comme dit Stefan, c'est un problème difficile, et c'est un problème
d'algorithmique plus que de Python. Note déjà qu'il n'y a pas forcément
de solution (par exemple, si on tire 6 fois 1, il sera difficile de
produire 7 ou un nombre supérieur à 9 -- il me semble que chaque nombre
produit ne peut être utilisé qu'une seule fois).

Voilà une stratégie possible avec une liste initiale L et un but B :

- on choisit deux nombres N1 et N2 de L et une operation "o"
- on retire N1 et N2 de L, et on y ajoute le résultat (N1 "o" N2)
- puis on recommence avec ce nouveau jeu

Mais comme on peut choisir, il y a plusieurs possibilités. Il n'y a
pas vraiment de critère pour choisir, on essaie toutes les possibilités.
Au premier coup, avec 6 nombres, on a 6*5 choix du couple de nombres, et
4 opérations, donc 120 possibilités. Pour *chacune* de ces possibilités,
on a une nouvelle liste, mais avec seulement 5 nombres, et chacune de
ces listes permet de "générer" 5*4*4 (80) nouvelles listes. Etc.

Evidemment, si à n'importe quel moment on trouve une liste qui contient
B, on peut s'arrêter. Ou alors continuer, histoire de voir si il n'y a
pas une autre solution, peut-être plus rapide. Si on continue toujours,
on aura à la fin exploré (6*5*5*4*4*3*3*2*2*1)*4 listes.

J'ai fait l'hypothèse qu'on ne peut pas réutiliser un nombre. Si on
peut, alors il y a encore plus de possibilités, et on n'est même pas sûr
que l'agorithme va s'arrêter. Vérifie ce que dit l'énoncé.

En fait, si tu suis cette stratégie, tu verras que certaines listes sont
examinés plusieurs fois, parce que deux des opérations sont
commutatives, et donc l'ordre du choix des nombres est sans importance
pour ces deux opérations -- mais pas pour les deux autres. Essaye
d'écrire la formule exacte pour le nombre de possibilités, ce n'est pas
très dur.

De même si le même nombre est présent plusieurs fois dans la liste, on
produit plein de listes similaires. Bon, tu peux garder ce genre
d'optimisation pour plus tard je pense. Vérifie quand même ce que dit
l'énoncé.

-- Alain.

yves

unread,
Feb 13, 2022, 10:35:00 AM2/13/22
to
Le Sat, 12 Feb 2022 16:50:41 -0600, ShahinaMohamed a écrit:

Bonjour,
Avec les éléments que tu nous donnes, nous ne savons pas exactement où tu
bloques.

Le coeur du problème (l'algorithme) est probablement difficile à mettre
parfaitement au point, comme l'ont signalé les autres intervenants.

Mais tu peux essayer de décomposer le problème en petits morceaux, et
résoudre petit morceau par petit morceau.

Si tu trouves la partie python difficile par exemple, commence par écrire
la fonction qui renvoie 6 nombres tirés au sort parmi
{1,2,3,4,5,6,7,8,9,10,25,50,75,100} (tirage avec remise) et présente la
dans ce groupe de discussion.
Si tu trouves ce premier mini-problème ridiculement facile, fais nous le
savoir. Nous ne savons pas.

@+
--
Yves

Mc Beth

unread,
May 28, 2022, 2:09:01 AM5/28/22
to
Bonjour,
Ma réponse est fort tardive et vous ne devez plus en avoir besoin. Mais il existe différents algorithmes python (ou autres langages) du "Compte est Bon" disponibles sur github. Effectivement l'algorithme n'est pas des plus simples. Et étudier certains de ces algorithmes peut vous aider à faire le votre, à votre manière.
Voici un lien qui donne une solution et des liens vers d'autres pages github :
https://github.com/p-mathis/Le-Compte-Est-Bon
Cordialement.
0 new messages