Gloutons : activité draft d'Arène (exercice débranché + TP Python)
This commit is contained in:
+118
-6
@@ -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 ?
|
||||
|
||||
|
||||
Reference in New Issue
Block a user