[ StefanJer91 @ 28.05.2007. 11:13 ] @
Pre nesto manje od mesec dana na jednom drugom forumu je bio mali porgraming chalenge na kome sam pobedio, a cilj je bio napraviti program koji moze da odredi koliko u kojoj casi ima sampanjca ako mu se na pocetku daju informacije koliko ima redova, zapreminu case (sve case su iste zapremine) i kolicinu sampanjca koji se sipa u prvu casu. A case su poredjane ovako ...Y ..YY .YYY YYYY Ovde Y predstavlja casu, sto znaci ako sipate u prvu casu vecu kolicinu od njene zapremine to ce se preliti u druge 2 case i tako redom. Ja sam uspeo to da napravim ali je program bo dosta spor sa vecim kolicinama, pa sam odlucio da ga optimizujem, i evo sta sam uradio ali u kodu ima neki bug koji ne mogu da nadjem pa bih molio malo iskusnije programere da mi pomognu i ako znaju da kazu u cemu je problem Code: #Uraditi: Napravi lepo prelivanje class Casa: def __init__(self, zapremina): self.z = zapremina self.p = 0 def prelij(self,val): for red in case: if self in red: try: mr = case.index(red) # mesto reda u matrici case[mr+1][case[mr].index(self)].puni(val/2.) case[mr+1][case[mr].index(self)+1].puni(val/2.) except:pass break def puni(self, value): self.p+= value if self.p > self.z: self.prelij(self.p - self.z) self.p = self.z redovi = input('Unesi broj redova: ') V = input('Unesi zapreminu case: ') kol = input('Unesi kolicinu sampanjca: ') case = [] for w in range(redovi): case.append([Casa(V)]*(w+1)) case[0][0].puni(kol) while 1: x = input('Unesi red u kom se nalazi casa: ') y = input('Unesi koja je casa po redu: ') print case[x-1][y-1].p Ako neko ima bolju ideju kako ovo moze da se uradi, bio bih mu zahvalan da i on prilozi svoju skriptu |