Exercice 5 · Bac Numérique et Sciences Informatiques Asie 2022 (jour 1)
Thème : Binaire, entiers et opérateurs booléens · Tiré du sujet Jour 1 (2022)
Énoncé
Exercice 5 (4 points)
Thème abordé: programmation Python.
On considère un jeu de plateforme où un personnage se déplace dans un espace à deux dimensions. Pour cela, on autorise seulement deux déplacements élémentaires: de la gauche vers la droite ou du bas vers le haut. La longueur d'un déplacement correspond au nombre de déplacements élémentaires qui le constituent. Afin de représenter ces déplacements, on se place dans un repère où les coordonnées sont des nombres entiers positifs. Le personnage au début du jeu est situé à l'origine du repère de coordonnées et il souhaite se rendre au point de coordonnées .
Les lignes de code de cet exercice seront écrites en langage Python.
On décide de coder les déplacements élémentaires de la manière suivante:
le caractère '0' représente un déplacement élémentaire vers la droite,
le caractère '1' représente un déplacement élémentaire vers le haut.
Un déplacement de longueur sera donc une chaîne de caractères composée de caractères '0' ou '1'. Par exemple, un déplacement possible de à est '00011001' et sa longueur est .
1.
On considère la fonction mystere ci-dessous:
def mystere(dep):
x = 0
y = 0
for c in dep:
if c == '0':
x = x + 1
else:
y = y + 1
return [x, y]
a.
b.
2.
Écrire une fonction accessible(dep, arrivee) de sorte qu'elle renvoie True si le déplacement dep se termine sur le point arrivee et False dans le cas contraire. Les types des paramètres sont donc:
dep: une chaîne de caractères
arrivee: une liste de deux entiers
Par exemple: accessible('00110001', [5,3]) renvoie True alors que accessible('01010111', [5,3]) renvoie False.
3.
On rappelle que l'expression str(randint(0,1)) utilisant la fonction randint de la bibliothèque random renvoie aléatoirement un caractère égal à '0' ou '1'.
On décide de trouver un déplacement de longueur 8 qui permet d'atteindre le point arrivee. Pour cela, on se propose de créer de manière aléatoire un déplacement de longueur 8, de tester si le point arrivee est accessible pour ce déplacement et de recommencer tant que ce n'est pas le cas.
Recopier et compléter la fonction chemin ci-dessous qui prend en paramètre les coordonnées du point arrivee et qui renvoie un déplacement de 8 pas qui permet d'atteindre le point arrivee.
from random import randint
def chemin(arrivee):
deplacement = '00000000'
while.....:
.....
for k in range(8):
pas = str(randint(0,1))
..... = deplacement +.....
return deplacement
4.
La fonction int(ch, 2) renvoie l'écriture décimale d'un nombre donné en binaire sous forme d'une chaîne de caractères ch. Par exemple int('00000101', 2) renvoie 5. Quelle est la plus grande valeur possible renvoyée par int(chem, 2) si chem est un déplacement de longueur 8 permettant d'atteindre le point de coordonnées ?

Corrigé
Corrigé proposé par AprenAI (non officiel)
1.a. Que renvoie mystere('01110111') ?
Réponse : [2, 6]
1.b. De manière plus générale, que renvoie la fonction mystere pour une chaîne représentant un déplacement donné ?
Réponse : Les coordonnées du point d'arrivée [x, y] après avoir effectué les déplacements décrits par la chaîne.
2. Écrire une fonction accessible(dep, arrivee)
Réponse : ```python def accessible(dep, arrivee): return mystere(dep) == arrivee ```
Les réponses des 3 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 3 - Partie C : Intégrité des données et… · Asie 2025 (jour 2)