Version interactive avec LaTeX compilé
CONCOURS ARTS ET MÉTIERS ParisTech - ESTP - ARCHIMEDE
Épreuve d'Informatique MP
Durée 3 h
Si, au cours de l'épreuve, un candidat repère ce qui lui semble être une erreur d'énoncé, d'une part il le signale au chef de salle, d'autre part il le signale sur sa copie et poursuit sa composition en indiquant les raisons des initiatives qu'il est amené à prendre.
L'usage de calculatrices est interdit.
Indiquer en tête de copie ou de chaque exercice le langage utilisé
Quel que soit le langage utilisé, le candidat pourra supposer qu'il dispose d'une fonction test_liste_vide qui prend en entrée une liste et renvoie le booléen 1 si la liste est vide et 0 sinon.
Le candidat pourra, s'il le juge utile, supposer que chaque liste se termine par un élément de marquage de fin de liste appelé NIL.
Dans tous les exercices, on considérera que les éléments d'un tableau de longueur
sont indicés de 1 à
. Le candidat pourra supposer qu'il en est ainsi dans le langage qu'il utilise.
Exercice 1
a) Ecrire la fonction :
verification_liste
données L:liste d'entiers naturels
résultat b:booléen
qui prend en entrée une liste
d'entiers naturels et renvoie le booléen 0 (ou true) lorsqu'au moins un des éléments de la liste n'est pas égal à 0,1 , ou 2 et 1 (ou false) sinon.
b) Ecrire la fonction :
b) Ecrire la fonction :
tri_tableau
données N: entier naturel
T:tableau d'entiers naturels de longueur N
résultat U:tableau d'entiers naturels de longueur N
qui prend en entrée un tableau
qui ne contient que des 0,1 ou 2 et renvoie le tableau trié dans l'ordre croissant. On ne créera pas de tableau intermédiaire à l'intérieur du programme et on proposera un algorithme en temps linéaire.
Exercice 2
Une application
de l'ensemble
dans lui-même est représentée par un tableau
à cent cases : Pour tout entier
dans
, la
-ème case du tableau
contient la valeur
.
Ecrire un programme inverse qui prend en entrée le tableau
et retourne le tableau
représentant l'application inverse
lorsque
bijective ; dans le cas contraire, le programme affiche le message " NON BIJECTIF".
Exercice 3
En plus de la fonction test_liste_vide qui prend en entrée une liste et renvoie le booléen 1 si la liste est vide et 0 sinon, on dispose des diverses fonctions et procédures :
MOD
retourne le reste de la division euclidienne de l'entier naturel
par l'entier naturel non nul
.
ajouter ajoute l'élément
en tête de la liste
.
supprimer_tête supprime la tête de la liste
.
ajouter
supprimer_tête
- On considère le programme suivant qui prend en entrée une liste contenant des listes de longueur fixée ne contenant que des 0 ou des 1 et retourne une liste de même type. On remarquera qu'une liste de listes peut contenir uniquement la liste vide.
$\operatorname{PROG}(L$ : liste de listes, $k$ : entier naturel non nul )
variables : $x$ : entier, $U$ : liste de listes, $V 0$ : liste de listes, $V 1$ : liste de listes.
$W 0$ : liste de listes, $W 1$ : liste de listes, $L 1$ : liste d'entiers,
$U \leftarrow L$
$V 0 \leftarrow$ liste_vide
$V 1 \leftarrow$ liste_vide
$W 0 \leftarrow$ liste_vide
$W 1 \leftarrow$ liste_vide
tant que test_liste_vide $(U)=0$ faire
$L 1 \leftarrow$ tête $(U)$
$x \leftarrow$ tête $(L 1)$
si ( $x=0$ ) alors ajouter(supprimer_tête( $L 1$ ), $V 0$ )
sinon ajouter(supprimer_tête(L1), V1)
fin si
supprimer_tête $(U)$
fin faire
si $(k>1)$ faire $V 1 \leftarrow P R O G(V 1, k-1)$
$V 0 \leftarrow P R O G(V 0, k-1)$
fin si
tant que test_liste_vide $(V 1)=0$ faire
$L 1 \leftarrow$ tête $(V 1)$
ajouter $(1, L 1)$
ajouter( $L 1, W 1$ )
supprimer_tête(V1)
fin faire
tant que test_liste_vide $(V 0)=0$ faire
$L 1 \leftarrow$ tête $(V 0)$
ajouter $(0, L 1)$
ajouter( $L 1, W 0$ )
supprimer_tête( $V 0$ )
fin faire
tant que test_liste_vide $(W 0)=0$ faire
ajouter(tête( $W 0$ ), $U$ )
supprimer_tête( $W 0$ )
fin faire
tant que test_liste_vide $(W 1)=0$ faire
ajouter(tête( $W 1$ ), $U$ )
supprimer_tête( $W 1$ )
fin faire
retourner $(U)$
a) Décrire l'exécution du programme PROG ci-dessous pour l'entrée
b) Décrire l'exécution du programme PROG ci-dessous pour l'entrée
c) Que calcule le programme PROG ?
d) Démontrer que le programme PROG termine.
2. Qu'effectue la fonction ci-dessous :
b) Décrire l'exécution du programme PROG ci-dessous pour l'entrée
c) Que calcule le programme PROG ?
d) Démontrer que le programme PROG termine.
2. Qu'effectue la fonction ci-dessous :
FONCTION1( $n$ : entier naturel, $k$ : entier naturel)
variables : $x$ : entier, $y$ : entier, $i$ : entier, $L$ : liste d'entiers.
$L \leftarrow$ liste_vide
$x \leftarrow n$
pour $i$ de 1 à $k$ faire
$y \leftarrow x$ MOD 2
ajouter $(y, L)$
$x \leftarrow(x-y) / 2$
fin faire
retourner $L$
- Qu'effectue la fonction ci-dessous :
FONCTION2( $L:$ liste d'entiers naturels, $k:$ entier nature)
variables : $x$ : entier, $y$ : entier, $i$ : entier, $L 1$ : liste d'entiers, $L 2$ : liste d'entiers, $U$ : liste de listes.
$L 1 \leftarrow L$
$U \leftarrow$ liste_vide
tant que test_liste_vide $(L 1)=0$ faire
$x \leftarrow$ tête $(L 1)$
$L 2 \leftarrow \operatorname{FONCTION1}(x, k)$
ajouter $(L 2, U)$
supprimer_tête(L1)
fin faire
retourner $U$
- a) Décrire l'éxécution de la fonction FONCTION2 sur la liste
et l'entier ? Quel est le résultat de ?
b) On souhaite utiliser la fonction FONCTION1, la FONCTION2 et le programme PROG pour trier par ordre croissant des listes d'entiers naturels. Quelle(s) fonction(s) faut-il ajouter? Quel est le domaine de validité de ce programme de tri ?
Exercice 4
Soit
sur un alphabet fini. Soient
et
deux mots sur l'alphabet
. Soient
les lettres de
telles que
et
.
On dit que
est un sous-mot de
si
est le mot vide
ou s'il existe une application strictement croissante de
dans
notée
, telle que
, pour tout entier
compris entre 1 et
.
- Dans cette question,
est l'alphabet à deux lettres . Déterminer l'ensemble des sous-mots du mot xyxyx. Combien y-en a t'il? - Dans le cas général, démontrer que l'ensemble des sous-mots du mot
est fini et proposer une majoration de son cardinal en fonction de . - On suppose que
est un sous-mot de . Soit l'ensemble des applications application strictement croissante de dans telle que , pour tout entier compris entre 1 et .
a) Soitle plus petit indice dans tel que . Démontrer que toute application dans vérifie .
b) Démontrer qu'il existe une applicationdans telle que, pour toute application dans et tout indice dans .
c) Ecrire un algorithme qui prend en entrée les listeset et qui renvoie la liste .
d) Ecrire un algorithme qui prend en entrée les listeset et qui renvoie un booléen égal à 1 si est un sous-mot de sinon. L'algorithme ne doit parcourir qu'une fois chacune des listes et . Estimer la complexité de votre algorithme en fonction des entiers et . - Le cardinal de l'ensemble
est noté . Soient et les mots tels que et .
a) Lorsque, démontrer l'égalité .
b) Lorsque, démontrer l'égalité .
c) Proposer un algorithme récursif qui prend en entrée les listeset et qui renvoie la valeur de . - Dans cette partie, le mot
est fixé. On considère le langage formé par les mots de tels que est un sous-mot de .
a) Dans le cas particulier oùest l'alphabet à deux lettres et , on remarquera que le langage est le langage reconnu par l'automate représenté dans la figure 1 ci-dessous. Proposer une expression rationnelle de .
b) Dans le cas général, démontrer que le langageest un langage rationnel et en proposer une expression rationnelle.
c) Représenter graphiquement un automate déterministe qui reconnait le langage. On démontrera précisément que le langage reconnu est .

Figure 1: Automate
Exercice 5
La fonction XOR (ou exclusif) est notée
.
Soit la fonction booléenne définie sur
par
si et seulement si le nombre de 1 parmi
est impair, pour tout
dans
.
Soit
- Ecrire la table de vérité de la fonction
. - Démontrer la propriété d'associativité de la fonction
, c'est-à-dire :
- Ecrire
avec une formule booléenne. - Construire un circuit logique implémentant la fonction
utilisant uniquement des portes XOR (ou exclusif). - Etant donné un entier naturel
non nul, construire un circuit logique qui prend en entrée bits et donne en sortie la parité du nombre de ces bits égaux à 1 en utilisant au plus portes XOR.

Figure 2: Porte XOR (ou exclusif)
FIN DE L PREUVE
