元胞自動機(cellular automata) 是離散而抽象的計算系統。元胞自動機在時間和空間上是離散的,最小單位是簡單元胞(單元格)。每個元胞會產生有限數量的狀態集,後續元胞由其鄰域元胞的狀態確定。這裡所說的領域元胞,是指當前元胞的前乙個元胞(記作元胞a)以及元胞a左右兩個元胞。也就是說,鄰域元胞總共包含三個元胞。給定初始層的狀態,基於一定規則,我們可以不斷更新下一層元胞的狀態。通俗的講,元胞自動機就是基於一定規則的「繁衍機器」。
我們在控制台演示元胞自動機程式。
這裡,我們選取的元胞狀態只有兩種,分別為 0 和 1。每一層由 64 個元胞組成,若元胞狀態為 1,那麼控制台將列印星號(*);如果元胞狀態為 0,那麼控制台將列印連字元(-)。也就是說,每一行由 64 個混合星號與連字元的圖案組成。
那麼,我們如何確定每一行的狀態呢?
import time
defprint_seq
(seq, speed=
0.5)
:for item in seq:
if item:
print
('*'
, end='')
else
:print
('-'
, end='')
print(''
) time.sleep(speed)
class
cell
:def
__init__
(self, deepth=31)
: self.ca =[0
if i !=
31else
1for i in
range(64
)]self.ca_new =
self.deepth = deepth
defprocess
(self)
: print_seq(self.ca)
for i in
range
(self.deepth)
: self._rule(
) print_seq(self.ca_new)
self.ca = self.ca_new
self.ca_new =
def_rule
(self)
:for i in
range(64
):if0
< i <63:
if self.ca[i -1]
== self.ca[i +1]
:0)else:1
)elif i ==0:
if self.ca[1]
:1)else:0
)else
:if self.ca[62]
:1)else:0
)def
main()
: cell = cell(
) cell.process(
)if __name__ ==
'__main__'
: main(
)
Langton螞蟻 簡單的元胞自動機(2)
參考書目 元胞自動機理論研究及其 應用 科學出版社langton螞蟻 演化規則 1 若螞蟻處於黑格,則左轉90度,將格仔塗白 2 若螞蟻處於白格,則右轉90度,將格仔塗黑 include stdafx.h include include include include includeint main...
Python實現最簡單的雙人聊天程式
程式分為伺服器端和客戶端,兩者都是基於tcp協議來進行通訊的。1 伺服器端 coding utf 8 匯入相關包 import socket import sys import time isotimeformat y m d x 時間格式 host 本機ip port 8888 埠號 建立流式套接...
最簡單的IdentityServer實現 Api
建立asp.net core web api專案identityserver.easydemo.api 2引用identityserver4.accesstokenvalidation 3新增介面檔案identitycontroller.cs,用於測試授權 如果你直接訪問http localhost...