Bu yüzden bir Conway'in Hayat Bilgisi koduyla gelmeye çalışıyordum ve bu beni buna yönlendiriyor. En verimli olanı olmayabilir, ama ben bir dilenci kodlayıcısıyım ve işleri basit tutmak istedim. Tek istediğim oyunu canlandırmak ve sadece oyunun son neslini göstermek değil. Ayrıca, oyunun sonsuza dek nasıl çalıştırılacağını bilmek isterim, çünkü bu kodun önceden belirlenmiş sayıda nesle sahip olduğunu görebilirsiniz. Bir Macbook çalıştırırken ben orada çeşitli animasyon örneklerle (ve ilgili engelleme/Nonblocking örneklerle) ile korkunç şans yaşadımDizileri bir görüntüye dönüştürmek istiyorum ve o zaman onu canlandırın.
import numpy as np
import matplotlib.pyplot as plt
x=np.random.randint(2, size=(50,50))
for b in range (0,100):
y=np.zeros((50,50), dtype=np.int)
for c in range(1,48):
for d in range(1,48):
if x[c][d]==1:
if x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]<2 or x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]>3:
y[c][d]=0
else:
y[c][d]=1
if x[c][d]==0:
if x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]==3:
y[c][d]=1
else:
y[c][d]=0
x=y.copy()
plt.imshow(x)
plt.grid(False)
plt.show()
İlgisiz, ancak tüm komşuları almak için dilimleme kullanabilirsiniz numpy zaten (np.sum 'gibi, x [i-1 kullandığından: i + 2 , j-1: j + 2]) - x [i, j] '. Ayrıca aynı sayıda komşuyu iki veya üç kez hesaplayamam, sadece bir değişken ata. Son olarak, 'imshow' için bir animasyon örneği burada verilmiştir: http://matplotlib.org/examples/animation/dynamic_image.html – roadrunner66