Université de Provence Licence Math Info 2ème année S3
Année 2011/12 Fondements de l’Informatique
TP: Ensembles, applications, dénombrement
1. Ecrire et tester une fonction Python qui écrit, dans un fichier de nom [Link], toutes les valeurs de P(N6 ), et
qui renvoie le cardinal de cet ensemble. Même chose pour l’ensemble P(P(N6 )).
2. Ecrire et tester une fonction qui, pour tout couple de réels (x, y) en paramètre, renvoie 1 si (x, y) appartient au
disque d’équation (x − 4)2 + (y + 2)2 = 49, et 0 sinon.
3. Pour chaque définition ci-après, programmer puis tester l’application f , et sa réciproque.
(a) A = R, B = R, et f (x) = x + 7
(b) A = R, B = R, et f (x) = x2 + 2x − 3
(c) A = {x ∈ R|9 ≥ x ≥ 4}, B = {x ∈ R|96 ≥ x ≥ 21}, et f (x) = x2 + 2x − 3
(d) A = R, B = R, et f (x) = 3x − 2|x|
4. Soit E1 un ensemble dont les éléments sont des entiers écrits dans le fichier de nom [Link]. Soit E2 un ensemble
dont les éléments sont des entiers écrits dans le fichier de nom [Link]. Soit E3 un ensemble dont les éléments
sont des mots écrits dans le fichier de nom [Link].
(a) Programmer et tester la fonction de nom union12 qui écrit, dans le fichier de nom [Link], l’union des
ensembles E1 et E2 .
(b) Programmer et tester la fonction de nom diff12 qui écrit, dans le fichier de nom [Link], la différence
E1 − E2 .
(c) Programmer et tester la fonction de nom inter12 qui écrit, dans le fichier de nom [Link], l’intersection
E1 ∩ E2 .
(d) Programmer et tester la fonction de nom pc123 qui écrit, dans le fichier de nom [Link], le produit
cartésien E1 × E2 × E3 .
5. Pour chaque exemple suivant des ensembles A et B, programmer et tester une première fonction injections,
qui écrit toutes les injections possibles de A vers B dans le fichier de nom [Link] ; et une seconde fonction
surjections qui écrit toutes les surjections possibles de A vers B dans le fichier de nom [Link]. On écrira une
application par ligne ; le format d’écriture d’une application f est alors la simple énumération de l’ensemble :
{ai : bj }i≤|A| où ai ∈ A, bj ∈ B et f (ai ) = bj . Par exemple, pour l’application identité de N3 dans N3 , on écrira :
{ 1:1, 2:2, 3:3 }
Chacune de ces fonctions doit retourner le nombre d’applications ainsi énumérées.
(a) A = N8 et B = N20
(b) A = N20 et B = N8
6. Dans le système RGB, une couleur est définie par un triplet (r, g, b), où r ∈ [0, 255], g ∈ [0, 255], et b ∈ [0, 255]. Une
autre représentation d’une couleur en RGB est un nombre entier écrit en hexadécimal sur 6 digits. Par exemple,
la couleur Sarcelle (un bleu-vert moyen), a pour code RGB le triplet (0, 142, 142), donc le code hexadécimal
008E8E. Programmer, et tester, une fonction Python qui, à partir d’un triplet RGB, retourne le code hexadécimal
correspondant. Cette fonction devra faire en sorte de ne pas convertir un triplet qui ne correspond pas à une
couleur ! Programmer et tester la fonction inverse.