我正在处理项目euler的问题220(看起来很容易,与其他一些相比 - 认为我会尝试更高编号的一个进行更改!)
到目前为止,我有:
D = "Fa"
def iterate(D,num):
for i in range (0,num):
D = D.replace("a","A")
D = D.replace("b","B")
D = D.replace("A","aRbFR")
D = D.replace("B","LFaLb")
return D
instructions = iterate("Fa",50)
print instructions
Run Code Online (Sandbox Code Playgroud)
现在,这适用于低值,但是当你把它重复更高时,你就会得到一个"内存错误".任何人都可以提出一种方法来克服这个问 我真的想要一个包含下一步说明的字符串/文件.
Python 字符串不会是这个问题的答案。字符串存储为不可变数组,因此每一次替换都会在内存中创建一个全新的字符串。更不用说,如果将 10^12 个步骤后的指令集存储为字符(并且进行了一些较小的压缩),那么它们的大小将至少为 1TB。
理想情况下,应该有一种方法可以通过数学方式(提示,有)动态生成答案,这样您就不需要存储序列。
只需使用该字符串作为指导来确定创建路径的方法。