L3 MIASHS, Algorithme et Programmation 3, année 2023

A. itérateurs et itérables

  1. Retournez un objet itérateur qui donne toutes les valeurs impaires par ordre décroissant entre 100 et 50.

  2. Retournez un objet itérable dont les itérateurs sont infinis et retourne les valeurs \(1, 2, 3, 1, 2, 3,\ldots\).

  3. Écrivez une classe BoucleInfinie qui prend en argument une liste d’entiers et qui retourne un objet itérable qui répète cette liste à l’infini.

Par exemple,

B = BoucleInfinie([3, 2, 1, 4])

L’instance B est un itérable dont les itérateurs sont infinis et retournent les valeurs \(3, 2, 1, 4, 3, 2, 1, 4, \ldots\).

B. Sous-facteurs

On peut trouver la première occurrence d’une chaine dans une autre à l’aide de la méthode index des chaines de caractères.

Par exemple:

s = "Un choux à la crème c'est chou."
print(s.index("chou"))

Écrire une fonction génératrice (c’est à dire avec des yield) trouve_positions(u, v) avec u et v deux chaines de caractères qui retourne un itérateur sur les positions de uv apparait.

Par exemple:

trouve_positions("Un choux à la crème c'est chou", "chou")

doit retourner un itérateur qui donne les valeurs 3 et 26.

C. Une classe simple pour des Matrices

L’objectif est de créer une classe Matrice permettant de manipuler des matrices de manière élémentaire.

Dans cet exercice, il est interdit d’utiliser numpy.

Le stockage des informations de la matrice peut être fait à votre convenance. Le plus simple est probablement d’utiliser des listes de listes ou des dictionnaires de couples d’indices.

Votre classe matrice ne doit hériter d’aucune classe et doit implémenter les méthodes suivantes:

M = Matrice([[0, 1], [1, 0]])

donne la matrice

0 1
1 0

Par exemple M.dimension retourne (2, 2)

Par exemple, M.c(0, 0) retourne 0, M.c(0, 1) retourne 1 et M.c(0, 2) fait une erreur.

Vérifiez que

Id = Matrice([1, 0], [0, 1]])
M = Matrice([[0, 1], [1, 0]])

Alors Id != M doit retourner True. On a également que M.transposition() == M retourne True.

Calcul du déterminant

On rappelle que pour une matrice \(M = (m_{i,j})\) de dimension \(n\times n\), on a la formule suivante: \[\text{det}(M) = \Sigma_{i=0}^{n-1} m_{i,0}(-1)^i \text{det}(M_{i,0})\]\(M_{i,0}\) est la matrice où la ligne i et la colonne 0 ont été enlevée.

On a également le cas dégénéré où une matrice de taille \(1\times 1\) a pour déterminant son unique valeur.


Compiled the: mar. 19 mars 2024 16:13:25 CET