maths-code
Site Admin
Messages : 18 Enregistré le : mer. avr. 19, 2023 9:02 pm
Message
par maths-code » ven. sept. 15, 2023 11:56 am
Le problème du sac à dos, stratégie 1: prendre l'objet de plus grande valeur
Code : Tout sélectionner
def strat_1b(liste_objet, masse_dispo):
sac = []
i = 0
while masse_dispo > 0:
if liste_objet[i][1] <= masse_dispo:
masse_dispo = masse_dispo-liste_objet[i][1]
sac.append(liste_objet[i])
i = i + 1
return sac
maison = [(9700, 7), (3500, 8), (2600, 3)]
strat_1b(maison, 20)
maths-code
Site Admin
Messages : 18 Enregistré le : mer. avr. 19, 2023 9:02 pm
Message
par maths-code » mar. sept. 19, 2023 7:39 pm
Code : Tout sélectionner
def rendu_monnaie(systeme:list, montant:int)->int:
"""
:param system (list): système de pièces
:param montant (int): somme à rendre
:return nbre (int) : nombre de pièces à rendre
>>> rendu_monnaie([1, 2, 5, 10], 8)
3
>>> rendu_monnaie([1, 2, 5, 10], 23)
4
>>> rendu_monnaie([1, 2, 5, 10], 0)
0
"""
assert montant>=0, "la somme à rendre doit être positive"
nbre = 0
liste = []
i = len(systeme)-1
while montant > 0 and i>=0:
if systeme[i] <= montant:
montant = montant - systeme[i]
nbre += 1
liste.append(systeme[i])
else:
i = i-1
return liste
def rendu_dict(systeme:list, montant:int)->int:
"""
:param system (list): système de pièces
:param montant (int): somme à rendre
:return nbre (int) : nombre de pièces à rendre
>>> rendu_monnaie([1, 2, 5, 10], 8)
3
>>> rendu_monnaie([1, 2, 5, 10], 23)
4
>>> rendu_monnaie([1, 2, 5, 10], 0)
0
"""
assert montant>=0, "la somme à rendre doit être positive"
nbre = 0
i = len(systeme)-1
dico = {i: 0 for i in systeme }
while montant > 0 and i >= 0:
if systeme[i] <= montant:
montant = montant - systeme[i]
nbre += 1
dico[systeme[i]] += 1
else:
i = i-1
return dico
print(rendu_dict([1, 2, 10], 92 ))
maths-code
Site Admin
Messages : 18 Enregistré le : mer. avr. 19, 2023 9:02 pm
Message
par maths-code » jeu. sept. 21, 2023 6:44 am
Code : Tout sélectionner
def indice_maxi(L):
"""
renvoie le maximum et les indices où se il se trouve
:param L(list):
:return (tuple):
"""
liste_maxi = []
nb_max = L[0]
for i in range(len(L)):
if L[i] == nb_max:
liste_maxi.append(i)
if L[i] > nb_max:
nb_max = L[i]
liste_maxi = [i]
return (nb_max, liste_maxi)