Aller au contenu

Index des sujets 2023

Corrigé sujet 35 - Année : 2023

Sujet 35 - 2023

Exercice 1

1
2
3
4
5
6
7
8
def xor(a,b):
    resultat = []
    for i in range(len(a)):
        if a[i]==b[i]:
            resultat.append(0)
        else:
            resultat.append(1)
    return resultat

Commentaire

On peut aussi utiliser une définition de listes par compréhension.

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Carre:
    def __init__(self, liste, n):
        self.ordre = n
        self.tableau = [[liste[i + j * n] for i in range(n)] for j in range(n)]

    def affiche(self):
        '''Affiche un carré'''
        for i in range(self.ordre):
            print(self.tableau[i])

    def somme_ligne(self, i):
        '''Calcule la somme des valeurs de la ligne i'''
        somme = 0
        for j in range(self.ordre):
            somme = somme + self.tableau[i][j]
        return somme

    def somme_col(self, j):
        '''Calcule la somme des valeurs de la colonne j'''
        somme = 0
        for i in range(self.ordre):
            somme = somme + self.tableau[i][j]
        return somme

    def est_semimagique(self):
        s = self.somme_ligne(0)
        #test de la somme de chaque ligne
        for i in range(1,self.ordre): #(1)
            if self.somme_ligne(i) != s: #(2)
                return False
        #test de la somme de chaque colonne
        for j in range(1,self.ordre): #(3)
            if self.somme_col(j) != s:
                return False
        return True
  1. Par la peine de tester la ligne d'indice 0, elle a servi à calculer la somme de référence s (ligne 21), on commence donc à 1.
  2. On renvoie False dès que la somme de la ligne n'est pas égale à la somme de la première ligne
  3. Traitement identique pour les colonnes