46 lines
1.9 KiB
Markdown
46 lines
1.9 KiB
Markdown
# 06 — La Bibliothèque
|
|
|
|
**Algorithmes :** Tri par sélection + Recherche dichotomique
|
|
**Difficulté :** Moyen
|
|
**Durée estimée :** 1h — 1h15
|
|
|
|
---
|
|
|
|
## Contexte
|
|
|
|
Vous gérez le catalogue d'une bibliothèque. Les livres doivent être triés par **titre alphabétique** pour qu'on puisse les retrouver rapidement. Vous utiliserez le tri par sélection pour trier, et la dichotomie pour chercher.
|
|
|
|
---
|
|
|
|
## Étapes
|
|
|
|
### Étape 1 — Trier par titre
|
|
Implémentez `tri_selection_livres(livres)` qui trie par `"titre"` (ordre alphabétique).
|
|
|
|
> **Rappel** : en Python, `"Alice" < "Zorro"` → `True`. Vous pouvez comparer des chaînes directement.
|
|
|
|
### Étape 2 — Recherche dichotomique
|
|
Implémentez `rechercher_titre(livres_tries, titre)` qui retourne le livre si trouvé, `None` sinon.
|
|
|
|
> **Attention** : la comparaison doit être exacte (majuscules comprises). Pour simplifier, tout est déjà en minuscules dans les données.
|
|
|
|
### Étape 3 — Affichage enrichi
|
|
Implémentez `afficher_fiche(livre)` qui affiche toutes les informations d'un livre de façon lisible (titre, auteur, année, genre, pages).
|
|
|
|
### Étape 4 — Statistiques
|
|
Ajoutez une fonction `statistiques(livres)` qui affiche :
|
|
- Le nombre de livres
|
|
- Le livre le plus court et le plus long (en pages)
|
|
- La moyenne de pages
|
|
|
|
> **Indication** : une fois la liste triée par titre, vous pouvez utiliser une boucle simple pour les stats. Ou bien trier une copie par pages avec votre tri !
|
|
|
|
### Étape 5 — Extension (si vous avez le temps)
|
|
Ajoutez la possibilité de trier aussi par **année** ou par **nombre de pages**, et de rechercher tous les livres d'un **même auteur** (recherche linéaire cette fois — pourquoi ne peut-on pas utiliser la dichotomie ici ?).
|
|
|
|
---
|
|
|
|
## Ce que vous devez rendre
|
|
- Le programme fonctionnel
|
|
- Réponse : pour chercher tous les livres d'un auteur, pourquoi la dichotomie est-elle inadaptée ?
|