itc:tps:tp5:exercice2
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| itc:tps:tp5:exercice2 [2022/01/17 19:51] – goupillwiki | itc:tps:tp5:exercice2 [2022/01/18 13:46] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 29: | Ligne 29: | ||
| ^ indice ^ nom ^ poids ^ valeur ^ | ^ indice ^ nom ^ poids ^ valeur ^ | ||
| - | | 0 | collier | 1 | + | | 0 | collier | 1 |
| - | | 1 | écran | + | |
| - | | 1 | écran | + | |
| - | | 1 | écran | + | |
| | 1 | écran | | 1 | écran | ||
| + | | 2 | globe | 7 | 120 | | ||
| + | | 3 | lampe | 5 | 40 | | ||
| + | | 4 | fleur | 4 | 10 | | ||
| + | | 5 | écrin | ||
| + | | 6 | coffre | ||
| + | | 7 | livre | 5 | 30 | | ||
| + | | 8 | caisse | ||
| + | | 9 | enclume | 20 | 20 | | ||
| + | | 10 | statuette | 6 | 250 | | ||
| + | | 11 | livre rare | 5 | 220 | | ||
| - | ===== Implémentation ===== | + | Dans le programme on disposera d'une liste ayant cette forme : |
| + | <code python> | ||
| + | liste = [ | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | ===== Rappel sur le tri ===== | ||
| + | |||
| + | Les items du tableau, il faut préciser par rapport à quelle mesure on doit les ordonner. On doit donc indiquer au tri une fonction $item \mapsto evaluation$. | ||
| + | |||
| + | Par exemple si on veut trier par valeur croissante, il nous faut : $item \mapsto valeur(item)$. On peut définir cette fonction de façon classique : | ||
| + | |||
| + | <code python> | ||
| + | def critere_valeur(item): | ||
| + | return item[" | ||
| + | </ | ||
| + | |||
| + | Puis le tri sera : | ||
| + | |||
| + | <code python> | ||
| + | liste.sort(key = critere_tri) | ||
| + | </ | ||
| + | |||
| + | et si on veut un ordre décroissant, | ||
| + | |||
| + | <code python> | ||
| + | liste.sort(key = critere_tri, | ||
| + | </ | ||
| + | |||
| + | On peut aussi (ce sera mieux ici) modifier le critère : si on veut trier par valeur décroissante, | ||
| + | |||
| + | <code python> | ||
| + | def critere_valeur(item): | ||
| + | return -item[" | ||
| + | </ | ||
| + | |||
| + | Le '' | ||
| + | |||
| + | ===== Implémentation ===== | ||
| - | Pour l’écriture des fonctions, on suppose que l’on dispose d’une liste L = [[1, p1, v1], ..., [n, pn, vn]] | + | - On a besoin |
| - | de longueur n et d’un poids maximal P . | + | * par valeur décroissante, |
| - | Pour une exploration numérique ou faire un test, on prendra | + | |
| - | L = [[1, 14, 126], [2, 2, 32], [3, 5, 20], [4, 1, 5], [5, 6, 18], [6, 8, 80]] et P = 15. | + | |
| - | On aura besoin de classer nos objets | + | - Voici l' |
| - | par rapports ri décroissants. Nous avons déjà vu des algorithmes de tri et nous en verrons d’autres | + | FONCTION sac_a_dos |
| - | encore plus tard. Pour l’instant, | + | ENTRÉES |
| - | Python qui permet de trier une liste en précisant | + | liste: tableau contant la liste des objets avec leur nom, poids et valeur |
| - | sorted(L, key = lambda x : x[i]) qui trie la liste des x suivant | + | P: poids maximum que peut emporter |
| - | sorted(L, key = lambda x : x[i], reverse = True) qui fait la même chose dans l’ordre dé- | + | critere: |
| - | croissant. | + | SORTIE |
| - | Ainsi pour la liste L donnée ci-dessus, l’instruction T = sorted(L, key = lambda x : x[1]) | + | un tuple contenant : |
| - | crée une variable T qui est la liste L classée par poids croissants et l’instruction U = sorted(L, key | + | la liste des noms, |
| - | = lambda x : x[2], reverse = True) crée une variable U qui est la liste L classée par valeurs | + | le poids du sac, |
| - | décroissantes | + | |
| + | DÉBUT | ||
| + | initialiser contenu à vide, poids et valeur à 0 | ||
| + | trier la liste suivant | ||
| + | POUR CHAQUE item DE liste FAIRE | ||
| + | SI le sac a assez de place pour cet item ALORS | ||
| + | ajouter le nom de cet item au contenu | ||
| + | ajouter le poids et la valeur de cet item à poids et valeur | ||
| + | FIN | ||
| + | FIN | ||
| + | RENVOYER contenu, poids, valeur | ||
| + | </ | ||
| + | | ||
| + | - Comme dans ce cas le tableau est de petite taille, cherchez le meilleur sac en force brute (c'est à dire en essayant tous les cas) et comparez avec la réponse obtenue avec l' | ||
| + | - comparez | ||
itc/tps/tp5/exercice2.1642445517.txt.gz · Dernière modification : de goupillwiki
