Exercice 3 - Récursivité · Bac Numérique et Sciences Informatiques Centres étrangers (Afrique) 2026 (jour 1)
Thème : Récursivité · Tiré du sujet Jour 1 (2026)
Énoncé
Cet exercice porte sur la programmation orientée objet, la récursivité et les bases de données relationnelles.
Le champ de mines du démineur est représenté par une grille.
Chaque case de cette grille peut cacher une mine, ou être vide.
Le déroulement du jeu:
Si on choisit sur une case libre qui a au moins une mine dans une case voisine, un chiffre apparaît. Ce chiffre indique combien de mines se trouvent dans les cases voisines. Une case a au maximum 8 cases voisines.
Si on choisit une case vide dont toutes les cases voisines sont vides, la case s'affiche vide. Ensuite, le jeu dévoile automatiquement toutes les cases vides voisines, et ainsi de suite, jusqu'à ce qu'il rencontre des cases avec des chiffres.
La fin de la partie: Si on choisit sur une mine, la partie est perdue. Si on découvre toutes les cases libres, la partie est gagnée.
La figure 1 représente une grille du jeu du démineur de 6 lignes: hauteur et de 7 colonnes: largeur, où l'on a dévoilé la position des 8 mines de la grille représentées par l'entier relatif -1 ainsi que les informations utiles au joueur qui lui seront dévoilées au fur et à mesure du jeu.
La case de coordonnées (1, 2) contient le chiffre 3 car elle a trois de ses cases voisines qui contiennent une mine: les cases (0, 1), (2, 2) et (1, 3).
La case (3, 6) contient le chiffre 0 car aucune case qui lui est voisine ne contient de mine.
Partie C: L'interface utilisateur du jeu du démineur
Les parties précédentes ont permis la création d'une grille du démineur. L'utilisateur se verra afficher une grille où les informations de la grille ne seront pas apparentes. Le joueur fait le choix d'une case et en fonction de ce choix des cases seront découvertes.
Si la case contient une mine toutes les cases sont alors dévoilées.
Dans le cas contraire une ou plusieurs cases seront dévoilées.
Sur la figure 3 on peut lire:
sur la grille de gauche, les informations du démineur.
sur la grille au centre, le visuel présenté au joueur, aucune information n'est visible au départ du jeu.
sur la grille de droite, les informations révélées quand le joueur a choisi la case de coordonnées (0, 3).
On propose de modéliser la visibilité des cellules pour l'utilisateur de la façon suivante.
Une grille est utilisée pour connaître l'état de visibilité de l'information des cases.
False: L'information de la case n'est pas visible par l'utilisateur.
True: L'information de la case est visible à l'utilisateur.
Si on considère la figure 4, le constructeur de la classe Demineur initialisera l'attribut grille_visibilite avec [[False for _ in range(6)] for _ in range(6)].
8.
Écrire une méthode visibilite de la classe Demineur qui permettrait de mettre à jour l'attribut grille_visibilite en fonction du choix de l'utilisateur d'une case du démineur. On pourra utiliser la récursivité.

Corrigé
Corrigé proposé par AprenAI (non officiel)
8. Écrire une méthode visibilite de la classe Demineur qui permettrait de mettre à jour l'attribut grille_visibilite en fonction du choix de l'utilisateur d'une case du démineur. On pourra utiliser la récursivité.
Réponse : ```python def visibilite(self, lig, col): if self.grille[lig][col] == -1: for i in range(self.hauteur): for j in range(self.largeur): self.grille_visibilite[i][j] = True else: self.grille_visibilite[lig][col] = True if self.grille[lig][col] == 0: for di in (-1, 0, 1): for dj in (-1, 0, 1): ni, nj = lig + di, col + dj if 0 <= ni < self.hauteur and 0 <= nj < self.largeur: if not self.grille_visibilite[ni][nj]: self.visibilite(ni, nj) ```
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 1 - Partie C · Centres étrangers (Afrique) 2024 (jour 2) ›