cours_NSI/scripts/algo_glouton.py

33 lines
1.0 KiB
Python

# dictionnaire :
# - clé : nom de l'objet
# - valeur : tableau [poids, prix]
inventaire = {"A": [13,700], "B": [12,650], "C": [6,250], "D": [6,400],"E": [5, 100]}
# Calcule la valeur massique en divisant la 2ème valeur du tableau par la première
# on ajoute cela à la valeur du dictionnaire
for objet, (poids, prix) in inventaire.items():
inventaire[objet].append(prix/poids)
# Trie le tableau en ordre décroissant suivant la valeur massique.
def f(dico: dict, col = 2):
tableau_trié = sorted(dico.items(), key = lambda a: a[1][col], reverse=True)
return {clé:valeur for clé, valeur in tableau_trié}
inventaire = f(inventaire, 2)
poids_max = 30
# Algorithme glouton
def gloutonnerie(inventaire : dict, poids_max:int=30):
sac_a_dos = []
poids_sac = 0
for objet, (poids, prix, v_massique) in inventaire.items():
if poids_sac + poids <= poids_max:
sac_a_dos.append(objet)
poids_sac += poids
return sac_a_dos, poids_sac
print(gloutonnerie(inventaire, poids_max))