Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 11-02-2016 10:32:13

robinson T
Invité

analyse combinatoire

Consider the digits 2, 3, 4, 5, 6, 7 and 8. a) (2 points) How many different number of 5 digits can be formed using the digits above? b) (2 points) Find the sum of all these numbers



S'il vous plait surtout la deuxieme question, y a t il un moyen de calculer la somme de ces nombres algébriquement?

#2 11-02-2016 11:23:37

Ostap Bender
Membre
Inscription : 23-12-2015
Messages : 242

Re : analyse combinatoire

Bonjour Robinson.

Oui, il y a un moyen de calculer la somme de ces nombres algébriquement. Mais la première chose à faire, c'est de compter les nombres obtenus, donc de répondre à la première question...

Ostap Bender

Hors ligne

#3 11-02-2016 12:01:38

robinson T
Invité

Re : analyse combinatoire

Ostap Bender a écrit :

Bonjour Robinson.

Oui, il y a un moyen de calculer la somme de ces nombres algébriquement. Mais la première chose à faire, c'est de compter les nombres obtenus, donc de répondre à la première question...

Ostap Bender

Merci Ostap s'il vous plait j'aimerai bien savoir comment ça se trouve

#4 11-02-2016 12:32:53

Ostap Bender
Membre
Inscription : 23-12-2015
Messages : 242

Re : analyse combinatoire

J'attends à cet effet ta réponse à la première question...

Ostap Bender

Hors ligne

#5 11-02-2016 23:59:58

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : analyse combinatoire

Ostap Bender a écrit :

J'attends à cet effet ta réponse à la première question...

Ostap Bender

Salut l'ami,

au fond, qu'est-ce que tu en as à faire de la réponse à la première question ??? On sait tous que le nombre en question est égal à [tex]8\times 7\times 6 \times 5 \times 4\times = 6.720[/tex]. Je ne comprends pas cette posture "professorale" anti pédagogique. Tu risques d'attendre longtemps et de frustrer ceux qui attendent ta réponse ...

Sinon, pour voir, le plus petit nombre est sûrement 23.456 et le plus grand 87.654, soit un intervalle de 64.197 nombres entiers entre les deux, nettement supérieur à 6.720. Comment donc faire le lien ?
on a au début : 23.456, 23.457, 23.458.
Ensuite, on a : 23.465, 23.467, 23.468.
Puis 23.475, 23.476, 23.478
et enfin 23.485, 23.486 et 23.487

Si on part du plus grand,
on a 87.654, 87.653, 87.652
puis 87.645, 87.643, 87.642,
puis 87.635, 87.634, 87.632
et enfin 87.625, 87.624, 87.623.

La question est de trouver la procédé de fabrication de ces nombres pour en déduire une règle permettant d'en faire la somme.
Faut un peu chercher.

Hors ligne

#6 12-02-2016 09:32:34

Ostap Bender
Membre
Inscription : 23-12-2015
Messages : 242

Re : analyse combinatoire

Bonjour Freddy.

Tu n'as que sept chiffres différents à arranger...

Ensuite tu écris - dans la pensée - tous les nombres obtenus, pour en faire la somme. Sur ton cahier d'écolier, tu écris tous ces nombres, les uns au-dessous des autres en alignant soigneusement les chiffres et en laissant de l'espace en haut pour les retenues. Tu es prêt ? Le crayon est bien taillé ?

Eh bien tu vas te rendre compte que la somme des chiffres dans chaque colonne est la même...
En effet, les effectifs de chacun des chiffres de chaque colonnes sont égaux.
  A combien ?

Ostap Bender

Hors ligne

#7 12-02-2016 09:56:19

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : analyse combinatoire

Re,

Tu as raison, 7 chiffres. L'heure tardive, la fatigue  et l'agacement contenu sont mauvais conseillers, je le vérifie une fois de plus.
On a donc 7!/2! = 7x6x5x4x3 = 2.520 nombres distincts possibles.
Voilà, tu as la réponse à ta première question.
Alors, la seconde ? Car bien entendu, on ne va pas faire le calcul bêtement à la main, comme tu le suggères, un brin ironique.
Et la solution ne me saute pas aux yeux, désolé. Et j'ai envie d'avoir la réponse, ça m’intéresse.
En attendant, le demandeur s'est barré, trouvant difficile de tomber sur une aide qui n'aide pas beaucoup, et qui renvoie la question que l'on a posé, comme un jokari :-)
Difficile de savoir doser la "bonne " réponse, celle qui donne envie de continuer à chercher, sans pour autant faire le boulot à la place des autres.
Par exemple, tu aurais pu supposer avoir la réponse à la première question est indiquer une piste pour répondre à la seconde.
Certains sont assez bon dans ce genre d’exercice, d'autres doivent encore apprendre.

Perso, je suis trop fatigué en ce moment pour chercher ...

A te lire, mon ami.

Hors ligne

#8 12-02-2016 10:34:26

Ostap Bender
Membre
Inscription : 23-12-2015
Messages : 242

Re : analyse combinatoire

D'accord. Je vais faire comme si Robinson ne revenait pas. D'ailleurs nous sommes vendredi.

Tu n'as peut-être pas remarqué les indications que j'ai écrites à l'encre sympathique, car il m'arrive d'être sympathique, sais-tu ?

Tu vas donc faire agir le groupe symétrique à 7 éléments sur ta feuille de calcul. Ainsi tu vas constater que les effectifs de chacun des chiffres de chaque colonnes sont égaux.  A combien ? Il y a 7x6x5x4x3 = 2 520 lignes, donc chaque chiffre (il y en a 7) apparait 6x5x4x3 fois dans chaque colonne.

Nous sommes en vue du port, me semble-t-il.

Ostap Bender

SI j'ai demandé avec insistance le résultat de la première question c'est que
1/ Robinson donne l'impression qu'il l'a trouvé.
2/ Il serait idiot de partir sur des mauvaises bases comme un résultat non divisible par 7.
3/ J'ai toujours un a priori envers les intervenants qui ne font pas l'effort de traduire un énoncé. C'est pas bien d'avoir des principes, mais je suis comme ça. Maintenant si Robinson revient pour me dire que le français c'est sa troisième langue, qu'il a toujours eu un mal fou avec et que ce n'est pas la réforme de l'orthographe qui va arranger ça, je veux bien faire un effort pour comprendre...

Hors ligne

#9 12-02-2016 15:49:06

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 404

Re : analyse combinatoire

Bonjour,

Yoshi, l'intervenant lambda (pas la même casquette), a eu suffisamment de démêlés par le passé avec le sieur totomm qui avait un peu trop tendance à "sauter sur tout ce qui bougeait", sans chercher assez à comprendre la motivation et le cheminement de la pensée dudit intervenant pour jeter la pierre aux procédés atypiques.
J'ai été, par le passé donc, suffisamment - souvent - atypique dans mon approche pour jeter la pierre aux autres... freddy s'est habitué.

Et il est vrai que beaucoup (trop) de ceux qui demandent de l'aide ont une rédaction assez elliptique obligeant à lire entre les lignes ou a rappeler les Règles de fonctionnement de notre forum qui exposent un niveau d'exigences pédagogiques pas vu ailleurs, où on se bouscule pour donner la (les) réponse(s) sans trop se préoccuper du "service" (?) éventuel qu'on leur rend ainsi.
Je suis allé tester ailleurs : je m'y suis rapidement fait traiter de "jeune branleur" par un habitué d'un niveau supérieur au mien (on trouve toujours facilement plus fort que soi) sans qu'aucun modo ne réagisse par un rappel à la courtoisie...
J'y avais signalé qu'un membre s'était fait pirater son compte. Réponse en substance : bien fait pour lui, la prochaine fois, il choisira un mot de passe plus costaud...

Mais revenons à nos moutons...  Mon rôle de modo est de veiller à  ce que tout reste "dans les clous" et que chacun soit tolérant envers l'autre : nul n'est parfait et personne ne peut se targuer de détenir LA vérité...

Cela dit, il n'est pas facile, à l'heure du zapping intensif qui caractérise l'époque actuelle, d'arriver à doser la répartition entre réponse pure et dure et explications pour amener le demandeur à comprendre de lui-même (ce qui lui sera bien plus profitable). Du haut de mes 10000 posts, je me fais parfois encore piéger et le je vois s'évaporer en un claquement de doigts, me laissant frustré de ne pas avoir pu aller au bout.

Je terminerais en paraphrasant Brassens :
Ne jetez pas la pierre au primo-intervenant atypique,             (manque la bonne rime)
Je suis derrière...

@+

    Yoshi
- modérateur -

Hors ligne

#10 12-02-2016 16:16:37

Ostap Bender
Membre
Inscription : 23-12-2015
Messages : 242

Re : analyse combinatoire

Maître Yoshi,

Je n'ai pas envie de justifier mes choix mathématiques/pédagogiques/didactiques dans toutes mes interventions.
Je revendique mon droit à l'erreur dans ces trois domaines auxquels j'adjoindrais la psychologie.

Je ne jette la pierre à personne. Je connais mon adresse à ce genre d'exercice :
je serais bien capable de me l'envoyer dans l'oeil et rien n'est plus désagréable.
Je croyais que les maths c'était gentil, que ça ne faisait de mal à personne. Je me trompe ?

Quant au contenu de mes interventions sur ce forum.
Si le public en veut, je les sors de ma hotte,
S'il n'en veut pas je les remets dans ma culotte.

Bon ça va comme ça ? On peut faire des maths ? Parce que c'est ce que je préfère !
Mon bizuthage va continuer longtemps ?

Ostap Bender

Hors ligne

#11 12-02-2016 16:37:39

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 404

Re : analyse combinatoire

Re,

Il semble que je me sois mal fait comprendre - j'aurais peut-être dû m'abstenir -  et j'en suis navré...

Je n'ai pas envie de justifier mes choix mathématiques/pédagogiques/didactiques dans toutes mes interventions.
(...) Je ne jette la pierre à personne.

Je ne crois pas avoir dit autre chose, je pensais mon intervention comme ayant été de nature à apaiser les tensions (si tensions, il y avait vraiment et non "chamaillerie" ) : en gros (et ça me plaît bien moins de le dire comme ça), je disais qu'il fallait te laisser intervenir comme tu l'entendais, que je ne souhaitais pas que quelqu'un revive mon expérience passée...
Relis-moi.

Mon bizuthage va continuer longtemps ?

No bizuthage at all !

@+

Hors ligne

#12 12-02-2016 16:51:49

Ostap Bender
Membre
Inscription : 23-12-2015
Messages : 242

Re : analyse combinatoire

OK comme ça, Maître Yoshi, c'est clair.

Je vais donc continuer de faire de mon mieux.

Ostap Bender

Hors ligne

#13 14-02-2016 20:33:56

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : analyse combinatoire

Salut,

la somme est égale à 139 998 600, sauf erreur.

PS : comment ai-je fait ? Une feuille de calcul et un crayon électronique avec lequel j'ai écrit un petit programme VBA (qui m'a donné un peu à réfléchir, merci au passage ). Je n'ai pas vu, mais j'ai la vue qui baisse, le groupe cyclique (que je pensais réservé aux permutations, pas arrangements).
@yoshi : j'ai bien compris le message, mais j'ai toujours envie de comprendre. Je vais aussi tremper ma plume dans l'encre sympathique :-)

Dernière modification par freddy (15-02-2016 08:05:14)

Hors ligne

#14 15-02-2016 10:05:52

Ostap Bender
Membre
Inscription : 23-12-2015
Messages : 242

Re : analyse combinatoire

Bonjour Freddy.

Allons bon ! Je ne trouve pas la même réponse.

J'ai [tex]7\times6\times5\times4\times3[/tex] lignes. Dans la première colonne, chacun des 7 chiffres apparait donc [tex]6\times5\times4\times3[/tex]. La somme des chiffres dans cette colonne est donc ce nombre d'occurrences multiplié par la somme [tex]2 + 3 + 4 + 5 + 6 + 7 + 8 = 55 = 5 \times 11 [/tex]. Reste à additionner ce nombre [tex]N = 11\times6\times5^2\times4\times3[/tex] à [tex]10N[/tex] obtenu dans la colonne des dizaines, à [tex]100N[/tex] obtenu dans la colonne des centaines, à ...
Soit au total une somme égale à [tex]11111N[/tex] soit [tex]41\times271N= 41\times271\times11\times6\times5^2\times4\times3[/tex].

Freddy trouve [tex]41\times271\times7\times5^2\times2^2\times3^2[/tex].

Qui pourra nous départager ?

Ostap Bender

Hors ligne

#15 15-02-2016 11:56:47

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 404

Re : analyse combinatoire

Bonjour,


J'ai écrit le petit programme Python suivant :

from itertools import combinations,permutations

A,B,K=[],[],[]
L=[2,3,4,5,6,7,8]

for T in combinations(L, 5):
   A.append(list(T))

print("Ensemble des listes de 5 chifres : ")
for B in A:
    print(B)
    for T in permutations(B,5):
       K.append(list(T))
print ("\nNombre de nombres :",len(K))
               
somme,nb=0,0
for C in K:
    for i,a in enumerate(C):
        nb+=a*10**(4-i)
    somme+=nb
    nb=0

print ("\nSomme des nombres :",somme)

Explications.
itertools est un module tout prêt de Python, j'en extrais les Classes permettant de calculer les combinaisons et les permutations.
combinaisons et permutations me sont données sous forme de n_uplets (ici, j'ai demandé des quintuplets).
Je construis la liste A des listes B de 5 chiffres...
(Parcourir des listes est plus rapide pour moi que de parcourir que de travailler sur des quintuplets)
Je charge et affiche ensuite chacune des listes de 5 chiffres
Pour chacune, j'extrais toutes les permutations de 5 chiffres sur 5, qui sont là aussi des quintuplets.
Je les stocke dans une liste K, sous forme chacune de liste à 5 éléments.
Reste à transformer chaque liste en le nombre voulu...
Via l'instruction enumerate, qui parcourt chaque liste chiffre après chiffre (désigné par a), et qui gère un compteur d'index, j'obtiens aussi l'index i du chiffre a extrait.
Comme il y a 5 chiffres, le 1er représente le nombre : [tex]a \times 10^{4-i}[/tex] (le 1er index en Python est 0)
Donc à chaque nouveau chiffre j'incrémente le nombre cherché de la valeur ci-dessus.
A chaque sortie de boucle, j'incrémente la somme du nombre nb, nombre que je remets à 0 ensuite.
Voilà ce que j'ai en lançant le script :

Ensemble des listes de 5 chiffres :
[2, 3, 4, 5, 6]
[2, 3, 4, 5, 7]
[2, 3, 4, 5, 8]
[2, 3, 4, 6, 7]
[2, 3, 4, 6, 8]
[2, 3, 4, 7, 8]
[2, 3, 5, 6, 7]
[2, 3, 5, 6, 8]
[2, 3, 5, 7, 8]
[2, 3, 6, 7, 8]
[2, 4, 5, 6, 7]
[2, 4, 5, 6, 8]
[2, 4, 5, 7, 8]
[2, 4, 6, 7, 8]
[2, 5, 6, 7, 8]
[3, 4, 5, 6, 7]
[3, 4, 5, 6, 8]
[3, 4, 5, 7, 8]
[3, 4, 6, 7, 8]
[3, 5, 6, 7, 8]
[4, 5, 6, 7, 8]

Nombre de nombres : 2520

Somme des nombres : 139998600

S'il y a erreur, c'est que je fais la même interprétation de la question que freddy...

N-B :
[tex]41\times271\times7\times5^2\times2^2\times3^2 = 69999300[/tex]
Calcul Python :

>>> 41*271*7*(5**2)*(2**2)*(3**2)
69999300
>>>

** est la puissance en Python.
Faute de frappe, il faut remplacer[tex] 2^2[/tex] par [tex]2^3[/tex]

@+

Hors ligne

#16 15-02-2016 14:33:35

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : analyse combinatoire

Re,

sur mon tableur, je sais que je les ai tous, la liste n'est pas si "grande" que cela, et j'ai bien regardé les premiers et les derniers, test visuel assez rapide.
Je peux donner mon code VBA, mais c'est assez facile à programmer quand on trouvé l'astuce.
Dès que j'ai 3 min (je ne sais pas quand :-)), je chercherai ce qui ne va pas chez Ostap, sauf s'il nous quoi avant ! ;-)

Hors ligne

#17 15-02-2016 15:43:34

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 404

Re : analyse combinatoire

Ave Centurion,

freddy a écrit :

Dès que j'ai 3 min (je ne sais pas quand :-)), je chercherai ce qui ne va pas chez Ostap

Mais :

Ostap Bender a écrit :

Soit au total une somme égale à 11111N soit [tex]41\times271N= 41\times271\times11\times6\times5^2\times4\times3[/tex]

Oe encore [tex] 11111N=41\times271\times11\times6\times5^2\times4\times3 = 41\times271\times11\times 2\times 3 \times5^2\times 2^2 \times 3 = 2^3\times 3^2 \times 5^2\times 11 \times 41 \times 271[/tex]
Et
[tex]139998600 =  2^3 \times 3^2 \times 5^2 \times 7 \times 4 1\times 271[/tex]
L'écart vient du 7 au lieu de 11...
Donc du nombre N puisque 11111 = 41*271

Pourquoi ce 11 au lieu du 7 pas le temps de chercher...
Ah si ! Je l'ai:
2+3+4+5+6+7+8 = 35 = 5 * 7 et non 55 = 5 * 11

C'est tout bête !

@+

Hors ligne

#18 15-02-2016 17:00:51

Ostap Bender
Membre
Inscription : 23-12-2015
Messages : 242

Re : analyse combinatoire

Ah oui.

On n'insistera pas assez sur l'apprentissage des tables de multiplication.

Bravo pour les programmeurs qui ont gagné haut la main.

Ostap Bender

Hors ligne

#19 15-02-2016 19:35:39

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 404

Re : analyse combinatoire

Re,


Ostap Bender a écrit :

Bravo pour les programmeurs qui ont gagné haut la main

1. Ah mais non, rien de glorieux, c'est juste de la "bête" force brute !
2. C'était juste un pb d'addition, sauf si tu as fait [tex]2+3+4+5+6+7+8 = \frac{8\times 9}{2}-1[/tex]
3. Ça ne remet aucunement en cause le raisonnement (brillant, d'ailleurs) que - personnellement - je privilégie quand j'ai le temps...
4. Si tu ne sais pas programmer, cela ne t'incite pas à ajouter cette corde à ton arc ?
    Si oui, je te recommande vivement Python qu'on qualifie souvent de "user friendly"
    En Python, je peux calculer sur des nombres entiers dont la taille n'est limitée que par la qté de RAM de ta machine,
    En Python, je peux calculer 1000 décimales si je veux en important un module spécifique...
    Je pourrais en écrire des lignes des lignes encore...

@+

Hors ligne

#20 16-02-2016 08:15:47

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : analyse combinatoire

Salut,

astucieux, en effet. J'ai fait bêtement la même chose sous VBA, sans réfléchir plus avant ...
Le code liste tous les cas, ne retient que ceux dont on a besoin, et les écrit dans la première colonne, les lignes sont données par le compteur cpt.

freddy a écrit :

Sub number()

Dim cpt, number As Double
cpt = 0
number = 0
For a = 2 To 8
  For b = 2 To 8
    If b = a Then GoTo finb
    For c = 2 To 8
     If c = b Or c = a Then GoTo finc
     For d = 2 To 8
       If d = c Or d = b Or d = a Then GoTo find
       For e = 2 To 8
         If e = d Or e = d Or e = c Or e = b Or e = a Then GoTo fine
         cpt = cpt + 1
         number = a * 10000 + b * 1000 + c * 100 + d * 10 + e
        Cells(cpt, 1) = number
      fine: Next e
    find: Next d
   finc: Next c
  finb:  Next b
Next a

End Sub

Dernière modification par freddy (16-02-2016 08:16:57)

Hors ligne

#21 16-02-2016 11:57:57

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 404

Re : analyse combinatoire

Salut,

Intéressant ton prog, je me suis dit en le voyant qu'il était inutile effectivement de tout stocker...
Alors j'ai repris le mien :


#!/usr/bin/python
# -*- coding: utf-8 -*-

from itertools import combinations,permutations

L,nb,somme=[2,3,4,5,6,7,8],0,0
print("Ensemble des quintuplets de 5 chiffres : ")
for Q in combinations(L, 5):
   print (Q)
   for P in permutations(list(Q),5):
      a,b,c,d,e=P
      nb+=1
      somme+=a*10000+b*1000+c*100+d*10+e
   
print ("\nNombre de nombres :",nb)
print ("\nSomme des nombres :",somme)

Je n'ai pas réfléchi pour voir si je peux encore réduire le code : si oui ce serait probablement au détriment de sa clarté...

Ce programme peut fonctionner - tel quel indifféremment - sur Windows, Mac OS ou Linux pourvu que vous utiulisiez une version de la branche 3.x de Python.
Sortie :

Ensemble des quintuplets de 5 chiffres :
(2, 3, 4, 5, 6)
(2, 3, 4, 5, 7)
(2, 3, 4, 5, 8)
(2, 3, 4, 6, 7)
(2, 3, 4, 6, 8)
(2, 3, 4, 7, 8)
(2, 3, 5, 6, 7)
(2, 3, 5, 6, 8)
(2, 3, 5, 7, 8)
(2, 3, 6, 7, 8)
(2, 4, 5, 6, 7)
(2, 4, 5, 6, 8)
(2, 4, 5, 7, 8)
(2, 4, 6, 7, 8)
(2, 5, 6, 7, 8)
(3, 4, 5, 6, 7)
(3, 4, 5, 6, 8)
(3, 4, 5, 7, 8)
(3, 4, 6, 7, 8)
(3, 5, 6, 7, 8)
(4, 5, 6, 7, 8)

Nombre de nombres : 2520

Somme des nombres : 139998600

Je traite tout à la volée...
Je commence par générer (et afficher) chacun des 21 quintuplets Q de nombres.
Pour chaque quintuplet Q généré, je le transforme à la volée en liste sur la ligne for, pour générer un par un toutes les permutations P à partir de chacune.
Et je dois récupérer les nombres a,b,c,d,e de chaque permutation (générée sous forme de quintuplet) et :
* j'ajoute 1 à mon compteur
* j'ajoute le nombre composé [tex]\overline{abcde}[/tex] à ma variable somme

Une fois le traitement terminé, j'affiche le nombre de nombres et leur somme.

Les combinaisons et permutations sont obligatoirement générées, à partir de listes (objets voisins des tableaux des autres langages),sous forme de n-uplets.

Je pourrais me passer des lignes 7, 9, 12 et 15 et n'afficher que le résultat final.

Peut-être pourrais-je compacter encore mon code, mais ce serait au détriment de sa clarté.
Ce code fonctionnera indifféremment avec Windows, Mac OS ou Linux pour peu que vous ayez une version de la branche 3.x de Python d'installée...

@+

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
vingt huit plus cinquante trois
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums