no globals[A] nemozem pouzit pretoze....

Asi musim viac osvetlit na com robim.

Robim Celularny Automat. Je to vlastne pole buniek. Kazda bunka ma nejaky stav, ktory sa meni v kazdej iteracii na zaklade prechodovej funkcie. No a prechodova funkcia meni stav bunky na zaklade okolia bunky podla danych pravidiel CA. Okolie je bud

Mooreove okolie
xxx
xbx
xxx

alebo von Neumanove okolie
x
xbx
x

Toto vsak nie je podstatne. Podstatne je to, ze kvoli zrychleniu vypoctov, kazda bunka je trieda, ktora vie svoj stav a obsahuje referencie na svoje okolie. T.j. ma ako clensku premennu pole, v ktorom su referencie na susedov bunky. Cize

vesmir = numpy.empty((x,y),dtype=object)
for x in xrange(x):
 for y in xrange(y):
bunka = vesmir[x][y] bunka.okolie = numpy.empty((3,3),dtype=object)
   bunka.okolie[1][1] = vesmir[x-1][y-1]
   bunka.okolie[1][2] = vesmir[x][y-1]
   bunka.okolie[1][3] = vesmir[x+1][y-1]
   bunka.okolie[2][1] = vesmir[x-1][y]
  atd....

Samozrejme, ze u seba to mam napisane inak - toto je nazorne pre pochopenie.

Ako spravim to, ze ked zmenim napr. vesmir[5][5], aby sa mi zmeny reflektovali aj do okoli vsetkych buniek, ktore maju bunku vesmir[5][5] ako svoje okolie

Dufam, ze som to vysvetlil jasne. Ak nie pytajte sa upresnim.

balky

Jaroslav Pachola wrote:

Ahoj,

Cize este raz chcem aby sa B odkazovalo aj na nove pole s menom A. Da sa
to v pythone vyriesit?

balky


moznosti je nekolik. Napriklad se muzes uplne vykaslat na nejake permanentni B a psat misto nej globals()['A']. Ale daleko lepsi je podle me udelat tridu ve stylu:

class A(object):
 DIMENSION = 1000
        
 def __init__(self):
   self.array =  self.resetArray()

 def resetArray(self):
   self.array = numpy.zeros(self.DIMENSION)

a = A()
b = a
a.resetArray()
# b je v klidu

# nebo nejak tak

JP
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python


_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem