• Aucun résultat trouvé

Devoir surveillé 1 - Informatique

N/A
N/A
Protected

Academic year: 2022

Partager "Devoir surveillé 1 - Informatique"

Copied!
4
0
0

Texte intégral

(1)

BCPST 1 18 décembre 2020

Devoir surveillé 1 - Informatique

Dans l’écriture de vos programmes en Python, respectez la ponctuation et l’indentation.

Expliquez ce que font vos programmes, notamment en commentant votre code. Enfin, n’hésitez pas à donner des noms explicites à vos fonctions et vos variables.

L’utilisation de tout matériel électronique est interdite.

Ce sujet contient quatre pages, deux exercices et trois problèmes. Les exercices et les problèmes sont indépendants.

Durée : 3h.

Partie I : Lecture de programmes

Exercice 1 — Un air de déjà vu Que fait la fonction suivante ?

def mystere(q, n):

""" Mystère et boule de gomme."""

S = 0 a = 1

for k in range(n):

S += a * q ** k a = -a

return S

Exercice 2 — Affichages mystère

Qu’affichent les scripts suivants après exécution ? On pourra donner les résultats sans justification.

1. n = 0

while n < 15:

n = n + 2 print(n)

2. n = 10

while n >= 11:

n = n + 2 print(n)

Lycée Pierre-Gilles de Gennes 1 Adriane Kaïchouh

(2)

BCPST 1 18 décembre 2020

3. n = 0

for k in range(5):

n = n + 1 print(n)

4. n = 0

for k in range(5):

n = n + 1 print(k)

5. def fonction(a):

a += 2.0 return a a = fonction(8.0) print(a)

6. a = 7

b = 12 if a > 5:

b = b - 4 if b >= 10:

b = b + 1 print(b)

7. a = 10

if a < 5:

a = 20 elif a < 100:

a = 500 elif a < 1000:

a = 1 else:

a = 0 print(a)

8. for i in range(1, 10, 3):

print(i * i, "i * i")

Lycée Pierre-Gilles de Gennes 2 Adriane Kaïchouh

(3)

BCPST 1 18 décembre 2020 Partie II : Écriture de programmes

Problème 1 — Jeu du beuzeu

Le jeu du beuzeu consiste à énumérer à tour de rôle tous les entiers naturels en excluant ceux dont l’écriture décimale contient le chiffre 7 ainsi que les multiples de 7. À voix haute, la première joueuse compte 1, puis le deuxième joueur compte 2, et ainsi de suite jusqu’au sixième joueur qui compte6, puis la septième joueuse doit passer directement à8. La première personne qui se trompe est éliminée. Les premiers entiers annoncés doivent donc être les suivants :

1,2,3,4,5,6,8,9,10,11,12,13,15,16,18,19,20,22.

1. Écrire une fonction multiple_sept qui prend en argument un entier n et qui renvoie True si l’entier n est un multiple de 7, False sinon.

2. (a) Écrire une fonction qui prend en arguments un caractère caractere et une chaine de caractères chaine, et qui renvoie True si le caractère caractere est contenu dans la chainechaine,False sinon.

(b) En déduire une fonction contient_sept qui prend en entrée un entier n et qui renvoieTruesi l’écriture décimale dencontient le chiffre7,Falsesinon.

3. Écrire une fonctioncoup_autorisequi prend en argument un entier natureln et qui renvoie Truesi l’entier n est un coup autorisé au jeu du beuzeu,Falsesinon.

4. Écrire une fonction qui prend en argument un entierN et qui renvoie la liste des N premiers coups autorisés au jeu du beuzeu.

Problème 2 — The look-and-say sequence On considère la suite logique suivante :

u0 = 1

u1 = 11 (un 1) u2 = 21 (deux 1) u3 = 1211 (un 2, un 1)

u4 = 111221 (un 1, un 2, deux 1)

· · ·

Étant donné un terme de la suite, on trouve le terme suivant en décrivant les chiffres du terme donné, en regroupant les chiffres identiques consécutifs. Par exemple, le terme u4 s’écrit111221, donc il contienttrois 1, puis deux 2, puis un 1. Le terme suivant dans la suite logique sera donc :

u5 = 312211.

Plutôt que de voir chaque terme de cette suite logique comme un entier, on le représen- tera en Python comme la liste de ses chiffres, de sorte à pouvoir accéder à chacun de ses chiffres séparément. Par exemple, le terme u5 sera représenté par la liste suivante :

[3, 1, 2, 2, 1, 1].

Lycée Pierre-Gilles de Gennes 3 Adriane Kaïchouh

(4)

BCPST 1 18 décembre 2020 1. Écrire une fonction Segment_initial qui prend en argument une liste L et qui renvoie le nombre de fois où le premier élément de L apparait en début de liste de manière consécutive.

2. Écrire une fonction Look_and_say qui prend en entrée une liste L représentant un terme de la suite et qui renvoie le terme suivant dans la suite logique.

3. Écrire une fonctionSuite_logiquequi prend en entrée un entiern et qui renvoie le n-ième terme de la suite logique.

Problème 3 — Phylogénie

Dans ce problème, on s’intéresse aux liens de parenté entre différentes espèces, à partir de l’évolution d’un certain nombre de caractères phylogénétiques (par exemple, la pré- sence de plumes, la présence d’un gésier, etc.).

Toutes les espèces possèdent le même nombre de caractères. Chaque caractère peut apparaitre dans deux états : soit l’état originel(noté 0), soit l’état dérivé(noté 1).

Chaque espèce est représentée par la liste des valeurs (0 ou1) de ses caractères (consi- dérés toujours dans le même ordre). L’ensemble des espèces considérées, c’est-à-dire des données phylogénétiques du problème, est lui-même représenté par la liste des espèces.

1. Écrire une fonctionAjout_especequi prend en entrée la liste des données phylo- génétiques ainsi qu’une nouvelle espèce, et qui ajoute la nouvelle espèce à la liste des données phylogénétiques.

2. Écrire une fonction Ajout_caractere qui prend en entrée la liste des données phylogénétiques ainsi qu’une liste d’états (0ou 1), et qui ajoute à chaque espèce un nouveau caractère, dont l’état est déterminé par la liste d’états.

Étant données deux espècesE1 etE2, on dit que :

• l’espèce E2 est descendante de l’espèce E1 si tout caractère présent à l’état originel dans l’espèce E2 est aussi présent à l’état originel dansE1;

• l’espèce E1 est ancêtre deE2 si l’espèce E2 est descendante de E1;

• l’espèce E2 est descendante immédiate de l’espèce E1 si elle est descendante de l’espèceE1 à la suite de la mutation d’un seul caractère (donc du passage d’un seul caractère de l’état originel vers l’état dérivé).

3. (a) Écrire une fonction Est_ancetre qui prend en entrée deux espèces et qui renvoieTrue si la première espèce est ancêtre de la seconde, etFalsesinon.

(b) Écrire une fonction Nombre_descendantes qui prend en entrée la liste des données phylogénétiques ainsi qu’une espèce, et qui renvoie le nombre de descendantes de l’espèce donnée présentes dans la liste des données phylo- génétiques.

4. Écrire une fonction Est_descendante_immediate qui prend en entrée deux es- pèces et qui renvoie True si la seconde espèce est descendante immédiate de la première, et False sinon.

Lycée Pierre-Gilles de Gennes 4 Adriane Kaïchouh

Références

Documents relatifs

[r]

[r]

Qu’elles soient individuelles ou collectives, on sait aujourd’hui qu’il est important pour la santé notamment de pratiquer une ou plusieurs activités

[r]

Tu pratiques un sport : après l’avoir présenté, tu donneras les raisons pour lesquelles tu as choisi de faire du sport et pourquoi celui-ci plutôt qu’un autre. • Ville

[r]

Des alpinistes, des navigateurs, des coureurs automobiles… risquent souvent leur vie pour remporter une victoire?. Seriez-vous prêt à risquer la vôtre pour réaliser

[r]