Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc oko otkrivanja bug-a i optimizacije koda

[es] :: Python :: Pomoc oko otkrivanja bug-a i optimizacije koda

[ Pregleda: 2453 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

StefanJer91
Stefan Jeremic
Beograd

Član broj: 121923
Poruke: 160
*.kalik.info.



Profil

icon Pomoc oko otkrivanja bug-a i optimizacije koda28.05.2007. u 11:13 - pre 205 meseci
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
The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle.
 
Odgovor na temu

StefanJer91
Stefan Jeremic
Beograd

Član broj: 121923
Poruke: 160
*.kalik.info.



Profil

icon Re: Pomoc oko otkrivanja bug-a i optimizacije koda28.05.2007. u 11:19 - pre 205 meseci
Za svaki slucaj ostavio sam i predjasnji kod

Code:



class Casa:
    global case
    def __init__(self, zapremina, mesto):
        self.z = zapremina
        self.preliveno= 0
        self.p = 0
        self.m = mesto #red i meso napr 3 red 2 mesto
    def prelij(self): 
        for casa in case:
            if casa.m == (self.m[0]+1,self.m[1])\
               or casa.m == (self.m[0]+1,self.m[1]+1):
                casa.puni(self.preliveno/2.)
                
    def puni(self, value):
        self.p+=value
        self.preliveno = self.p-self.z
        if self.p > self.z:
            self.p = self.z
            self.prelij()


redovi = input('Unesi broj redova: ')
V = input('Unesi zapreminu case: ')
kol = input('Unesi kolicinu sampanjca: ')

sve = []
for red in range(redovi):
    sve.append(range(red+1))
brcasa = 0
for x in sve:
    brcasa+=len(x)



case = []
for red in sve:
    for poz in red:
        case.append(Casa(V, (sve.index(red), poz)))
case[0].puni(kol)
      
while 1:
    x = input('Unesi red u kom se nalazi casa: ')
    y = input('Unesi koja je casa po redu: ')
    for casa in case:
        if casa.m == (x-1,y-1):
            print casa.p

The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle.
 
Odgovor na temu

StefanJer91
Stefan Jeremic
Beograd

Član broj: 121923
Poruke: 160
*.mainstream.co.yu.



Profil

icon Re: Pomoc oko otkrivanja bug-a i optimizacije koda30.05.2007. u 18:59 - pre 205 meseci
Ahm, zar niko ne moze da izdvoji malo vremena i pruzi mi pomoc... Hajde molim vas, znam da ovde ima puno iskusnijih ljudi od mene koji bi mogli da nadju resenje za ovaj problem.
The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle.
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Pomoc oko otkrivanja bug-a i optimizacije koda01.06.2007. u 14:45 - pre 205 meseci
Poceo sam detaljnije da proucavam tvoj kôd. Fundamentalna stvar koja, verujem, nije adresirana u kôdu je cinjenica da se neke od casa (konkretno unutrasnje case) pune duplo brze od spoljasnjih (jer imaju dve case iznad iz kojih se preliva sampanjac).

Malo sam kratak sa vremenom ali cu probati da posaljem svoje resenje sto pre.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

StefanJer91
Stefan Jeremic
Beograd

Član broj: 121923
Poruke: 160
*.kalik.info.



Profil

icon Re: Pomoc oko otkrivanja bug-a i optimizacije koda01.06.2007. u 18:46 - pre 205 meseci
Ok, unapred hvala. Nadam se da ti nece oduzeti puno vremena.
The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle.
 
Odgovor na temu

StefanJer91
Stefan Jeremic
Beograd

Član broj: 121923
Poruke: 160
*.mainstream.co.yu.



Profil

icon Re: Pomoc oko otkrivanja bug-a i optimizacije koda13.06.2007. u 18:28 - pre 205 meseci
Alex kako napredujes, ako jos radis?
The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle.
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Pomoc oko otkrivanja bug-a i optimizacije koda14.06.2007. u 11:06 - pre 205 meseci
Nadam se da cu uspeti da zavrsim kako izmene na tvom kôdu, tako i moju (concurrent) verziju sad za vikend. Izvini na kasnjenju, posao pritegao..

Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

[es] :: Python :: Pomoc oko otkrivanja bug-a i optimizacije koda

[ Pregleda: 2453 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.