Vous êtes sur la page 1sur 10

CORRECTION CCINP INFO 2023 - TSI

ED
March 14, 2024

M
1 Partie I - Tests de code de sécurité sociale

H
1.1 Q1.
1.1.1 Méthode 1

IA
[50]: def num_secu(code):
code_m = ''
for c in code:
if c != ' ':

N
code_m = code_m + c
return int(code_m)
LA
[51]: # A ne pas inclure dans la feuille des réponses
# Juste pour tester
num_secu("2 91 01 75 018 002")
AW

[51]: 2910175018002

1.1.2 Méthode 2
[52]: def num_secu(code):
KH

code_m = ''
for c in code:
if c.isnumeric():
code_m = code_m + c
return int(code_m)
L

[53]: # A ne pas inclure dans la feuille des réponses


# Juste pour tester
.E

num_secu("2 91 01 75 018 002")

[53]: 2910175018002
PR

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)


1.1.3 Méthode 3
[54]: def num_secu(code):
code_m = ''
for c in code:

ED
if c in '0123456789':
code_m = code_m + c
return int(code_m)

M
[55]: # A ne pas inclure dans la feuille des réponses
# Juste pour tester
num_secu("2 91 01 75 018 002")

H
[55]: 2910175018002

IA
1.1.4 Méthode 4
[56]: def num_secu(code):
code_m = ''

N
for c in code:
if '0' <= c <= '9':
code_m = code_m + c
LA
return int(code_m)

[57]: # A ne pas inclure dans la feuille des réponses


# Juste pour tester
AW

num_secu("2 91 01 75 018 002")

[57]: 2910175018002

1.2 Q2.
KH

[58]: def clef(code):


return 97 - (code % 97)

[59]: # A ne pas inclure dans la feuille des réponses


# Juste pour tester
L

clef(2910175018002)
.E

[59]: 68

1.3 Q3.
PR

1.3.1 Méthode 1
[60]: def num_secu_complet(code):
cle = clef(code)
return code * 100 + cle

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)


[61]: # A ne pas inclure dans la feuille des réponses
# Juste pour tester
num_secu_complet(2910175018002)

ED
[61]: 291017501800268

1.3.2 Méthode 2
[62]: def num_secu_complet(code):

M
cle = str(clef(code))
code_c = str(code) + cle
return int(code_c)

H
[63]: # A ne pas inclure dans la feuille des réponses

IA
# Juste pour tester
num_secu_complet(2910175018002)

[63]: 291017501800268

N
1.4 Q4.
LA
[64]: def test_num_secu(code):
cle = int(code[-2:])
code_i = num_secu(code[:-3])
return cle == clef(code_i)
AW

[65]: # A ne pas inclure dans la feuille des réponses


# Juste pour tester
test_num_secu('2 91 01 75 018 002 68')

[65]: True
KH

[66]: # A ne pas inclure dans la feuille des réponses


# Juste pour tester
test_num_secu('2 91 01 75 018 002 93')

[66]: False
L
.E

2 Partie II - Test de numéro de carte de crédit


2.1 Q5.
PR

2.1.1 Méthode 1
[67]: def num_en_liste(code):
L = []
code_s = str(code)
for x in code_s:

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)


L.append(int(x))
return L

[68]: # A ne pas inclure dans la feuille des réponses

ED
# Juste pour tester
num_en_liste(4532015112830465)

[68]: [4, 5, 3, 2, 0, 1, 5, 1, 1, 2, 8, 3, 0, 4, 6, 5]

M
2.1.2 Méthode 2
[69]: def num_en_liste(code):

H
L = []
while code != 0:

IA
L.append(code % 10)
code = code // 10
L.reverse()
return L

N
[70]: # A ne pas inclure dans la feuille des réponses
# Juste pour tester
LA
num_en_liste(4532015112830465)

[70]: [4, 5, 3, 2, 0, 1, 5, 1, 1, 2, 8, 3, 0, 4, 6, 5]
AW

2.2 Q6.
2.2.1 Méthode 1
[71]: def tuple_pairs_impairs(code):
L = num_en_liste(code)
KH

L0 = L[-2::-2]
L1 = L[::-2]
return L0, L1

[72]: # A ne pas inclure dans la feuille des réponses


# Juste pour tester
L

tuple_pairs_impairs(4532015112830465)
.E

[72]: ([6, 0, 8, 1, 5, 0, 3, 4], [5, 4, 3, 2, 1, 1, 2, 5])

2.2.2 Méthode 2
PR

[73]: def tuple_pairs_impairs(code):


L = num_en_liste(code)
L0 = [L[i] for i in range(0, len(L), 2)]
L1 = [L[i] for i in range(1, len(L), 2)]
L0.reverse()

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)


L1.reverse()
return L0, L1

[74]: # A ne pas inclure dans la feuille des réponses

ED
# Juste pour tester
tuple_pairs_impairs(4532015112830465)

[74]: ([6, 0, 8, 1, 5, 0, 3, 4], [5, 4, 3, 2, 1, 1, 2, 5])

M
2.2.3 Méthode 3
[75]: def tuple_pairs_impairs(code):

H
L = num_en_liste(code)
L0 = []

IA
L1 = []
for i in range(len(L) - 1, -1, -1):
if i % 2 == 0:
L0.append(L[i])

N
else:
L1.append(L[i])
return L0, L1
LA
[76]: # A ne pas inclure dans la feuille des réponses
# Juste pour tester
tuple_pairs_impairs(4532015112830465)
AW

[76]: ([6, 0, 8, 1, 5, 0, 3, 4], [5, 4, 3, 2, 1, 1, 2, 5])

2.3 Q7.
[77]: def cree_dico(code):
KH

t = tuple_pairs_impairs(code)
return {'pair': t[0], 'impair': t[1]}

[78]: # A ne pas inclure dans la feuille des réponses


# Juste pour tester
L

cree_dico(4532015112830465)
.E

[78]: {'pair': [6, 0, 8, 1, 5, 0, 3, 4], 'impair': [5, 4, 3, 2, 1, 1, 2, 5]}

2.4 Q8.
PR

[79]: def traitement_nb_pairs(dico):


for i in range(len(dico['pair'])):
x = dico['pair'][i] * 2
if x < 9:
dico['pair'][i] = x

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)


else:
dico['pair'][i] = (x % 10) + (x // 10)
return dico

ED
[80]: # A ne pas inclure dans la feuille des réponses
# Juste pour tester
traitement_nb_pairs({'pair': [6, 0, 8, 1, 5, 0, 3, 4], 'impair': [5, 4, 3, 2,␣
↪1, 1, 2, 5]})

M
[80]: {'pair': [3, 0, 7, 2, 1, 0, 6, 8], 'impair': [5, 4, 3, 2, 1, 1, 2, 5]}

H
2.5 Q9.
[81]: def test_num_carte_credit(code):

IA
dico = cree_dico(code)
dico = traitement_nb_pairs(dico)
x = sum(dico['pair']) + sum(dico['impair'])
return (x % 10) == 0

N
[82]: # A ne pas inclure dans la feuille des réponses
# Juste pour tester
LA
test_num_carte_credit(4532015112830465)

[82]: True
AW

3 Partie III - Tests de QR code


3.1 Q10.
3.1.1 Methode 1
KH

[83]: def init(n):


M = []
for i in range(n):
M.append([0] * n)
return M
L

[84]: # A ne pas inclure dans la feuille des réponses


.E

# Juste pour tester


init(6)

[84]: [[0, 0, 0, 0, 0, 0],


[0, 0, 0, 0, 0, 0],
PR

[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]]

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)


3.1.2 Methode 2
[85]: def init(n):
return [[0] * n for i in range(n)]

ED
[86]: # A ne pas inclure dans la feuille des réponses
# Juste pour tester
init(4)

[86]: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

M
3.2 Q11.

H
[87]: def charge_valeur(QR): # QR est de type image
QR_new = init(21)

IA
for x in range(21):
for y in range(21):
QR_new[x][y] = QR.getpixel(x * 20, y * 20)
return QR_new

N
3.3 Q12.
LA
[88]: def cree_bloc():
bloc = init(7)
for i in range(1, 6):
AW

bloc[1][i] = 1
bloc[-2][i] = 1
bloc[i][1] = 1
bloc[i][-2] = 1
return bloc
KH

[89]: # A ne pas inclure dans la feuille des réponses


# Juste pour tester
cree_bloc()

[89]: [[0, 0, 0, 0, 0, 0, 0],


[0, 1, 1, 1, 1, 1, 0],
L

[0, 1, 0, 0, 0, 1, 0],
.E

[0, 1, 0, 0, 0, 1, 0],
[0, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 0, 0]]
PR

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)


3.4 Q13.
[90]: def test_bloc(x, y, QR): # QR est une matrice
bloc = init(7)
for i in range(7):

ED
for j in range(7):
bloc[i][j] = QR[x + i][y + j]
return bloc == test_bloc()

M
3.5 Q14.
[91]: def test_QRcode(QR): # QR est une matrice

H
return test_bloc(0, 0, QR) and test_bloc(0, 14, QR) and test_bloc(14, 0, QR)

IA
3.6 Q15.
[92]: def tourHoraire(x, y, QR): # QR est une matrice
n = 20

N
C = QR[x][y]
QR[x][y] = QR[n - y][x]
QR[n - y][x] = QR[n - x][n - y]
LA
QR[n - x][n - y] = QR[y][n - x]
QR[y][n - x] = C

3.7 Q16.
AW

[93]: def rotationHoraire(QR): # QR est une matrice


limite_x = 21 // 2
limite_y = 21 // 2 + 1
for i in range(limite_x):
KH

for j in range(limite_y):
tourHoraire(i, j, QR)

3.8 Q17.
[94]: def QRcode_posi(QR): # QR est une matrice
L

while not test_QRcode(QR):


rotationHoraire(QR)
.E
PR

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)


4 Partie IV - Gestion réseau
4.1 Q18.

ED
M
H
IA
N
LA
4.2 Q19.
La valeur du plus cours chemin entre A et F est 4.
AW

Selon le tableau M+: - Le precedant de F est E ; - Le precedant de E est D ; - Le precedent de D


est A.
Le chemin est donc A - D - E - F.

5 Partie V - Requêtes SQL


KH

5.1 Q20.
Puisque les numéros des cartes bancaires sont composés de 16 chiffres, on doit mettre 16 ‘#’ dans
format.
L

SELECT FORMAT(num_CB, ‘#_###_###_###_###_###’) AS num_carte_credit


FROM clients
.E

WHERE num_secu LIKE ‘2%’;

5.2 Q21.
PR

5.2.1 Méthode 1
SELECT DISTINCT nom, prenom
FROM clients c, ventes v
WHERE c.id = v.num_client

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)


5.2.2 Méthode 2
SELECT DISTINCT nom, prenom
FROM clients c

ED
JOIN ventes v
ON c.id = v.num_client

5.2.3 Méthode 3

M
SELECT DISTINCT nom, prenom
FROM clients

H
WHERE id in (SELECT num_client FROM ventes)

IA
5.3 Q23.
5.3.1 Méthode 1
SELECT num_CB, p.id

N
FROM clients c, produits p, ventes v
LA
WHERE c.id = v.num_client AND v.ref_produit = p.ref_produit

5.3.2 Méthode 2
AW

SELECT num_CB, p.id


FROM clients c
JOIN ventes v ON c.id = v.num_client
JOIN produits p ON v.ref_produit = p.ref_produit
KH
L
.E
PR

10

PR. EL KHAWLANI AHMED : 07 77 30 58 80 (WHATSAPP)

Vous aimerez peut-être aussi