Exercice 1 - Programmation orientée objet · Bac Numérique et Sciences Informatiques Asie 2026 (jour 2)

Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Jour 2 (2026)

Énoncé

Exercice 1 (6 points)

Cet exercice porte sur la programmation orientée objet et les structures linéaires.

Le taquin est un casse-tête qui se joue avec une grille de 9 cases: une case vide et 8 cases numérotées de 1 à 8.

Le jeu démarre en position gagnante représentée comme sur la figure 1.

Les cases situées directement à gauche ou à droite ou en-dessous ou au-dessus de la case vide peuvent permuter avec elle. Afin de jouer au jeu taquin, on mélange la grille et l'objectif est de retrouver la position gagnante. On donne ci-dessous un exemple de grille mélangée.

Par exemple, à partir de la situation de la figure 2, seules les cases numérotées 5, 1 ou 7 peuvent permuter leur position avec celle de la case vide.

On représente la grille d'un taquin à l'aide d'un tableau (type list en Python) dont les éléments sont les numéros des cases de la grille de gauche à droite et de haut en bas, la case vide portant le numéro 0. Le tableau ci-dessous contient les numéros de cases de la grille de la figure 2:

tab = [5, 3, 8, 0, 1, 2, 7, 6, 4] On souhaite utiliser une classe Taquin pour modéliser le jeu du taquin. On initialise cette classe de la façon suivante:

class Taquin:

def __init__ (self):

self.tab = [0, 1, 2, 3, 4, 5, 6, 7, 8]

1.

Donner l'indice de l'élément de tab correspondant à la case portant le numéro 2 de la grille.

Dessiner la grille du taquin représentée par tab après l'exécution des instructions ci-dessous:

1 tab[3] = tab[4]

2 tab[4] = 0

3.

Écrire une expression booléenne qui est évaluée à True si le taquin représenté par le tableau tab est en position gagnante et False sinon.

4.

On souhaite utiliser une classe Taquin pour modéliser le jeu du taquin. On initialise cette classe de la façon suivante:

class Taquin:

def __init__ (self):

self.tab = [0, 1, 2, 3, 4, 5, 6, 7, 8]

Écrire la méthode est_gagnant de la classe Taquin qui renvoie True si l'instance de Taquin est en position gagnante et False sinon.

def est_gagnant(self):

5.

Voici le code partiel de la méthode indice qui renvoie l'indice de l'élément de l'attribut tab qui a pour valeur numero:

1 def indice(self, numero):

2 assert type(numero) == int, 'numero doit être entier'

3..., 'numero de case non valide'

4 i = 0

5 while...:

6 i = i + 1

7 return i

Recopier et compléter les lignes 3 et 5 de la méthode indice.

6.

On admet que la classe Taquin dispose d'une méthode est_possible qui prend en paramètre un entier numero, compris entre 1 et 8 inclus, et qui renvoie True s'il est possible de déplacer la case portant ce numéro et False sinon.

Recopier et compléter les lignes 2, 5 et 6 de la méthode jouer ci-après qui, s'il est possible de déplacer le numéro passé en paramètre, intervertit la case portant ce numéro et la case vide.

1 def jouer(self, numero):

2 if...:

3 i = self.indice(numero)

4 j = self.indice(0)

5... = numero

6... =...

7.

On admet que la classe Taquin possède une méthode coups_possibles qui renvoie un tableau dont les éléments sont les numéros des cases déplaçables.

On importe le module random et on rappelle que, si tab est du type list, l'instruction random.choice(tab) renvoie au hasard un élément de tab.

Pour mélanger n fois le taquin, on choisit au hasard successivement n fois un numéro parmi les coups possibles. On décide de ne pas jouer deux fois de suite le même numéro.

Recopier et compléter les lignes 4, 5, 6 et 9 de la méthode melanger donnée ci-dessous.

1 def melanger(self, n):

2 precedent = None

3 i = 0

4 while...:

5 possibilites =...

6 choix =...

7 if choix != precedent:

8 self.jouer(choix)

9 precedent =...

10 i = i + 1

Énoncé: Exercice 1 - Programmation orientée objet · Bac Numérique et Sciences Informatiques Asie 2026 (jour 2)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. Donner l'indice de l'élément de tab correspondant à la case portant le numéro 2 de la grille.

Réponse : 5

1. Dessiner la grille du taquin représentée par tab après l'exécution des instructions ci-dessous : 1 tab[3] = tab[4] 2 tab[4] = 0

Réponse : Grille 3×3 avec les cases suivantes : - Première ligne : 5, 3, 8 - Deuxième ligne : 1, case vide, 2 - Troisième ligne : 7, 6, 4

3. Écrire une expression booléenne qui est évaluée à True si le taquin représenté par le tableau tab est en position gagnante et False sinon.

Réponse : tab == [0, 1, 2, 3, 4, 5, 6, 7, 8] / tab == list(range(9))

4. Écrire la méthode est_gagnant de la classe Taquin qui renvoie True si l'instance de Taquin est en position gagnante et False sinon.

Réponse : ```python return self.tab == [0, 1, 2, 3, 4, 5, 6, 7, 8] ```

5. Recopier et compléter la ligne 3 de la méthode indice.

Réponse : ```python assert 0 <= numero <= 8 ```

5. Recopier et compléter la ligne 5 de la méthode indice.

Réponse : ```python while self.tab[i] != numero: ```

6. Recopier et compléter la ligne 2 de la méthode jouer.

Réponse : ```python if self.est_possible(numero): ```

Les réponses des 6 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium

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

‹ Exercice 2 - Programmation orientée objet · Asie 2026 (jour 1) · Exercice 1 · Asie 2025 (jour 2) ›

Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes