Exercice 3 - Vérification d'une solution · Bac Numérique et Sciences Informatiques Nouvelle-Calédonie 2025 (jour 1)

Thème : Coût des algorithmes, tris et recherche · Tiré du sujet Jour 1 (2025)

Énoncé

Partie D: Retour au jeu « Objectif Somme »

Exercice 3 (8 points)

Cet exercice porte sur l'algorithmique, la représentation binaire des entiers positifs et la programmation en langage Python.

Partie A: Modélisation du problème

On s'intéresse à un jeu de calcul mental appelé Objectif somme. Le jeu se joue sur un plateau de 5x5 cases. Chaque case contient un chiffre non nul de 1 à 9. On dispose également de nombres cibles en ligne et en colonne. Le but est de trouver les cases du tableau à vider afin d'atteindre les cibles en ligne et en colonne:

sur chaque ligne, la somme des cases restantes doit valoir la cible de cette ligne;

sur chaque colonne, la somme des cases restantes doit valoir la cible de cette colonne.

De plus, il faut conserver au moins un chiffre par ligne.

Par exemple, la figure suivante représente un plateau de jeu et une solution:

Les lignes du plateau seront nommées de L0 à L4 et les colonnes de C0 à C4.

Ainsi l'exemple de la figure 1, la ligne L1 fait référence aux valeurs 8,6,3,5,1 du plateau et la colonne C3 fait référence aux valeurs 3,5,2,8,8 du plateau.

Dans la suite, on suppose que les cibles sont nécessairement des entiers entre 1 et 45.

Dans la suite on appelle plateau une liste de 5 listes de 5 entiers. Chacune des listes de 5 entiers représente une ligne. Les entiers de ces listes sont compris entre 0 et 9, 0 représente une case vide. Pour représenter un jeu, un plateau doit être accompagné de deux listes de 5 entiers: la liste des cibles de lignes, la liste des cibles des colonnes.

Voici une représentation en langage Python de la figure 1:

plateau_ex = [[7, 9, 2, 3, 2],

[8, 6, 3, 5, 1],

[7, 7, 3, 2, 7],

[6, 4, 5, 8, 2],

[8, 6, 8, 8, 4]]

ciblesLignes_ex = [13, 9, 12, 6, 4]

ciblesColonnes_ex = [15, 13, 5, 2, 9]

Finalement, on vérifie qu'un plateau proposé comme solution respecte bien les contraintes sur les lignes et les colonnes.

16. Écrire une fonction teste_solution qui prend comme paramètres un plateau, la liste des cibles des lignes, la liste des cibles des colonnes, et qui retourne True si les valeurs des cases restantes du plateau vérifient bien les cibles (sur chaque ligne et sur chaque colonne), et False sinon.

def teste_solution(plateau, ciblesLignes, ciblesColonnes):

Énoncé: Exercice 3 - Vérification d'une solution · Bac Numérique et Sciences Informatiques Nouvelle-Calédonie 2025 (jour 1)

Corrigé

Corrigé proposé par AprenAI (non officiel)

16. Écrire une fonction teste_solution qui prend comme paramètres un plateau, la liste des cibles des lignes, la liste des cibles des colonnes, et qui retourne True si les valeurs des cases restantes du plateau vérifient bien les cibles (sur chaque ligne et sur chaque colonne), et False sinon.

Réponse : ```python for i in range(5): if sum(plateau[i]) != ciblesLignes[i]: return False for j in range(5): if sum(plateau[i][j] for i in range(5)) != ciblesColonnes[j]: return False return True ``` ```python for i in range(5): if sum(extraireLigne(plateau, i)) != ciblesLignes[i]: return False if sum(extraireColonne(plateau, i)) != ciblesColonnes[i]: return False return True ```

L’explication pas à pas, faite avec l’IA, est réservée aux membres Premium. Premium

Résous-le ici : correction automatique, indices et corrigé détaillé.

Exercice 2 - Coût des algorithmes · Nouvelle-Calédonie 2023 (jour 2) ›

Plus d’exercices de Coût des algorithmes, tris et recherche