概述
times= 50
ruleNumber= 30
def D2Binary8bit(i):
def Denary2Binary(n):
bStr= ''
if n== 0: return '0'
while n> 0:
bStr= str(n% 2)+bStr
n=n>> 1
return bStr
def plusZero(s):
while 8- len(s)> 0:
s= '0'+s
return s
s=Denary2Binary(i)
strTemp=plusZero(s)
#print i
return strTemp
ruleBinary=D2Binary8bit(ruleNumber)
#print "ruleBinary is"
#print ruleBinary
def rule(bit1,bit2,bit3):
if bit1== 1 and bit2== 1 and bit3== 1: return ruleBinary[ 0]
if bit1== 1 and bit2== 1 and bit3== 0: return ruleBinary[ 1]
if bit1== 1 and bit2== 0 and bit3== 1: return ruleBinary[ 2]
if bit1== 1 and bit2== 0 and bit3== 0: return ruleBinary[ 3]
if bit1== 0 and bit2== 1 and bit3== 1: return ruleBinary[ 4]
if bit1== 0 and bit2== 1 and bit3== 0: return ruleBinary[ 5]
if bit1== 0 and bit2== 0 and bit3== 1: return ruleBinary[ 6]
if bit1== 0 and bit2== 0 and bit3== 0: return ruleBinary[ 7]
def update():
temp= ''
temp=temp+ '1'
global times
global s
each= 2
while each<times* 2+ 1:
temp = temp+ str(rule( int(s[each- 2]), int(s[each- 1]), int(s[each])))
each+= 1
temp=temp+ '1'
s=temp
return temp
def ini() :
t= 0
global s
while t< times* 2+ 1:
if t==times:
s+= '1'
t+= 1
else:
s+= '0'
t+= 1
print s
def main():
print "P1", times* 2 + 1,times+ 1
ini()
index= 0
while index < times:
print update()
index+= 1
if __name__== '__main__':main()
-----------------------------------
对times和ruleNumber变量进行修改,可以得到不同规则(ruleNumber)下不同迭代次数(times)的结果:
如将times=3 , ruleNumber=30,本程序输出为:
P1 7 4
0001000
1011101
1010001
1011011
程序输出为这样的格式,只要利用linux 的 > 到bpm文件(Portable Bitmap),即可制作一副由该Cellular Automaton 产生的图像了。下面简要介绍一下bpm:
Portable Bitmap Format 例如,一个7*3 的bpm图像
第一行内容: P1 宽 长
P1 7 3
0001000
0011100
0110010
---
下面将程序的输出重定向到 rule30.bpm文件中:
$ python project1.py > rule30.pbm
成功后即可用一般的图像查看软件查看该图像了。 还可有修改times和ruleNumber,产生更多图案。更多Cellular Automaton 内容,请参考http://atlas.wolfram.com/TOC/
最后
以上就是隐形火龙果为你收集整理的Cellular Automaton-Python for Programmer : UC Berkeley SelfPace Course的全部内容,希望文章能够帮你解决Cellular Automaton-Python for Programmer : UC Berkeley SelfPace Course所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复