life遊戲 最簡元胞自動機

2021-10-19 05:36:01 字數 1253 閱讀 5922

1)二維陣列

想象乙個二維陣列。它的所有元素取值為1或者0。取值為1表示在該元素的位置有乙個生命,取值為0表示此位置沒有生命。

2)鄰居

3×3的二維陣列,與中心元素相鄰的有8個元素,設想為各元素有8個鄰居。

3)生存

生命代代相傳,生生不息。如果某個生命有2個,或者3個鄰居,則該生命能夠存活到下一代。

4)繁衍

如果某個空格有3個鄰居,則到下一代,該空格將誕生乙個新生命。

import numpy as np

import matplotlib.pyplot as plt

r =40

# 行數

c =90

# 列數

a = np.zeros(

(r+2

, c+2)

)# 記錄生命的二維陣列a[1

:r+1,1

:c+1

]= np.random.randint(0,

2,(r,c)

)b = a.copy(

)# 用b計算鄰居個數,以更新a

plt.ion(

)plt.xticks(

none

)for step in

range

(200):

for i in

range(1

, r+1)

:for j in

range(1

, c+1)

: x = b[i-

1:i+

2,j-

1:j+2]

.sum()

-b[i,j]

# 計算鄰居個數

if x ==3:

# 3個鄰居,生命延續或誕生新生命

a[i,j]=1

elif x !=2:

# 不是2個鄰居,生命終結

a[i,j]=0

plt.clf(

) plt.imshow(a)

plt.pause(

0.2)

# 慢慢來

b[:]

= a # 更新b,而不是引用

plt.ioff(

)

在命令列中執行效果更好,如文首的gif所示

c> python life.py
【上乙個謎題】**急轉彎——tupper(塔珀自指公式)

【下乙個謎題】**急轉彎——高維線性可分

元胞自動機

即生命遊戲,今天下午迅雷的筆試程式設計題。簡單的版本,給定當前的狀態,給出下乙個時刻的狀態。status函式獲取某點當時周圍的活的細胞數量,寫的比較渣 include include include using namespace std define max 10010 int status ve...

元胞自動機

這 幾個關於元胞自動機的問題 元胞自動機 森林火災模型 規則 1 正在燃燒的樹變成空格位 2 如果綠樹格位的最近鄰居中有乙個樹在燃燒,則它變成正在燃燒的樹 3 在空格位,樹以概率p生長 4 在最近的鄰居中沒有正在燃燒的樹的情況下樹在每一時步以概率f 閃 電 變為正在燃燒的樹。參考文獻 祝玉學,趙學龍...

元胞自動機

元胞自動機 ca 是一種用來 區域性規則和區域性聯絡的方法。典型的元胞自動機是定義在網格上的,每乙個點上的網格代表乙個元胞與一種有限的狀態。變化規則適用於每乙個元胞並且同時進行。典型的變化規則,決定於元胞的狀態,以及其 4 或 8 鄰居的狀態。森林火災元胞自動機模型 一片森林由於自然或人為原因,有一...