Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1314:cellulaere_automaten

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1314:cellulaere_automaten [2014/02/13 16:16]
Jimmendorf
ws1314:cellulaere_automaten [2016/05/10 14:46] (aktuell)
Zeile 97: Zeile 97:
     ​     ​
 <code python> <code python>
- 
 import numpy as np import numpy as np
 import matplotlib.pyplot as plt import matplotlib.pyplot as plt
- +  
-x = 10 +x = 50 
-y = 10 +y = 50 
 + 
 def setup(x,y): def setup(x,y):
     Z = np.random.randint(2,​ size = (x,y))     Z = np.random.randint(2,​ size = (x,y))
     return Z     return Z
-    ​ +  
 + 
 def deamon(x,​y):​ def deamon(x,​y):​
- 
     return (np.random.randint(x),​np.random.randint(y))     return (np.random.randint(x),​np.random.randint(y))
 + 
 +def updateB(Z):
 +    i,j = deamon(x,y)
 +    k = (Z[(i-1)%x,​(j-1)%y]+Z[(i-1)%x,​j]+Z[(i-1)%x,​(j+1)%y]\
 +        +Z[i,​(j-1)%y]+Z[i,​(j+1)%y]+Z[(i+1)%x,​(j-1)%y]+\
 +        Z[(i+1)%x,​j]+Z[(i+1)%x,​(j+1)%y])+Z[(i+2)%x,​j]+\
 +        +Z[(i-2)%x,​j]+Z[i,​(j+2)%y]+Z[i,​(j-2)%y]
 +    if Z[i,j] == 1:
 +        if (k < 3 or k > 6):
 +            Z[i,j] = 0
 +    else:
 +        if k == 6:
 +            Z[i,j] = 1
 +    return Z
  
-def update(Z):+def updateA(Z):
     i,j = deamon(x,y)     i,j = deamon(x,y)
-    k = (Z[i-1,​j-1]+Z[i-1,​j]+Z[i-1,​(j+1)%y]+    k = (Z[(i-1)%x,(j-1)%y]+Z[(i-1)%x,j]+Z[(i-1)%x,​(j+1)%y]+Z[i,​(j-1)%y]+Z[i,​(j+1)%y]+Z[(i+1)%x,​(j-1)%y]+Z[(i+1)%x,​j]+Z[(i+1)%x,​(j+1)%y])
-        ​+Z[i,​j-1]+Z[i,​(j+1)%y]+Z[(i+1)%x,​j-1]++
-        ​Z[(i+1)%x,​j]+Z[(i+1)%x,​(j+1)%y])+
     if Z[i,j] == 1:     if Z[i,j] == 1:
         if (k > 3) or (k < 2):         if (k > 3) or (k < 2):
Zeile 126: Zeile 136:
     return Z     return Z
  
-def killall(Z): 
-    i,j = deamon(x,y) 
-    Z[i,j]= 0 
-    return Z 
-    ​ 
 A = setup(x,y) A = setup(x,y)
  
 plt.ion() plt.ion()
  
-im=plt.imshow(A,​interpolation='​nearest'​)+im=plt.imshow(A,​interpolation='​nearest'​, cmap = plt.cm.gray_r)
 plt.xticks([]),​plt.yticks([]) plt.xticks([]),​plt.yticks([])
  
-for s in xrange(100): +for s in range(10000000): 
- A = killall(A) + A = updateB(A) 
- im.set_data(A) + if s%100 == 0: 
- plt.draw()+ im.set_data(A) 
 + plt.draw()
  
 plt.ioff() plt.ioff()
 plt.show() plt.show()
 +
 +
 +#für josh!:
 +#codezeilen die du wolltest
 +#viel spaß
 +import numpy as np
 +import matplotlib.pyplot as plt
 + 
 +x = 100
 +y = 100
 + 
 +def setup(x,y):
 +    #'''​Erstellung der Welt mit Zuflliger An/Aus Verteilung ​ '''​
 + Z = np.random.randint(2,​ size = (x,y))
 + return Z
 + 
 + 
 +def deamon(x,​y):​
 + #'''​Whlt zufllige Zelle fr asynchrones Update aus '''​
 + return (np.random.randint(x),​np.random.randint(y))
 + 
 +def intrinsic(Z,​ rule, mode):
 + i,j = deamon(x,y)
 + if mode == '​2-radial':​
 + k = (Z[(i-1)%x,​(j-1)%y]+Z[(i-1)%x,​j]+Z[(i-1)%x,​(j+1)%y]\
 + +Z[i,​(j-1)%y]+Z[i,​(j+1)%y]+Z[(i+1)%x,​(j-1)%y]+\
 + Z[(i+1)%x,​j]+Z[(i+1)%x,​(j+1)%y])+Z[(i+2)%x,​j]+\
 + +Z[(i-2)%x,​j]+Z[i,​(j+2)%y]+Z[i,​(j-2)%y]
 + if mode == '​Moore':​
 + k =(Z[(i-1)%x,​(j-1)%y]+Z[(i-1)%x,​j]+Z[(i-1)%x,​(j+1)%y]\
 + +Z[i,​(j-1)%y]+Z[i,​(j+1)%y]+Z[(i+1)%x,​(j-1)%y]+\
 + Z[(i+1)%x,​j]+Z[(i+1)%x,​(j+1)%y])
 + if rule=='​Diagonal':​
 + if Z[i,j] == 1:
 + if (k < 3 or k > 6):
 + Z[i,j] = 0
 + else:
 + if k == 6:
 + Z[i,j] = 1
 + if rule=='​Life':​
 + if Z[i,j] == 1:
 + if (k > 3) or (k < 2):
 + Z[i,j] = 0
 + else:
 + if k == 3:
 + Z[i,j] = 1
 + if rule == '​Striche':​
 + if Z[i,j] ==1:
 + if k > 2:
 + Z[i,j] = 0
 + else:
 + if k == 2:
 + Z[i,j] = 1
 + return Z
 +
 +
 +def environment(Z):​
 + i,j = deamon(x,y)
 + Z[i,j] = 1
 + return Z
 +
 +
 +A = setup(x,y)
 +stoer = (True, 21)
 +plt.ion()
 +
 +im=plt.imshow(A,​interpolation='​nearest',​ cmap = plt.cm.gray_r)
 +plt.xticks([]),​plt.yticks([])
 +
 +for s in range(10000000):​
 + A = intrinsic(A,​ '​Diagonal',​ '​2-radial'​)
 + if stoer[0] == True:
 + if s%stoer[1] == 0:
 + A = environment(A)
 + if s%100 == 0:
 + im.set_data(A)
 + plt.draw()
 +
 +plt.ioff()
 +plt.show()
 +
  
 </​code>​ </​code>​
ws1314/cellulaere_automaten.1392304562.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)