這是使用Rust及WebAssembly的未發佈說明文件,已發佈的說明文件已在Rust與WebAssembly的說明文件主要網站提供。在此文件中說明的功能可能無法在Rust及WebAssembly工具的已發佈版本中使用。

康威的生命遊戲規則

注意:如果您已經熟悉康威的生命遊戲與其規則,請跳至下一章節!

維基百科對康威的生命遊戲規則做了極好的說明

生命遊戲的宇宙是一個無限的正交網格,由方格組成,每個方格都處於兩個可能的狀態之一,存活或死亡,或「已填充」或「未填充」。每個方格會與其八個鄰近方格互動,也就是那些水平、垂直或對角線相鄰的方格。在每個時間步驟中,會發生以下轉變

  1. 任何存活方格若少於兩個存活鄰近方格,就會死亡,就像人口過少導致死亡。

  2. 任何存活方格若有兩個或三個存活鄰近方格,就會存活到下一代。

  3. 任何存活方格若有超過三個存活鄰近方格,就會死亡,就像人口過剩導致死亡。

  4. 任何死亡方格若有正好三個存活鄰近方格,就會變成一個存活方格,就像繁殖導致出生。

初始圖樣構成系統的種子。第一代是透過同時將上述規則套用在種子中的每個儲存格來建立的——出生與死亡同時發生,且發生此事的離散時刻有時會稱作滴答(換句話說,每一代都是前一代的純函數)。繼續重複套用這些規則來建立新的世代。

考慮下述初始宇宙

Initial Universe

我們可以透過考慮每個儲存格來計算下一代。左上角的儲存格已死亡。規則 (4) 是適用於死亡儲存格的唯一轉換規則。然而,由於左上角的儲存格沒有確切三個活鄰居,因此不適用轉換規則,且它在下一代中會維持死亡狀態。第一行中的每個其他儲存格也是如此。

當我們考慮第二行第三欄的左上角活儲存格時,事情開始變有趣。對於活儲存格,前三個規則中的任何一個都有可能適用。以這個儲存格的案例來說,它只有一個活鄰居,因此適用規則 (1):這個儲存格在下一代中將會死亡。底部活儲存格也會有相同命運。

中間的活儲存格有兩個活鄰居:左上角和左下角的活儲存格。表示適用規則 (2),且它在下一代中將會維持活的狀態。

最後兩個有趣的案例是中間活儲存格左右兩側的死亡儲存格。三個活儲存格都是這兩個儲存格的鄰居,表示適用規則 (4),且這些儲存格在下一代中將會變為活儲存格。

將所有內容集合起來,我們在下一代滴答後將會得到這個宇宙

Next Universe

從這些簡單的決定性規則中,產生了奇妙且令人興奮的行為

高斯帕滑翔槍脈衝星太空船
Gosper's glider gun Pulsar Lighweight space ship

練習

  • 手動計算我們範例宇宙的下一代滴答。注意到任何熟悉的東西了嗎?

    答案

    它應該是範例宇宙的初始狀態

    Initial Universe

    這種圖樣是週期性的:每兩個滴答後會回復至初始狀態。

  • 你能找到一個穩定的初始宇宙嗎?亦即,一個的每個世代都一樣的宇宙。

    答案

    穩定的宇宙有無限多個!平凡穩定的宇宙是空的宇宙。二乘二方塊的活儲存格也是一個穩定的宇宙。