Files
1ereNSI/algorithmes/mini-projets/06_bibliotheque/sujet.md

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 ?