40 lines
1.6 KiB
Markdown
40 lines
1.6 KiB
Markdown
|
|
# 02 — Le Tri de Cartes
|
||
|
|
|
||
|
|
**Algorithme :** Tri par insertion
|
||
|
|
**Difficulté :** Facile
|
||
|
|
**Durée estimée :** 45 min — 1h
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Contexte
|
||
|
|
|
||
|
|
Lorsqu'on reçoit des cartes à jouer, on les trie naturellement dans sa main : on prend chaque nouvelle carte et on la glisse à la bonne place parmi celles déjà en ordre. C'est exactement le **tri par insertion**.
|
||
|
|
|
||
|
|
Dans ce projet, vous allez trier une main de cartes par valeur croissante, puis chercher une carte avec la dichotomie.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Étapes
|
||
|
|
|
||
|
|
### Étape 1 — Afficher la main
|
||
|
|
Lancez le starter et observez comment les cartes sont représentées. Chaque carte est un **tuple** `(valeur, couleur)`. La valeur va de 2 à 14 (11 = Valet, 12 = Dame, 13 = Roi, 14 = As).
|
||
|
|
|
||
|
|
### Étape 2 — Implémenter `tri_insertion_cartes(main)`
|
||
|
|
Le tri doit classer les cartes par **valeur croissante** (le premier élément du tuple).
|
||
|
|
|
||
|
|
> **Indication** : dans le tri par insertion vu en cours, on comparait `tab[j-1] > x`. Ici, vous comparerez `main[j-1][0] > x[0]` (on ne regarde que la valeur, pas la couleur).
|
||
|
|
|
||
|
|
### Étape 3 — Chercher une carte
|
||
|
|
Implémentez `chercher_carte(main_triee, valeur)` qui utilise la **dichotomie** pour savoir si une carte d'une certaine valeur est dans la main.
|
||
|
|
|
||
|
|
> **Attention** : la dichotomie ne fonctionne que sur une liste **déjà triée** !
|
||
|
|
|
||
|
|
### Étape 4 — Extension (si vous avez le temps)
|
||
|
|
Ajoutez un mode "nouvelle donne" : générez une main aléatoire de 7 cartes avec `random`, triez-la et affichez-la.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Ce que vous devez rendre
|
||
|
|
- Le programme qui trie et cherche correctement
|
||
|
|
- Une explication : pourquoi le tri par insertion ressemble à ce qu'on fait naturellement avec des cartes ?
|