我正在创建一个称为L系统的分形,它使用一种伪递归替换方法。我需要将每个字母的所有出现都替换为其键,但是一次只能替换一次。例如,我们从字符串开始
AXIOM = "f"
我们有字典
rule_dict = {"f":"h-f-h", "h":"f+h+f"}
我们在连续的迭代中将此规则应用于公理,这样我们就可以看到这样的进展
"f"
"h-f-h"
"f+h+f-h-f-h-f+h+f"
等等。
我的初始方法只是使用了这样的for循环:
for i in range(GENERATION):
for key in rule_dict.keys():
axiom = axiom.replace(key, rule_dict[key])
此方法的问题在于,一旦它在第一次迭代中替换了“ f”,便会检查“ h”,从而导致替换了“ h”字符,直到下一代它们才受影响。
我宁愿避免简单地创建一个重复的字符串来使用,并且想知道是否有人知道一种有效的方法来处理此问题。该程序在某种程度上对内存敏感,因为它是一种递归。因此,如果可能的话,我想尽量减少内存使用。感谢您的帮助!