Gloutons : activité draft d'Arène (exercice débranché + TP Python)

This commit is contained in:
2026-08-24 16:51:53 +02:00
parent 9f84d1c3f2
commit cc418e4732
3 changed files with 1161 additions and 6 deletions
+118 -6
View File
@@ -1,10 +1,10 @@
### Exercices - Algorithmes Gloutons
**Niveaux de difficulté :** Facile | ⭐⭐ Moyen | ⭐⭐⭐ Difficile
**Niveaux de difficulté :** Facile | Moyen | Difficile
---
## Exercice 1 ⭐⭐ : Achat de V-Bucks (Fortnite)
## Exercice 1 (Moyen) : Achat de V-Bucks (Fortnite)
Dans Fortnite, on peut acheter des V-Bucks avec les packs suivants : `{500, 1000, 2800, 5000, 13500}` V-Bucks.
@@ -37,7 +37,7 @@ Non, ce système n'est pas canonique. L'algorithme glouton ne fonctionne pas tou
---
## Exercice 2 : Playlist Spotify optimale
## Exercice 2 (Facile) : Playlist Spotify optimale
Tu prépares une playlist pour un trajet de **60 minutes**. Tu veux y mettre le maximum de sons parmi tes favoris :
@@ -90,7 +90,7 @@ Durée totale : **33 minutes**
---
## Exercice 3 ⭐⭐ : Inventaire Minecraft
## Exercice 3 (Moyen) : Inventaire Minecraft
Tu joues à Minecraft et ton inventaire peut contenir **64 objets** maximum. Tu veux maximiser la valeur totale des objets pour le commerce avec les villageois.
@@ -135,7 +135,7 @@ Tri par ratio décroissant, on prend dans l'ordre :
---
## Exercice 4 ⭐⭐⭐ : Planning de stream Twitch
## Exercice 4 (Difficile) : Planning de stream Twitch
Tu es streamer et tu dois planifier tes lives pour demain. Plusieurs marques te proposent des partenariats avec des créneaux imposés :
@@ -217,7 +217,119 @@ print("Rémunération totale :", total, "€")
---
## Exercice 5 ⭐⭐ : Réflexion
## Exercice 5 (Difficile) : Draft d'Arène (jeu de cartes)
Dans le mode **Arène** d'un jeu de cartes, on ne joue pas avec sa collection : on **drafte** son deck. On t'ouvre un booster de 3 cartes, tu en gardes **une seule**, et on passe au booster suivant. **Une carte écartée est perdue pour toujours : on ne revient jamais en arrière.**
Chaque carte a une **puissance** (plus c'est haut, mieux c'est) et un **coût en mana** (le prix à payer pour la poser sur le plateau).
> **Règle de jouabilité.** Un deck de 5 cartes n'est jouable que s'il contient **au plus 2 cartes coûtant 5 manas ou plus**. Sinon, tu n'as rien à jouer pendant tes premiers tours, tu perds la partie avant d'avoir pu poser tes grosses cartes : le deck est déclaré **injouable**.
**Objectif** : obtenir le deck jouable de puissance totale maximale.
**Booster 1**
| Carte | Puissance | Coût |
|-------|-----------|------|
| Moineau vif | 2 | 1 |
| Druide chétif | 4 | 3 |
| Gardien de pierre | 5 | 5 |
**Booster 2**
| Carte | Puissance | Coût |
|-------|-----------|------|
| Acolyte du givre | 3 | 2 |
| Chevaucheur de loup | 4 | 3 |
| Abomination | 6 | 6 |
**Booster 3**
| Carte | Puissance | Coût |
|-------|-----------|------|
| Voleuse de poches | 2 | 1 |
| Sentinelle elfe | 4 | 4 |
| Ver de foudre | 8 | 7 |
**Booster 4**
| Carte | Puissance | Coût |
|-------|-----------|------|
| Mage novice | 1 | 1 |
| Alchimiste fou | 3 | 2 |
| Dragon de givre | 9 | 8 |
**Booster 5**
| Carte | Puissance | Coût |
|-------|-----------|------|
| Bouffon du roi | 3 | 2 |
| Capitaine pirate | 5 | 4 |
| Kraken des profondeurs | 6 | 6 |
1. Applique la stratégie gloutonne la plus naturelle : **à chaque booster, prendre la carte la plus puissante**. Quel deck obtiens-tu ? Quelle est sa puissance totale ? Est-il jouable ?
2. Corrige la stratégie pour qu'elle respecte la règle : **à chaque booster, prendre la carte la plus puissante parmi celles qu'on a encore le droit de prendre**. Quel deck obtiens-tu ? Quelle est sa puissance ?
3. Trouve un deck jouable **strictement meilleur** que celui de la question 2. Où l'algorithme glouton s'est-il fait piéger ?
4. Le problème vient d'un choix fait au booster 1. Pourquoi l'algorithme glouton ne peut-il pas le corriger une fois arrivé au booster 4 ?
<details>
<summary><strong>Voir la correction</strong></summary>
**Question 1 : glouton naïf**
| Booster | Carte prise | Puissance | Coût |
|---------|-------------|-----------|------|
| 1 | Gardien de pierre | 5 | 5 |
| 2 | Abomination | 6 | 6 |
| 3 | Ver de foudre | 8 | 7 |
| 4 | Dragon de givre | 9 | 8 |
| 5 | Kraken des profondeurs | 6 | 6 |
Puissance totale : **34**... mais le deck contient **5 cartes à 5 manas ou plus**, alors que la limite est de 2.
Le deck est **injouable**. L'algorithme glouton n'a pas donné un résultat « un peu moins bon » : il a donné un résultat **inutilisable**. En ne regardant que la puissance, il a complètement ignoré la contrainte de coût.
**Question 2 : glouton contraint**
On compte au fur et à mesure les cartes chères déjà prises.
| Booster | Cartes autorisées | Carte prise | Puissance | Cartes chères |
|---------|-------------------|-------------|-----------|---------------|
| 1 | toutes (0 chère prise) | Gardien de pierre (5) | 5 | 1 / 2 |
| 2 | toutes (1 chère prise) | Abomination (6) | 6 | 2 / 2 |
| 3 | quota plein → seulement les cartes < 5 manas | Sentinelle elfe (4) | 4 | 2 / 2 |
| 4 | quota plein | Alchimiste fou (3) | 3 | 2 / 2 |
| 5 | quota plein | Capitaine pirate (5) | 5 | 2 / 2 |
Deck jouable, puissance totale : **23**.
**Question 3 : mieux**
Deck optimal : Druide chétif (4) + Chevaucheur de loup (4) + **Ver de foudre (8)** + **Dragon de givre (9)** + Capitaine pirate (5) = **30**.
Il ne contient bien que 2 cartes chères (Ver de foudre et Dragon de givre), il est donc jouable.
**Le piège** : le glouton a dépensé ses 2 places de cartes chères dès les boosters 1 et 2, pour des gains ridicules.
- Au booster 1, prendre le Gardien de pierre (5) au lieu du Druide chétif (4) rapporte **+1**.
- Au booster 2, prendre l'Abomination (6) au lieu du Chevaucheur de loup (4) rapporte **+2**.
- Mais au booster 3, le Ver de foudre (8) au lieu de la Sentinelle elfe (4) rapportait **+4**.
- Et au booster 4, le Dragon de givre (9) au lieu de l'Alchimiste fou (3) rapportait **+6**.
Le glouton a payé +1 et +2 des places qui valaient +4 et +6. Il a fait deux fois le meilleur choix **du moment**, et c'est précisément ce qui l'a ruiné.
**Question 4 :**
Parce que c'est la définition même d'un algorithme glouton : **il ne revient jamais sur un choix déjà fait**. Arrivé au booster 4, il « voit » bien que le Dragon de givre serait excellent, mais son quota est plein et le Gardien de pierre est déjà dans le deck — il ne peut plus l'échanger.
Ici la règle du jeu et la règle de l'algorithme coïncident : dans un draft, une carte écartée est réellement perdue.
Plus profondément, au booster 1 l'algorithme **n'avait aucun moyen de savoir** qu'un Dragon de givre l'attendait au booster 4 : il décide avec une vision purement locale. C'est pour cela qu'un algorithme glouton est une **heuristique** — il donne vite une solution correcte, pas forcément la meilleure.
</details>
---
## Exercice 6 (Moyen) : Réflexion
1. Dans l'exercice 4, on a maximisé le **nombre** de streams. Si on voulait maximiser la **rémunération totale**, l'algorithme glouton donnerait-il le même résultat ?