Mini-projets algorithmique, corrigé TP KNN, news, notebooks IA

This commit is contained in:
2026-07-07 10:57:59 +02:00
parent 1647035df2
commit 5a6d602a91
51 changed files with 3614 additions and 33 deletions

View File

@@ -0,0 +1,49 @@
# 03 — Le Podium
**Algorithme :** Tri par sélection
**Difficulté :** Facile
**Durée estimée :** 45 min — 1h
---
## Contexte
Vous gérez le classement d'une compétition de sprint. Vous devez trier les athlètes par **temps croissant** (le plus rapide en premier) et afficher le podium.
Le tri par sélection fonctionne comme un vrai classement : à chaque étape, on cherche le meilleur parmi tous les restants et on le place en tête.
---
## Étapes
### Étape 1 — Implémenter `tri_selection_athletes(athletes)`
La liste `athletes` contient des dictionnaires `{"nom": ..., "pays": ..., "temps": ...}`.
Il faut trier par `temps` croissant (le plus petit temps = le plus rapide).
> **Indication** : dans le tri par sélection, au lieu de comparer `tab[j] < tab[mini]`, vous comparerez `athletes[j]["temps"] < athletes[mini]["temps"]`.
### Étape 2 — Afficher le podium
Implémentez `afficher_podium(athletes_tries)` qui affiche les 3 premiers avec un podium en ASCII.
```
1er
+---+ 2e 3e
| | +---+ +---+
| 1 | | 2 | | 3 |
| | | | | |
+---+ +---+ +---+
Alice (FR) Bob (USA) Carla (BR)
9.85 s 9.91 s 9.97 s
```
### Étape 3 — Recherche dichotomique
Après le tri, créez une liste des temps uniquement. Implémentez `temps_atteint(temps_liste, t)` qui utilise la dichotomie pour dire si un temps exact a été réalisé lors de la compétition.
### Étape 4 — Extension (si vous avez le temps)
Affichez aussi le classement complet sous forme de tableau numéroté.
---
## Ce que vous devez rendre
- Le programme qui trie et affiche le podium
- Réponse : pourquoi le tri par sélection fait-il **moins de déplacements** que le tri par insertion ?