Exercices listes - piles - files
Exercice 1 : ImplĂ©mentation d'une file avec deux pilesâïž
Comment créer une file avec 2 piles ?
L'idée est la suivante : on crée une pile d'entrée et une pile de sortie.
- quand on veut enfiler, on empile sur la pile d'entrée.
- quand on veut défiler, on dépile sur la pile de sortie.
- si celle-ci est vide, on dépile entiÚrement la pile d'entrée dans la pile de sortie.
La classe Pile
Il est impératif de comprendre qu'on peut choisir n'importe quelle implémentation de la classe Pile. Il suffit de connaßtre l'interface, Comme on ne va se servir que de cette interface, les mécanismes n'ont aucune influence sur le code de la classe File que nous ferons ensuite.
Par exemple, on choisit celle avec la liste chaßnée (voir les compléments : Compléments
Exécuter absolument le code ci-dessous pour pouvoir continuer
Une file avec deux piles
Compléter le code suivant
# Tests
(insensible Ă la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Solution pour la méthode enfile
def enfile(self, x):
self.entree.empile(x)
Solution totale
class File:
def __init__(self):
self.entree = Pile()
self.sortie = Pile()
def est_vide(self):
return self.entree.est_vide() and self.sortie.est_vide()
def enfile(self, x):
self.entree.empile(x)
def defile(self):
if self.est_vide():
print("File vide !")
return None
if self.sortie.est_vide():
while not self.entree.est_vide():
self.sortie.empile(self.entree.depile())
return self.sortie.depile()
Exercice 2âïž
Exercice 5 du sujet Ătrangers 1 - 2021 (sujet complet en pdf)
Notion abordée : structures de données : les piles.
Dans cet exercice, on considÚre une pile d'entiers positifs. On suppose que les quatre fonctions suivantes ont été programmées préalablement en langage Python :
- empiler(P, e) : ajoute l'élément e sur la pile P ;
- depiler(P) : enlĂšve le sommet de la pile P et retourne la valeur de ce sommet ;
- est_vide(P) : retourne True si la pile est vide et False sinon ;
- creer_pile() : retourne une pile vide.
Dans cet exercice, seule l'utilisation de ces quatre fonctions sur la structure de données pile est autorisée.
Q1. Recopier le schéma ci-dessous et le compléter sur votre copie en exécutant les appels de fonctions donnés. On écrira ce que renvoie la fonction utilisée dans chaque cas, et on indiquera None si la fonction ne retourne aucune valeur.
Q2. On propose la fonction ci-dessous, qui prend en argument une pile P et renvoie un couple de piles :
def transforme(P) :
Q = creer_pile()
while not est_vide(P) :
v = depile(P)
empile(Q, v)
return (P,Q)
Q3. Ecrire une fonction en langage Python maximum(P)
recevant une pile P
comme argument et qui renvoie la valeur maximale de cette pile. On ne sâinterdit pas quâaprĂšs exĂ©cution de la fonction, la pile soit vide.
Q4. On souhaite connaĂźtre le nombre dâĂ©lĂ©ments dâune pile Ă lâaide de la fonction taille(P)
.
On s'interdit quâaprĂšs exĂ©cution de la fonction, la pile soit vide.
Correction de l'exercice 2
1 2 3 4 5 6 7 8 9 |
|
Avec le code ci-dessus, la pile p
est vide à la fin de l'exécution. Pour éviter cela, on peut par exemple créer une pile q
temporaire qui recevra les éléments de p
, avant de retransférer à la fin du programme les éléments de q
dans p
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Q4a. On va vider la pile p
dans une pile q
tout en comptant le nombre d'éléments dépilés dans une variable t
.
On redonne ensuite Ă p
son Ă©tat initial en vidant q
dans p
.
Q4b
1 2 3 4 5 6 7 8 9 10 11 |
|
Exercice 3âïž
Exercice 1 du sujet La RĂ©union J2 - 2022 (Sujet complet en pdf)
Cet exercice porte sur les structures de données (pile).
La notation polonaise inverse (NPI) permet d'Ă©crire des expressions de calculs numĂ©riques sans utiliser de parenthĂšse. Cette maniĂšre de prĂ©senter les calculs a Ă©tĂ© utilisĂ©e dans des calculatrices de bureau dĂšs la fin des annĂ©es 1960. La NPI est une forme dâĂ©criture dâexpressions algĂ©briques qui se distingue par la position relative que prennent les nombres et leurs opĂ©rations.
Par exemple :
Notation classique | Notation NPI |
---|---|
\(3+9\) | \(3 \qquad\) \(9 \qquad\) \(+\) |
\(8 \times (3+5)\) | \(8 \qquad\) \(3 \qquad\) \(5 \qquad\) \(+ \qquad\) \(\times\) |
\((17+5) \times 4\) | \(17 \qquad\) \(5 \qquad\) \(+ \qquad\) \(4 \qquad\) \(\times\) |
Lâexpression est lue et Ă©valuĂ©e de la gauche vers la droite en mettant Ă jour une pile.
- Les nombres sont empilĂ©s dans lâordre de la lecture.
- DĂšs la lecture dâun opĂ©rateur (+, -, Ă, /), les deux nombres au sommet de la pile sont dĂ©pilĂ©s et remplacĂ©s par le rĂ©sultat de lâopĂ©ration effectuĂ©e avec ces deux nombres. Ce rĂ©sultat est ensuite empilĂ© au sommet de la pile. A la fin de la lecture, la valeur au sommet est renvoyĂ©e.
Exemple : lâexpression qui correspond au calcul \(7 \times (3+25)\) sâĂ©value Ă 196 comme le montrent les Ă©tats successifs de la pile crĂ©Ă©e, nommĂ©e p :
- On empile la valeur 7.
- On empile la valeur 3.
- On empile la valeur 25.
- On remplace les deux nombres du sommet de la pile (25 et 3) par leur somme 28.
- On remplace les deux nombres du sommet de la pile (28 et 7) par leur produit 196.
1. En vous inspirant de lâexemple ci-dessus, dessiner le schĂ©ma descriptif de ce que donne lâĂ©valuation par la NPI de lâexpression : \(12 \qquad\) \(4 \qquad\) \(5 \qquad\) \(\times\) \(+\)
2. On dispose de la pile suivante nommée p1 :
On rappelle ci-dessous les primitives de la structure de pile (LIFO : Last In First out) :
Fonction | Description |
---|---|
pile_vide() |
Créé et renvoie une nouvelle pile vide |
empiler(p, e) |
Place lâĂ©lĂ©ment e au sommet de la pile p. |
depiler(p) |
Supprime et renvoie lâĂ©lĂ©ment se trouvant au sommet de p. |
est_vide(p) |
Renvoie un booléen indiquant si p est vide ou non. |
On dispose aussi de la fonction suivante, qui prend en paramĂštre une pile p :
def top(p):
x = depiler(p)
empiler(p, x)
return x
temp = top(p1)
:
a. Quelle valeur contient la variable temp aprÚs cette exécution ?
b. Représenter la pile p1 aprÚs cette exécution.
3. En utilisant uniquement les 4 primitives dâune pile, Ă©crire en langage Python la fonction addition(p)
qui prend en paramĂštre une pile p
d'au moins deux Ă©lĂ©ments et qui remplace les deux nombres du sommet dâune pile p
par leur somme.
Remarque : cette fonction ne renvoie rien, mais la pile p
est modifiée.
4. On considĂšre que lâon dispose Ă©galement dâune fonction multiplication(p)
qui remplace les deux nombres du sommet dâune pile p
par leur produit (on ne demande pas dâĂ©crire cette fonction).
Recopier et complĂ©ter, en nâutilisant que les primitives dâune pile et les deux fonctions addition
et multiplication
, la suite dâinstructions (ci-dessous) qui rĂ©alise le calcul \((3+5) \times 7\) dont lâĂ©criture en NPI est : \(3 \qquad\) \(5 \qquad\) \(+ \qquad\) \(7 \qquad\) \(\times\)
p = pile_vide()
empiler(p, 3)
...
Correction de l'exercice 3
La variable temp
contient la valeur 25.
p1
est identique, elle contient toujours les valeurs 25, 3 et 7.
1 2 3 4 |
|
1 2 3 4 5 6 |
|
Exercice 4âïž
Exercice 2 du sujet MĂ©tropole Candidats Libres J1 - 2021 Sujet complet en pdf
Cet exercice traite des notions de piles et de programmation orientée objet.
On crée une classe Pile qui modélise la structure d'une pile d'entiers.
Le constructeur de la classe initialise une pile vide.
La dĂ©finition de cette classe sans lâimplĂ©mentation de ses mĂ©thodes est donnĂ©e ci-dessous.
class Pile:
def __init__(self):
"""Initialise la pile comme une pile vide."""
def est_vide(self):
"""Renvoie True si la liste est vide, False sinon."""
def empiler(self, e):
"""Ajoute l'élément e sur le sommet de la pile, ne renvoie rien."""
def depiler(self):
"""Retire lâĂ©lĂ©ment au sommet de la pile et le renvoie."""
def nb_elements(self):
"""Renvoie le nombre d'éléments de la pile. """
def afficher(self):
"""Affiche de gauche à droite les éléments de la pile, du fond de la pile vers son sommet.
Le sommet est alors lâĂ©lĂ©ment affichĂ© le plus Ă droite. Les Ă©lĂ©ments sont sĂ©parĂ©s par une virgule.
Si la pile est vide la méthode affiche « pile vide »."""
- a. Ăcrire une suite dâinstructions permettant de crĂ©er une instance de la classe Pile affectĂ©e Ă une variable pile1 contenant les Ă©lĂ©ments 7, 5 et 2 insĂ©rĂ©s dans cet ordre.
Ainsi, Ă lâissue de ces instructions, lâinstructionpile1.afficher()
produit lâaffichage :7, 5, 2
.
b. Donner lâaffichage produit aprĂšs lâexĂ©cution des instructions suivantes.
element1 = pile1.depiler()
pile1.empiler(5)
pile1.empiler(element1)
pile1.afficher()
- On donne la fonction mystere suivante :
def mystere(pile, element):
pile2 = Pile()
nb_elements = pile.nb_elements()
for i in range(nb_elements):
elem = pile.depiler()
pile2.empiler(elem)
if elem == element:
return pile2
return pile2
-
Cas n°1
>>>pile.afficher() 7, 5, 2, 3 >>>mystere(pile, 2).afficher()
-
Cas n°2
>>>pile.afficher() 7, 5, 2, 3 >>>mystere(pile, 9).afficher()
-
Cas n°3
>>>pile.afficher() 7, 5, 2, 3 >>>mystere(pile, 3).afficher()
-
Cas n°4
>>>pile.est_vide() True >>>mystere(pile, 3).afficher()
b. Expliquer ce que permet dâobtenir la fonction mystere
.
- Ăcrire une fonction
etendre(pile1, pile2)
qui prend en arguments deux objetsPile
appeléspile1
etpile2
et qui modifiepile1
en lui ajoutant les éléments depile2
rangés dans l'ordre inverse. Cette fonction ne renvoie rien.
On donne ci-dessous les résultats attendus pour certaines instructions.
>>>pile1.afficher()
7, 5, 2, 3
>>>pile2.afficher()
1, 3, 4
>>>etendre(pile1, pile2)
>>>pile1.afficher()
7, 5, 2, 3, 4, 3, 1
>>>pile2.est_vide()
True
supprime_toutes_occurences(pile, element)
qui prend en arguments un objet Pile
appelé pile
et un élément element
et supprime tous les éléments element
de pile
.On donne ci-dessous les résultats attendus pour certaines instructions.
>>>pile.afficher()
7, 5, 2, 3, 5
>>>supprime_toutes_occurences (pile, 5)
>>>pile.afficher()
7, 2, 3
Correction de l'exercice 4
1 2 3 4 |
|
L'affichage produit est 7, 5, 5, 2
.
- Cas n°1 :
3, 2
- Cas n°2 :
3, 2, 5, 7
- Cas n°3 :
3
- Cas n°4 :
«pile vide»
La fonction mystere
permet d'obtenir la pile retournée jusqu'à un élément particulier (s'il existe).
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 |
|
Exercice 5âïž
Exercice 5 du sujet Amérique du Nord J1 - 2021 (Sujet complet en pdf)
Cet exercice porte sur la notion de pile, de ïŹle et sur la programmation de base en Python.
Les interfaces des structures de données abstraites Pile et File sont proposées ci-dessous. On utilisera uniquement les fonctions ci-dessous :
Les interfaces des structures de données abstraites Pile et File sont proposées ci-dessous. On utilisera uniquement les fonctions ci-dessous :
Structure de données abstraite : Pile
Utilise : ĂlĂ©ment, BoolĂ©en
Opérations :
creer_pile_vide : â
\(\rightarrow\)Pile
đcreer_pile_vide()
renvoie une pile videest_vide : Pile
\(\rightarrow\) Booléen
đest_vide(pile)
renvoieTrue
sipile
est vide,False
sinonempiler : Pile, ĂlĂ©ment
\(\rightarrow\)â
đempiler(pile, element)
ajouteelement
Ă la pilepile
depiler : Pile
\(\rightarrow\) ĂlĂ©ment
đdepiler(pile)
renvoie lâĂ©lĂ©ment au sommet de lapile
en le retirant de lapile
Structure de données abstraite : File
Utilise : ĂlĂ©ment, BoolĂ©en
Opérations :
creer_file_vide : â
\(\rightarrow\)File
đcreer_file_vide()
renvoie une file videest_vide : File
\(\rightarrow\) Booléen
đest_vide(file)
renvoieTrue
sifile
est vide,False
sinonemfiler : File, ĂlĂ©ment
\(\rightarrow\)â
đemfiler(file, element)
ajouteelement
Ă la filefile
defiler : File
\(\rightarrow\) ĂlĂ©ment
đdepiler(file)
renvoie lâĂ©lĂ©ment au sommet de lafile
en le retirant de la filefile
1.
a) On considĂšre la file F
suivante :
enfilement \(\rightarrow \fbox{"rouge" "vert" "jaune" "rouge" "jaune"} \rightarrow\) défilement
Quel sera le contenu de la pile P
et de la file F
aprĂšs lâexĂ©cution du programme Python suivant :
đ Script Python | |
---|---|
1 2 3 |
|
b) CrĂ©er une fonction taille_ïŹle
qui prend en paramĂštre une ïŹle F
non vide et qui renvoie le nombre dâĂ©lĂ©ments quâelle contient. AprĂšs appel de cette fonction la ïŹle F
doit avoir retrouvĂ© son Ă©tat dâorigine.
1 2 3 |
|
2. Ăcrire une fonction former_pile
qui prend en paramĂštre une ïŹle F
et qui renvoie une pile P
contenant les mĂȘmes Ă©lĂ©ments que la ïŹle.
Le premier Ă©lĂ©ment sorti de la ïŹle devra se trouver au sommet de la pile ; le deuxiĂšme Ă©lĂ©ment sorti de la ïŹle devra se trouver juste en-dessous du sommet, etc.
Exemple : si F
= \(\fbox{"rouge" "vert" "jaune" "rouge" "jaune"}\)
alors lâappel former_pile(F)
va renvoyer la pile P
ci-dessous :
| "jaune" |
| "rouge" |
| "jaune" |
| "vert" |
| "rouge" |
_________
nb_elements
qui prend en paramĂštres une ïŹle F
et un élément elt
et qui renvoie le nombre de fois oĂč elt
est prĂ©sent dans la ïŹle F
.AprĂšs appel de cette fonction la ïŹle
F
doit avoir retrouvĂ© son Ă©tat dâorigine.
4. Ăcrire une fonction verifier_contenu
qui prend en paramĂštres une ïŹle F
et trois entiers : nb_rouge
, nb_vert
et nb_jaune
.
Cette fonction renvoie le booléen True
si "rouge" apparaĂźt au plus nb_rouge
fois dans la ïŹle F
, "vert" apparaĂźt au plus nb_vert
fois dans la ïŹle F
et "jaune" apparaĂźt au plus nb_jaune
fois dans la ïŹle F
. Elle renvoie False
sinon. On pourra utiliser les fonctions précédentes.
Correction de l'exercice 5
Le contenu de la pile P sera
| "rouge" |
| "vert" |
| "jaune" |
| "rouge" |
| "jaune" |
_________
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 |
|
Exercice 6âïž
Exercice 2 du sujet Centres Ătrangers J1 - 2022 (Sujet complet en pdf)
Cet exercice porte sur les structures de données (files et la programmation objet en langage python)
Un supermarché met en place un systÚme de passage automatique en caisse.
Un client scanne les articles Ă lâaide dâun scanner de code-barres au fur et Ă mesure quâil les ajoute dans son panier.
Les articles sâenregistrent alors dans une structure de donnĂ©es.
La structure de données utilisée est une file définie par la classe Panier, avec les primitives habituelles sur la structure de file.
Pour faciliter la lecture, le code de la classe Panier nâest pas Ă©crit.
class Panier():
def __init__(self):
"""Initialise la file comme une file vide."""
def est_vide(self):
"""Renvoie True si la file est vide, False sinon."""
def enfiler(self, e):
"""Ajoute l'élément e en derniÚre position de la file, ne renvoie rien."""
def defiler(self):
"""Retire le premier élément de la file et le renvoie."""
Le panier dâun client sera reprĂ©sentĂ© par une file contenant les articles scannĂ©s. Les articles sont reprĂ©sentĂ©s par des tuples (code_barre, designation, prix, horaire_scan)
oĂč
code_barre
est un nombre entier identifiant lâarticle ;designation
est une chaine de caractĂšres qui pourra ĂȘtre affichĂ©e sur le ticket de caisse ;prix
est un nombre dĂ©cimal donnant le prix dâune unitĂ© de cet article ;horaire_scan
est un nombre entier de secondes permettant de connaitre lâheure oĂč lâarticle a Ă©tĂ© scannĂ©.
1. On souhaite ajouter un article dont le tuple est le suivant
(31002, "café noir", 1.50, 50525)
.
Ecrire le code utilisant une des quatre mĂ©thodes ci-dessus permettant dâajouter lâarticle Ă lâobjet de classe Panier
appelé panier1
.
2. On souhaite définir une méthode remplir(panier_temp)
dans la classe Panier permettant de remplir la file avec tout le contenu dâun autre panier panier_temp
qui est un objet de type Panier
.
Recopier et compléter le code de la méthode remplir
en remplaçant chaque ... par la primitive de file qui convient.
def remplir(self, panier_temp):
while not panier_temp. ...:
article = panier_temp. ...
self ... (article)
3. Pour que le client puisse connaitre à tout moment le montant de son panier, on souhaite ajouter une méthode prix_total()
Ă la classe Panier
qui renvoie la somme des prix de tous les articles présents dans le panier.
Ecrire le code de la méthode prix_total
. Attention, aprĂšs lâappel de cette mĂ©thode, le panier devra toujours contenir ses articles.
4. Le magasin souhaite connaitre pour chaque client la durée des achats. Cette durée sera obtenue en faisant la différence entre le champ horaire_scan
du dernier article scanné et le champ horaire_scan
du premier article scannĂ© dans le panier du client. Un panier vide renverra une durĂ©e Ă©gale Ă zĂ©ro. On pourra accepter que le panier soit vide aprĂšs lâappel de cette mĂ©thode.
Ecrire une méthode duree_courses
de la classe Panier
qui renvoie cette durée.
Correction de l'exercice 6
Il faut Ă©crire :
panier_1.enfiler((31002, "café noir", 1.50, 50525))
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 |
|
Exercice 7âïž
Exercice 3 du sujet Centres Etrangers J1 - 2023 (Sujet complet en pdf)
Cet exercice porte sur les structures de Files
Simon est un jeu de société électronique de forme circulaire comportant quatre grosses touches de couleurs différentes : rouge, vert, bleu et jaune.
Le jeu joue une sĂ©quence de couleurs que le joueur doit mĂ©moriser et rĂ©pĂ©ter ensuite. Sâil rĂ©ussit, une couleur parmi les 4 est ajoutĂ©e Ă la fin de la sĂ©quence. La nouvelle sĂ©quence est jouĂ©e depuis le dĂ©but et le jeu continue. DĂšs que le joueur se trompe, la sĂ©quence est vidĂ©e et rĂ©initialisĂ©e avec une couleur et une nouvelle partie commence.
Exemple de séquence jouée : rouge \(\rightarrow\) bleu \(\rightarrow\) rouge \(\rightarrow\) jaune \(\rightarrow\) bleu
Dans cet exercice nous essaierons de reproduire ce jeu.
Les quatre couleurs sont stockées dans un tuple nommé couleurs :
couleurs = ("bleu", "rouge", "jaune", "vert")
Pour stocker la sĂ©quence Ă afficher nous utiliserons une structure de file que lâon nommera sequence
tout au long de lâexercice.
La file est une structure linéaire de type FIFO (First In First Out). Nous utiliserons
durant cet exercice les fonctions suivantes :
Structure de données abstraite : File
creer_file_vide()
: renvoie une file videest_vide(f)
: renvoieTrue
sif
est vide,False
sinonenfiler(f, element)
: ajoute element en queue def
defiler(f)
: retire l'Ă©lĂ©ment en tĂȘte def
et le renvoietaille(f)
: renvoie le nombre d'éléments def
En fin de chaque séquence, le Simon tire au hasard une couleur parmi les 4 proposées. On utilisera la fonction randint(a,b)
de la bibliothĂšque random
qui permet dâobtenir un nombre entier compris entre a
inclus et b
inclus pour le tirage aléatoire.
Exemple : randint(1,5)
peut renvoyer 1, 2, 3, 4 ou 5.
1. Recopier et compléter, sur votre copie, les des lignes 3 et 4 de la fonction
ajout(f)
qui permet de tirer au hasard une couleur et de lâajouter Ă une sĂ©quence. La fonction ajout
prend en paramÚtre la séquence f
; elle renvoie la séquence f
modifiée (qui intÚgre la couleur ajoutée au format chaßne de caractÚres).
1 2 3 4 5 |
|
En cas dâerreur du joueur durant sa rĂ©ponse, la partie reprend au dĂ©but ; il faut donc vider la file sequence pour recommencer Ă zĂ©ro en appelant vider(sequence)
qui permet de rendre la file sequence vide sans la renvoyer.
2. Ecrire la fonction vider
qui prend en paramÚtre une séquence f
et la vide sans la renvoyer.
Le Simon doit afficher successivement les différentes couleurs de la séquence.
Ce rÎle est confié à la fonction affich_seq(sequence)
, qui prend en paramĂštre la file de couleurs sequence, dĂ©finie par lâalgorithme suivant :
- on ajoute une nouvelle couleur Ă
sequence
; - on affiche les couleurs de la séquence, une par une, avec une pause de 0,5 s entre chaque affichage.
Une fonction affichage(couleur)
(dont la rĂ©daction nâest pas demandĂ©e dans cet exercice) permettra lâaffichage de la couleur souhaitĂ©e avec couleur de type chaĂźne de caractĂšres correspondant Ă une des 4 couleurs.
La temporisation de 0,5 s sera effectuée avec la commande time.sleep(0.5)
. AprĂšs lâexĂ©cution de la fonction affich_seq
, la file sequence
ne devra pas ĂȘtre vidĂ©e de ses Ă©lĂ©ments.
3. Recopier et compléter, sur la copie, les ... des lignes 4 à 10 de la fonction affich_seq(sequence)
ci-dessous :
1 2 3 4 5 6 7 8 9 10 |
|
Nous allons ici créer une fonction tour_de_jeu(sequence)
qui gĂšre le dĂ©roulement dâun tour quelconque de jeu cĂŽtĂ© joueur. La fonction tour_de_jeu
prend en paramĂštre la file de couleurs sequence
, qui contient un certain nombre de couleurs.
- Le jeu Ă©lectronique Simon commence par ajouter une couleur Ă la sĂ©quence et affiche lâintĂ©gralitĂ© de la sĂ©quence.
- Le joueur doit reproduire la sĂ©quence dans le mĂȘme ordre. Il choisit une couleur via la fonction
saisie_joueur()
. - On vérifie si cette couleur est conforme à celle de la séquence.
- Sâil sâagit de la bonne couleur, on poursuit sinon on vide
sequence
. Si le joueur arrive au bout de la sĂ©quence, il valide le tour de jeu et le jeu se poursuit avec un nouveau tour de jeu, sinon le joueur a perdu et le jeu sâarrĂȘte.
La fonction tour_de_jeu
sâarrĂȘte donc si le joueur a trouvĂ© toutes les bonnes couleurs de sequence
dans lâordre, ou bien dĂšs que le joueur se trompe.
AprĂšs lâexĂ©cution de la fonction tour_de_jeu
, la file sequence
ne devra pas ĂȘtre vidĂ©e de ses Ă©lĂ©ments en cas de victoire.
a. Afin dâobtenir la fonction tour_de_jeu(sequence)
correspondant au comportement décrit ci-dessus, recopier le script ci-dessous et
- Compléter les ...
- Choisir parmi les propositions de syntaxes suivantes lesquelles correspondent aux ZONES A, B, C, D, E et F figurant dans le script et les y remplacer (il ne faut donc en choisir que six parmi les onze) :
vider(sequence)
defiler(sequence)
enfiler(sequence,c_joueur)
enfiler(stock,c_seq)
enfiler(sequence, defiler(stock))
enfiler(stock, defiler(sequence))
affich_seq(sequence)
while not est_vide(sequence):
while not est_vide(stock):
if not est_vide(sequence):
if not est_vide(stock):
b. Proposer une modification pour que la fonction se rĂ©pĂšte si le joueur trouve toutes les couleurs de la sĂ©quence (dans ce cas, une nouvelle couleur est ajou- tĂ©e) ou sâil se trompe (dans ce cas, la sĂ©quence est vidĂ©e et se voit ajouter une nouvelle couleur). On pourra ajouter des instructions qui ne sont pas proposĂ©es dans la question a.
Correction de l'exercice 7
Correction Q1.
1 2 3 4 5 |
|
Correction Q2.
def vider(f):
while not est_vide(f):
defiler(f)
Correction Q3.
1 2 3 4 5 6 7 8 9 10 |
|
Correction Q4.a.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Correction Q4.b.
Question bizarre...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
ou bien
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
CrĂ©ditsâïž
Auteur : Gilles Lassus
# Tests
(insensible Ă la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)