Aperçu du sujet
Exercice 1 (6 points) Cet exercice porte sur les tableaux, les dictionnaires, les arbres binaires, la programmation en Python et la récursivité. Lors de la transmission de données, des erreurs peuvent se glisser. On se propose d’étudier des techniques permettant de minimiser les conséquences de telles erreurs. Partie A Pour
Exercice 1 (6 points) Cet exercice porte sur les tableaux, les dictionnaires, les arbres binaires, la programmation en Python et la récursivité. Lors de la transmission de données, des erreurs peuvent se glisser. On se propose d’étudier des techniques permettant de minimiser les conséquences de telles erreurs. Partie A Pour encoder un texte en binaire, on traduit chaque caractère en un octet, par exemple en utilisant le code ASCII. La table ASCII permet de traduire les caractères classiques en entiers compris entre 0 et 127, qui peuvent ensuite être écrits en binaire sur un octet, c’est-à-dire une suite de 8 bits valant chacun ou . 0 1 Dans la table ASCII, le code associé au caractère est 97. a 1. Donner l’écriture binaire de sur 8 bits. a Pour pouvoir corriger les erreurs durant les transmissions, on peut ajouter de la redondance dans les informations transmises, c’est-à-dire ajouter des moyens permettant de retrouver le message initial même si un ou plusieurs bits ont été modifiés. Une manière de le faire consiste à envoyer trois fois le même message. Ainsi, même si l’une des copies se retrouve modifiée, on peut retrouver le message tant que la majorité des copies a été transmise sans erreur. La fonction suivante implémente cette stratégie. Cette fonction prend en replique paramètre une liste composée de et de . tab 0 1 1 def replique(tab): 2 n = len(tab) 3 return [tab[i // 3] for i in range(3 * n)] 2. Donner le résultat de l’appel . replique([0,0,1,0,1]) 3. Recopier et compléter les lignes 14 et 16 du code de la fonction , donné ci-après, qui prend en paramètres une liste et nb_occurrences tab un entier et qui renvoie un dictionnaire qui associe, à chaque élément son i nombre d’occurrences. 25-NSIJ2AN1 Page : 2 / 21 1 def nb_occurrences(tab, i): 2 ''' 3 Renvoie un dictionnaire qui associe, à chaque élément 4 apparaissant dans tab entre la position 3i 5 incluse et la position 3(i + 1) exclue, 6 son nombre d'occurrences. 7 >>> nb_occurrences([0, 0, 1, 1, 0, 1, 0, 1, 1], 1) 8 {1: 2, 0: 1} 9 ''' 10 nb_occ = {} 11 for j in range(3 * i, 3 * (i + 1)): 12 x = tab[j] 13 if x in nb_occ: 14 ... 15 else: 16 ... 17 return nb_occ 4. Recopier et compléter à partir de la ligne 10 (le nombre