Un algorithme est une suite finie et non ambiguë d’instructions et d’opérations permettant de résoudre une classe de problèmes. Le domaine qui étudie les algorithmes est appelé l’algorithmique.
Wikipédia
proposition correction algo rangement
objets=[7,6,3,4,8,5,9,2]
cartons=[[] for i in range(5)]
pds_max=11
# je prends le premier objet dispo
# je le range dans le premier carton dispo
# je recommence jusqu'à ne plus avoir d'objets
def rangement(objets):
'''
>>>rangement([7,6,3,4,8,5,9,2])
[[7,3],[6,4],[8,2],[5],[9]]
'''
for objet in objets :
objet_range=False
for carton in cartons:
if objet_range==False:
if sum(carton)+objet<=pds_max:
# j'ajoute l'objet à mon carton
carton.append(objet)
objet_range=True
return cartons
Proposition de correction rendu monnaie
monnaie=[1,2,5,10,20,50,100]
monnaie.reverse()
def rendu_monnaie(prix,somme):
'''
>>>rendu_monnaie(21,30)
[5,2,2]
>>>rendu_monnaie(12,20)
[5,2,1]
'''
# je calcule la somme a rendre
# je parcours la monnaie à l'envers
# dès que je trouve une valeur inférieure ou égale
# à la somme à rendre
# je l'ajoute au rendu
# je l'enleve de la somme a rendre
# je recommence jusqu'à ne plus avoir rien à rendre
rendu=[]
somme_a_rendre=somme-prix
while somme_a_rendre>0:
on_continue=True
for piece in monnaie:
if on_continue==True:
if piece<=somme_a_rendre:
rendu.append(piece)
somme_a_rendre-=piece
on_continue=False
return rendu
proposition correction
mes_objets=[[40,12],[30,8],[30,10],[70,13]]
def rangement_sac_a_dos(max):
'''
>>>rangement_sac_a_dos(30)
[[70,13],[40,12]]
'''
sac=[]
poids_sac=0
objets=mes_objets.copy()
............................
# chercher l'objet avec la valeur max
# si je peux le mettre dans le sac
# je le mets, et je l'enleve des objets
# on recommence si possible
while ....................:
val_max=objets[0][0]
for objet in objets:
if objet[0]>val_max:
val_max=objet[0]
if poids_sac+objet[1]<=max:
sac.append(objet)
objets.remove(objet)
else:
.....................
return sac