Python 實現最簡單的元胞自動機

2021-09-10 07:10:34 字數 1553 閱讀 3420

元胞自動機(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...