遊戲規則如下:
給定單元的鄰居是與它在垂直,水平或對角上的8個單元。
如果1個單元為活的,但沒有鄰居單元是活的,或者僅有乙個鄰居單元是活的,則在下一代,此單元
會因為孤獨而死亡。
如果1個單元周圍有2個或者3個鄰居單元為生,則該單元在下一代也是活的。
如果1個單元是死的,則在下一代,如果它剛好有3個鄰居單元是活的,則此單元變成活的。
所有其它死的單元在下一代仍然是死的。
如果1個單元為活的,且有4個或者4個以上鄰居單元是活的,則在下一代,此單元會因為擁塞而死亡。
所有出生和死亡都剛好在同一時間發生,則此單元的死亡有助於另乙個單元的出生,但它不能通過
減少擁塞而阻止其他單元的死亡;正在出生的單元也不能保護或者殺死上一代中活的單元。
規則簡述為:
- 當該元胞為存活狀態時,周圍有2-3個存活元胞,其狀態為活;否則為死。
- 當該元胞為死亡狀態時,周圍有3個存活元胞,該元胞則復活。12
3456
789
5表示中心元胞,1—9為其鄰居。在程式設計時為使用矩陣表示其狀態,以i表示行,j表示列,可寫成如下形式。
i-1,j-1
i-1,j
i-1,j+1
i,j-1i,ji,j+1
i+1,j-1i+1,ji+1,j+1
i,j表示中心元胞,其餘為其鄰居。
依此規則進行迭代變化,使單元生生死死,會得到一些有趣的結果。該遊戲之所以被稱為「生命遊戲」,是因為其簡單的遊戲規則,反映了自然界中的生存規律:如果乙個生命,其周圍的同類生命太少的話,會因為得不到幫助而死亡;如果太多,則會因為得不到足夠的資源而死亡。
s=50; % 棋盤寬,棋盤是方的,即每行每列可以有100個元包自動機
w=8; % 每乙個元包的畫素寬度
board=zeros(w*s,s*w); %棋盤
state=zeros(s,s); %元包自動機的狀態
newstate=zeros(s,s);
%% 初始化
for i=1:s
for j=1:s
if rand<0.4 % 隨機在棋盤上以0.4的生存概率設定自動機狀態
state(i,j)=1; % 其實分的隨機設定狀態會導致非常離散的點,最後收斂時棋盤上剩下些孤立的點
endend
endfigure;
%% 更新狀態
for k=1:1000
for i=1:s
for j=1:s
% 計算鄰居著活著的個數
cnt=0;
%邊界上的元胞無法取其8鄰居
if i-1>0&&j-1>0%左上鄰居
cnt=cnt+state(i-1,j-1);
endif i-1>0&&j+1<=s%右上鄰居
cnt=cnt+state(i-1,j+1);
endif i+1<=s&&j+1<=s%右下鄰居
cnt=cnt+state(i+1,j+1);
endif i+1<=s&&j-1>0%左下鄰居
cnt=cnt+state(i+1,j-1);
endif j-1>0%左鄰居
cnt=cnt+state(i,j-1);
endif j+1<=s%右鄰居
cnt=cnt+state(i,j+1);
endif i-1>0%上鄰居
cnt=cnt+state(i-1,j);
endif i+1<=s%下鄰居
cnt=cnt+state(i+1,j);
end% 更新狀態、著色
newstate(i,j)=state(i,j);
if state(i,j)==0
if cnt==3
newstate(i,j)=1;
endelseif state(i,j)==1
if cnt<2||cnt>3%0,1,4,5,6,7,8
newstate(i,j)=0;
endend
if newstate(i,j)==0
board(((i-1)*w+1):i*w,((j-1)*w+1):j*w)=0;
else
board(((i-1)*w+1):i*w,((j-1)*w+1):j*w)=255;
endend
endstate=newstate;
imshow(board);
pause(0.3);
end
規則參考
「愛加密」 動態脫殼法
測試環境為 安卓2.3 ida6.6 下面看具體操作步驟 具體怎樣用ida動態除錯我就不多說了,網上己經有很多文章了,下面直接進入正題。1.準備好調式環境後 用ida附加程序。2.附加成功後按 g 鍵 跳到dvmdexfileopenpartial函式與fopen函式與fgets函式去下好斷點。3....
動態規劃 常見做法 填表法
填表法,是dp最常見的做法。以未知的量為基礎,通過已知的量來重新整理當前的未知量。這是dp最基礎的做法。通常,我們大多題目都可以用這種方法實現。楊輝三角 description 楊輝三角是二項式係數在三角形中的一種幾何排列。它的每個數等於它上方兩數之和,每行數字左右對稱,由 1 開始逐漸變大。1 1...
揹包問題 蠻力法,動態規劃
給定重量分別為,價值分別為的n件物品,和乙個承重為w的揹包。求這些物品中乙個最有價值的子集,並能裝到揹包中。揹包問題的蠻力解法是窮舉這些物品的所有子集,找出能夠裝到揹包中的所有子集,並在這些子集中找出價值最大的子集。揹包問題 蠻力法 include include define maxx 9999 ...