python 中的简单 L 系统
Simple L -system in python
你好,我正在寻找一种方法来将简单的 L 系统实现到 python 中的函数中,它将采用三个参数:公理、规则和交互次数(如果迭代次数 = 0,则之前的输出是输入公理)。我想出了一些代码,它只适用于 1 次迭代,我不知道如何实现更多。
我想出的代码:
# x = axiom
# y = rules
# z would be iterations which I dont know how to implement
def lsystem(x,y):
output = ''
for i in x:
if i in y:
output += y[i]
else:
output += i
print(output)
rules = { "A" : "ABA" , "B" : "BBB"}
# output lsystem("AB",rules) ---> ABABBB
如果 iterations == 0
,您需要 return 给定的 axioms
。在这个函数中,你 return 参数 axioms
你已经给出,所以如果 iterations == 0
,你将 return 给定的,未触及的公理。
然后,稍后,在你的iteration
的末尾,如果有iteration
,你从iteration
得到的新创建的公理被转移到axioms
以便您将 return 获得良好的价值,如果需要,下一个 iteration
将具有新创建的公理以进行迭代。 :)
def lsystem(axioms, rules, iterations):
# We iterate through our method required numbers of time.
for _ in range(iterations):
# Our newly created axioms from this iteration.
newAxioms = ''
# This is your code, but with renamed variables, for clearer code.
for axiom in axioms:
if axiom in rules:
newAxioms += rules[axiom]
else:
newAxioms += axiom
# You will need to iterate through your newAxioms next time, so...
# We transfer newAxioms, to axioms that is being iterated on, in the for loop.
axioms = newAxioms
return axioms
rules = { "A" : "ABA" , "B" : "BBB"}
print(lsystem('AB', rules, 0))
# outputs : 'AB'
print(lsystem('AB', rules, 1))
# outputs : 'ABABBB'
print(lsystem('AB', rules, 2))
# outputs : 'ABABBBABABBBBBBBBB'
你好,我正在寻找一种方法来将简单的 L 系统实现到 python 中的函数中,它将采用三个参数:公理、规则和交互次数(如果迭代次数 = 0,则之前的输出是输入公理)。我想出了一些代码,它只适用于 1 次迭代,我不知道如何实现更多。
我想出的代码:
# x = axiom
# y = rules
# z would be iterations which I dont know how to implement
def lsystem(x,y):
output = ''
for i in x:
if i in y:
output += y[i]
else:
output += i
print(output)
rules = { "A" : "ABA" , "B" : "BBB"}
# output lsystem("AB",rules) ---> ABABBB
如果 iterations == 0
,您需要 return 给定的 axioms
。在这个函数中,你 return 参数 axioms
你已经给出,所以如果 iterations == 0
,你将 return 给定的,未触及的公理。
然后,稍后,在你的iteration
的末尾,如果有iteration
,你从iteration
得到的新创建的公理被转移到axioms
以便您将 return 获得良好的价值,如果需要,下一个 iteration
将具有新创建的公理以进行迭代。 :)
def lsystem(axioms, rules, iterations):
# We iterate through our method required numbers of time.
for _ in range(iterations):
# Our newly created axioms from this iteration.
newAxioms = ''
# This is your code, but with renamed variables, for clearer code.
for axiom in axioms:
if axiom in rules:
newAxioms += rules[axiom]
else:
newAxioms += axiom
# You will need to iterate through your newAxioms next time, so...
# We transfer newAxioms, to axioms that is being iterated on, in the for loop.
axioms = newAxioms
return axioms
rules = { "A" : "ABA" , "B" : "BBB"}
print(lsystem('AB', rules, 0))
# outputs : 'AB'
print(lsystem('AB', rules, 1))
# outputs : 'ABABBB'
print(lsystem('AB', rules, 2))
# outputs : 'ABABBBABABBBBBBBBB'