Correction DM 1) La somme des chiffres de rang pair vaut 36 et

Transcription

Correction DM 1) La somme des chiffres de rang pair vaut 36 et
Correction DM
9 782091 724775
1) La somme des chiffres de rang pair vaut 36 et celle de rang impair 27. Donc, on cherche la
clé K telle que 27 + 3 × 36 + K ≡ 0 (10) soit 7 + 3 × 6 + K ≡ 0 (10). Donc K ≡ −7 − 18 ≡
−7 − 8 ≡ −15 ≡ 5 (10). Comme K est un chiffre alors K = 5 comme indiqué sur le code
barre.
article 1
article 2 article 3 article 4
2) a)
Provenance Royaume Uni Bulgarie Japon
France
Source : http://fr.wikipedia.org/wiki/Code-barres_EAN
b) Pour l’article 1, Si + 3Sp = 31. Donc K ≡ −31 ≡ −1 ≡ 9 (10).
Ainsi la clé de l’article 1 vaut bien 9 .
c) Notons x le chiffre manquant. La clé vaut K = 5. Sachant que Sp = 25 et Si = 5 + x
alors x est un chiffre solution de l’équation 5 + x + 3 × 25 + 5 ≡ 0 (10). Donc x ≡ −85 ≡
−5 ≡ 5 (10). Cela donne finalement x = 5 .
d) On procède de même. x est alors solution de 15 + 3 × (15 + x) + 2 ≡ 0. Modulo 10,
on obtient 3x ≡ −62 (10) soit 3x ≡ 8 (10). En listant toutes les possibilités, on se rend
compte que le chiffre inconnu vaut 6 car 3x ≡ 8 (10) n’a qu’une solution :
x
3x
0
0
1
3
2
6
3
9
4
2
5
5
6 7
8 1
x

8
4
9
7
e) Nous avons maintenant deux chiffres inconnus x au rang 7 et y au rang 8. Donc
Sp = 25 + y et Si = 20 + x. Par suite l’équation en x et y est 20 + x + 3(25 + y) + 9 ≡ 0 (10).
Elle se réduit à x + 3y ≡ 6 (10).
Il y a deux solutions évidentes : (x ; y) = (6 ; 0) et (x ; y) = (0 ; 2). On ne peut donc
pas retrouver le code barre puisqu’il y a ambiguité sur les chiffres.
En fait, on dénombre exactement 10 solutions (x = y = 9 en fait partie). Pourriez-vous
écrire un algorithme renvoyant toutes ces solutions, puis traduire votre algorithme
dans le langage python (la solution est à la fin de la correction).
3) a) Les produits sont 20–0–72–7–42–10–16–21–14 et S = 202 .
202 11
b) D’après les hypothèses, on a C ≡ −S ≡ −202 (11). Or 9 2 1 8 . Par suite C ≡ −4 ≡
4
7 (11). Donc la clé est bien égale à 7 comme indiqué sur le code barre.
c) Pour les livres, le code EAN commence toujours par 978 (ou 979) et se termine par la
clé. Entre ces deux parties, on note les chiffres du codes ISBN sans sa clé. De manière
abrégée, on écrirait
1
EAN = 978 + ISBN (sans la clé) + clé du code EAN
Ainsi, si on connaît les chiffres de l’un (je parle de ceux du milieux) alors on connaît
ceux de l’autre.
Par exemple, pour le livre 1, le code EAN vaut 978210003781K où K est la clé que l’on
va calculer. D’après le 1), K = 0. Donc, code EAN = 9782100037810 1
Pour le livre 2, le code ISBN est 227804677C où C = 2 est la clé de ce code que l’on
calcule comme au 2). Donc le livre n˚2 a pour code ISBN 2278046772 2
Enfin le livre n˚3 a pour code EAN 978295069600K
3
où K = 7 est le code de ce livre.
Algorithme :
pour x allant de 0 à 9
pour y allant de 0 à 9
z prend la valeur x+3y
Si z ≡ 6 (10)
Afficher x et y
En python :
1
2
3
4
5
6
f o r x in range ( 1 0 ) :
f o r y in range ( 1 0 ) :
z=x+3∗y
i f z%10 == 6 :
print " x = " , x ,
print " et y = " , y
Le programme renvoie :
x
x
x
x
x
x
x
x
x
x
=
=
=
=
=
=
=
=
=
=
0
1
2
3
4
5
6
7
8
9
et
et
et
et
et
et
et
et
et
et
y
y
y
y
y
y
y
y
y
y
=
=
=
=
=
=
=
=
=
=
2
5
8
1
4
7
0
3
6
9
1. C’est un vieux livre de programmation sur le Visual basic.
2. C’est un livre de TS de 1998.
3. Je vous laisse trouver ce dont il s’agit...
2