• Aucun résultat trouvé

A725. Huit sacs

N/A
N/A
Protected

Academic year: 2022

Partager "A725. Huit sacs"

Copied!
7
0
0

Texte intégral

(1)

A725. Huit sacs A7. Problèmes de pesées Problème proposé par Augustin Genoud

Huit sacs, A, B, C, D, E, F, G et H, contiennent chacun 100 billes. Six sacs ont uniquement des billes de 10 g. Un sac ne contient que des billes de 11 g et un autre sac ne renferme que des billes de 9 g. Afin de déterminer le poids des billes de chaque sac, on extrait a billes du sac A, b billes du sac B, c billes du sac C, d billes du sac D, etc.

Ensuite, on procède à une seule pesée en mettant l’ensemble des billes extraites sur une balance électronique.

Par convention et sans perte de généralité, on retient 0 ≤ a ≤ b ≤ c ≤ …. ≤ h.

Déterminer le nombre de billes qu'il convient d'extraire de chaque sac dans les deux cas suivants :

- le nombre total de billes sorties des sacs est le plus petit possible.

- le terme h est le plus petit possible ? Solution de Paul Voyer

Il existe A82 56configurations possibles de l'ensemble des sacs.

Si on utilise une séquence { a, b, c, d, e, f, g, h}, p billes de 11 g alourdissent de p g, et q billes de 9 g allègent de q g, par rapport à ce que feraient des billes de 10 g.

On cherche 8 valeurs a,b,c,d,e,f,g,h dont les différences deux à deux pourront prendre

2 28

8

C valeurs distinctes, le signe de l'écart entre le résultat de la pesée et

10(a+b+c+d+e+f+g+h) précisant lequel des 2 sacs identifiés a des billes de 11 g et lequel a des billes de 9 g.

Une première méthode utilise l'ensemble {0,1,2,4,8,16,32,64}, pour laquelle l'écart de pesée est de la forme 2p-2q, avec la convention 2-1=0, ce qui permet d'identifier les sacs N°p+2 (11) et N°q+2 (9).

Mais elle utilise 127 billes et h=64, valeurs non optimales.

(N.B. Cette première méthode est aussi une règle de Golomb d'ordre 8, voir la suite).

De meilleurs résultats sont obtenus avec les règles de Golomb d'ordre 8, adaptées au problème.

https://fr.wikipedia.org/wiki/Règle_de_Golomb http://oeis.org/A079423

Une règle de Golomb est une règle munie de marques à des positions entières, telle que deux paires de marques ne soient jamais à la même distance ; en d'autres termes, chaque couple de marques mesure une longueur différente des autres.

Une table (à construire en fonction de la règle, voir annexe 1) permet de désigner le sac 11 et le sac 9 en fonction du résultat de la pesée.

Pour définir une règle de Golomb qui minimise le nombre de billes à sortir des sacs, on a dû écrire un programme VBA (annexe 2).

La règle trouvée est {0,1,3,8,14,18,30,39}, de somme 113.

Il faut sortir 113 billes dont 39 du sac le plus chargé .

Une règle de Golomb est dite optimale si elle sa longueur h est minimale.

(2)

Il n'existe qu'une règle optimale d'ordre 8 {0,1,4,9,15,22,32,34}, elle a pour longueur h = 34, et la somme de ses termes vaut 116,

(et la règle symétrique {0,2,12,19,25,30,33,34}, de somme =155, de ce fait moins intéressante).

Il faut sortir 116 billes dont 34 du sac le plus chargé .

Annexe 1

Table d'identification des sacs en fonction de la pesée, nombre minimum de billes.

écart pesée-1130

N° du sac de 9

N° du sac de 11

-44 8 1

-43 8 2

-41 8 3

-37 8 4

-32 8 5

-30 7 1

-29 7 2

-27 7 3

-24 8 6

-23 7 4

-20 6 1

-19 6 2

-18 7 5

-17 6 3

-14 8 7

-13 6 4

-12 5 1

-11 5 2

-10 7 6

-9 5 3

-8 6 5

-7 4 1

-6 4 2

-5 5 4

-4 4 3

-3 3 1

-2 3 2

-1 2 1

1 1 2

2 2 3

3 1 3

4 3 4

5 4 5

6 2 4

7 1 4

8 5 6

9 3 5

10 6 7

(3)

11 2 5

12 1 5

13 4 6

14 7 8

17 3 6

18 5 7

19 2 6

20 1 6

23 4 7

24 6 8

27 3 7

29 2 7

30 1 7

32 5 8

37 4 8

41 3 8

43 2 8

44 1 8

Table d'identification des sacs en fonction de la pesée, h mimimum.

écart pesée-1160

N° du sac de 9

N° du sac de 11

-34 8 1

-33 8 2

-32 7 1

-31 7 2

-30 8 3

-28 7 3

-25 8 4

-23 7 4

-22 6 1

-21 6 2

-19 8 5

-18 6 3

-17 7 5

-15 5 1

-14 5 2

-13 6 4

-12 8 6

-11 5 3

-10 7 6

-9 4 1

-8 4 2

-7 6 5

-6 5 4

-5 4 3

-4 3 1

-3 3 2

(4)

-2 8 7

-1 2 1

1 1 2

2 7 8

3 2 3

4 1 3

5 3 4

6 4 5

7 5 6

8 2 4

9 1 4

10 6 7

11 3 5

12 6 8

13 4 6

14 2 5

15 1 5

17 5 7

18 3 6

19 5 8

21 2 6

22 1 6

23 4 7

25 4 8

28 3 7

30 3 8

31 2 7

32 1 7

33 2 8

34 1 8

Annexe 2 Macro excel

Sub Macro1() '

' Macro1 Macro '

' huit sacs

Dim delta(120) As Integer Dim taquet(7) As Integer sommemax = 120

' la somme doit faire moins de 116 (règle optimale 116/34) taquet(0) = 0

For i = 1 To 2

(5)

taquet(1) = i

delta(i) = 1 ' cette valeur est portée occupée

For j = i + 1 To 15

If delta(j - i) = 1 Then GoTo nextj taquet(2) = j

delta(j) = 1 delta(j - i) = 1

For k = j + 1 To (120 - i - j) / 5 If delta(k) = 1 Then GoTo nextk If delta(k - i) = 1 Then GoTo nextk If delta(k - j) = 1 Then GoTo nextk taquet(3) = k

delta(k) = 1 delta(k - i) = 1 delta(k - j) = 1

For l = k + 1 To (120 - i - j - k) / 4 If delta(l) = 1 Then GoTo nextl If delta(l - i) = 1 Then GoTo nextl If delta(l - j) = 1 Then GoTo nextl If delta(l - k) = 1 Then GoTo nextl taquet(4) = l

delta(l) = 1 delta(l - i) = 1 delta(l - j) = 1 delta(l - k) = 1

For m = l + 1 To (120 - i - j - k - l) / 3 If delta(m) = 1 Then GoTo nextm If delta(m - i) = 1 Then GoTo nextm If delta(m - j) = 1 Then GoTo nextm If delta(m - k) = 1 Then GoTo nextm If delta(m - l) = 1 Then GoTo nextm taquet(5) = m

delta(m) = 1 delta(m - i) = 1 delta(m - j) = 1 delta(m - k) = 1 delta(m - l) = 1

For n = m + 1 To (120 - i - j - k - l - m) / 2 If delta(n) = 1 Then GoTo nextn

If delta(n - i) = 1 Then GoTo nextn If delta(n - j) = 1 Then GoTo nextn If delta(n - k) = 1 Then GoTo nextn If delta(n - l) = 1 Then GoTo nextn If delta(n - m) = 1 Then GoTo nextn taquet(6) = n

(6)

delta(n) = 1 delta(n - i) = 1 delta(n - j) = 1 delta(n - k) = 1 delta(n - l) = 1 delta(n - m) = 1

For p = n + 1 To 117

If delta(p) = 1 Then GoTo nextp If delta(p - i) = 1 Then GoTo nextp If delta(p - j) = 1 Then GoTo nextp If delta(p - k) = 1 Then GoTo nextp If delta(p - l) = 1 Then GoTo nextp If delta(p - m) = 1 Then GoTo nextp If delta(p - n) = 1 Then GoTo nextp taquet(7) = p

delta(p) = 1 delta(p - i) = 1 delta(p - j) = 1 delta(p - k) = 1 delta(p - l) = 1 delta(p - m) = 1 delta(p - n) = 1

' on a trouvé une règle ' est-elle la meilleure ?

somme = i + j + k + l + m + n + p

If somme > sommemax Then GoTo nextp1 sommemax = somme

For ndex = 1 To 8

Range("A" & ndex).Value = taquet(ndex - 1) Next ndex

Range("A10").Value = sommemax Range("b1:b117").Clear

Count = 0

For ndex = 1 To 120 'vérifier combien de valeurs, devrait faire 28.

Ccount = Ccount + delta(ndex) Next

Range("A14").Value = Ccount For ndex = 1 To p

If delta(ndex) = 1 Then Range("B" & ndex).Value = ndex Next ndex

' Stop debug nextp1:

delta(p) = 0 delta(p - i) = 0 delta(p - j) = 0 delta(p - k) = 0 delta(p - l) = 0

(7)

delta(p - m) = 0 delta(p - n) = 0 nextp:

Next p

delta(n) = 0 delta(n - i) = 0 delta(n - j) = 0 delta(n - k) = 0 delta(n - l) = 0 delta(n - m) = 0 nextn:

Next n

delta(m) = 0 delta(m - i) = 0 delta(m - j) = 0 delta(m - k) = 0 delta(m - l) = 0 nextm:

Next m

delta(l) = 0 delta(l - i) = 0 delta(l - j) = 0 delta(l - k) = 0 nextl:

Next l

delta(k) = 0 ' on libère les valeurs qu'occupait k delta(k - i) = 0

delta(k - j) = 0 nextk:

Next k

delta(j) = 0 delta(j - i) = 0 nextj:

Next j

Next i

Stop ' pour voir les valeurs debug End Sub

Références

Documents relatifs

Déterminer le nombre de billes qu’il convient d’extraire de chaque sac dans les deux cas suivants :. – le nombre total de billes sorties des sacs est le plus

Déterminer le nombre de billes qu'il convient d'extraire de chaque sac dans les deux cas suivants : - le nombre total de billes sorties des sacs est le plus petit possible..

Il convient donc de choisir les valeurs a à h de sorte que les différences 2 à 2 soient inégales et la différence i-j donnera les 2 sacs anormaux et le signe de i-j déterminera

Elle est obtenue en partant de 0, 1, 3, ce qui donne les différences 1, 2, 3 et en tentant ensuite de minimiser (empiriquement) la somme en prenant chaque fois la plus petite

Exemple 3 : la balance affiche 1194g ; on est encore au dessus de la moyenne avec un différentiel positif de 24g.. Le sac A reste

Si l’on a pris i billes dans le sac plus lourd et j dans le plus léger, on va constater un écart égal à i-j : ce résultat permettra d’identifier ces sacs si tous les écarts sont

Afin d'identifier les faux sacs en une seule pesée, il est nécessaire de construire une séquence dont les différences 2 à 2 sont distinctes deux à deux. Si on a une telle séquence,

Déterminer le nombre de billes qu'il convient d'extraire de chaque sac dans les deux cas suivants : - le nombre total de billes sorties des sacs est le plus petit possible.. - le