一个基本系统,因此函数接受一个字符串并产生该过程的下一个阶段。 从X开始。所以' X'转到' XY'每一封信' Y'去了X'。 Axiom X. 规则X→XY和Y→X 结果应如下所示:
X→
XY→
XYX→
XYXXY→
下一部分是编写一个打印X系统和L系统前5个字符串的程序。然后n的长度是14?
答案 0 :(得分:1)
如果你保留一个替换字典,那么为字符串的每个字符查找适当的字典是微不足道的,并且使用dict.get
的两个参数形式,我们可以通过逐字传递未识别的字符(如果你如果是错误,您可以将get
调用更改为replacement_rules[s]
,以便触发KeyError
)。
replacement_rules = { 'X': 'XY',
'Y': 'X',
}
def L_system(string):
for s in string:
yield replacement_rules.get(s,s)
然后您的结果为''.join(L_system(my_string))
。
也可以利用str.translate
(在Python3中)
>>> replacement_rules = { ord('X'): 'XY',
... ord('Y'): 'X',
... }
>>> s = 'X'
>>> s = s.translate(replacement_rules); s
'XY'
>>> s = s.translate(replacement_rules); s
'XYX'
>>> s = s.translate(replacement_rules); s
'XYXXY'
>>> s = s.translate(replacement_rules); s
'XYXXYXYX'
>>> s = s.translate(replacement_rules); s
'XYXXYXYXXYXXY'
答案 1 :(得分:-1)
>>> def LSys(s):
return s + ('X','XY')[s[-1]=='X']
>>> LSys('XYXYYX')
'XYXYYXXY'
这只会识别X
,其他任何内容都会返回添加的'X'