Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: cp1252 -*-
- from math import * #sqrt
- from time import *
- from random import *
- class cSac():
- def __init__(self,contenance,valeur):
- #attribut de l'objet : nom
- self.contenance = contenance
- self.valeur = valeur
- self.malisteobjets = []
- def afficher(self):
- print 10000 - self.contenance
- print 5000 - self.valeur
- for j in sac.malisteobjets:#permet d'afficher les objets contenus dans le sac
- print j.nom
- class cComestible():
- def __init__(self,n,p,prix):
- self.nom = n #attribut de l'objet : nom
- self.poids = p
- self.prix = prix
- self.rapport= float(self.prix) / self.poids
- def afficher(self):
- print self.nom
- print self.poids
- print self.prix
- def __repr__(self):
- return self.nom
- def TrierListe(maListeObjets): #permet de creer une liste maListeRapport triee par ordre decroissant
- maListeRapport = []
- for objet in maListeObjets:
- maListeRapport.append(objet.rapport)
- maListeRapport.sort(reverse = True)
- print maListeRapport
- return maListeRapport
- maListe1 = []
- sac = cSac(10000,5000) #instanciation du sac de contenance 10 000g et dont le contenu ne doit pas depasser 5000 euros
- sac.afficher()
- pain = cComestible("pain",4000,5) #instanciation d'un objet pain de classe nourriture avec 100kcal, 4kg 5 dollars --1st item--
- pain.afficher()
- eau = cComestible("cristaline",3000,3) #instanciation d'un objet eau de classe eau avec 0cal, 3kg 3 dollars --3rd item--
- eau.afficher()
- whisky = cComestible("JackDaniel",8000,10) #instanciation d'un objet de classe alcool de 500cal, 8kg, 10 dollars --2nd item--
- whisky.afficher()
- cigarette = cComestible("Marlboro",2000,3) #instanciation d'un objet de classe cigarette de 0cal, 2kg, 3 dollars --5th item--
- cigarette.afficher()
- riz = cComestible("riz",5000,2) #instanciation d'un objet riz de classe nourriture avec 300kcal, 5kg 2 dollars --4th item--
- riz.afficher()
- maListeObjets = [pain, eau, whisky, cigarette, riz]
- maListeRapport = TrierListe(maListeObjets)
- maListeObjets.sort(key = lambda elt : float(elt.rapport), reverse = True)#permet de trier la liste afin d'obtenir les items classés selon leur rapport prix/poids par ordre decroissant
- #print maListeObjets
- for i in maListeObjets: #permet d'afficher les objets tries
- print i
- for item in maListeObjets:
- while((sac.contenance >= item.poids) and (item in maListeObjets)):
- sac.malisteobjets.append(maListeObjets.pop(maListeObjets.index(item)))
- sac.contenance = float(sac.contenance) - item.poids
- sac.valeur = float(sac.valeur) - item.prix
- sac.afficher()
- # ALGORITHME GENETIQUE !!!!!!!!!!!!!
- def genererSac(nbSacs,contenance,valeur):
- listesac = []
- for k in range(nbSacs):
- listesac[k] = cSac(contenance,valeur)
- for j in range(nbSacs):
- for l in listesac[j].malisteobjets: #permet d'afficher les objets contenus dans le sac
- print l.nom
- return listesac
- genererSac(100,10000,5000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement